T100——菜单action控制单身栏位的修改

通过菜单ACTION来控制单身栏位内容的编辑修改;

 

范例axmt500:

   DEFINE l_xmdcua012_bk  DYNAMIC ARRAY OF RECORD #170701 ljr
          xmdcua012 LIKE xmdc_t.xmdcua012
          END RECORD
   DEFINE l_i_2 INT #170701 ljr

 

 

         #應用 a43 樣板自動產生(Version:4)
         ON ACTION action_modify_xmdcua012
            LET g_action_choice="action_modify_xmdcua012"
            IF cl_auth_chk_act("action_modify_xmdcua012") THEN
               
               #add-point:ON ACTION action_modify_xmdcua012 name="menu.action_modify_xmdcua012"
                DIALOG ATTRIBUTES(UNBUFFERED,FIELD ORDER FORM)
                    INPUT ARRAY g_xmdc_d FROM s_detail1.*
                        ATTRIBUTE(COUNT = g_rec_b,WITHOUT DEFAULTS, #MAXCOUNT = g_max_rec,
                                  INSERT ROW = FALSE, 
                                  DELETE ROW = FALSE,
                                  APPEND ROW = FALSE)
                    END INPUT
                    
                BEFORE DIALOG 
                    #在修改结算单价前,先把旧的结算单价备份,后面作对比判断哪行被更改了
                    CALL cl_set_comp_entry("xmdcua012",TRUE)
                    CALL cl_set_comp_entry("xmdc027,xmdcua007,xmdc001,xmdcud011,xmdc019,xmdc002,xmdc006",FALSE)
                    CALL cl_set_comp_entry("xmdcua009,xmdc007,xmdcud012,xmdcud013,xmdcud014,xmdcua010,xmdc008",FALSE)
                    CALL cl_set_comp_entry("xmdc009,xmdc024,xmdc012,xmdc013,xmdc045,xmdc016,xmdc017,xmdc010,xmdc011",FALSE)
                    CALL cl_set_comp_entry("xmdc015,xmdc046,xmdc047,xmdc048,xmdc023,xmdc020,xmdc021,xmdc022",FALSE)
                    CALL cl_set_comp_entry("xmdcunit,xmdcorga,xmdc052,xmdc049,xmdc053,xmdc050,xmdcsite,xmdc058",FALSE)
                    CALL cl_set_comp_entry("xmdc059,xmdc060,xmdc061,xmdcua001,xmdcua002,xmdcua003,xmdcua004,xmdcua005",FALSE)
                    CALL cl_set_comp_entry("xmdcua006,xmdcua011,l_pmao009,l_pmao010",FALSE)
                    
                    FOR l_i_2=1 TO g_xmdc_d.getLength()
                        LET l_xmdcua012_bk[l_i_2].xmdcua012 = g_xmdc_d[l_i_2].xmdcua012
                    END FOR
                    
                    ON ACTION accept
                        #判断结算单价是否已被修改,只处理已经被修改的行
                        FOR l_i_2=1 TO g_xmdc_d.getLength()
                            IF NOT cl_null(g_xmdc_d[l_i_2].xmdcseq) THEN 
                                IF g_xmdc_d[l_i_2].xmdcua012 = l_xmdcua012_bk[l_i_2].xmdcua012 OR g_xmdc_d[l_i_2].xmdcua012 IS NULL THEN
                                    CONTINUE FOR
                                ELSE
                                    CALL axmt500_setPrice2_2(g_xmdc_d[l_i_2].xmdcseq,
                                                            g_xmdc_d[l_i_2].xmdc007,
                                                            g_xmdc_d[l_i_2].xmdcua012)
                                        RETURNING g_xmdc_d[l_i_2].xmdcua013,g_xmdc_d[l_i_2].xmdcua014,
                                                  g_xmdc_d[l_i_2].xmdcua015,g_xmdc_d[l_i_2].xmdcua016
                                    DISPLAY BY NAME g_xmdc_d[l_i_2].xmdcua013,g_xmdc_d[l_i_2].xmdcua014,
                                                            g_xmdc_d[l_i_2].xmdcua015,g_xmdc_d[l_i_2].xmdcua016
                                    #更新结算单价修改者、修改时间
                                    LET g_xmdc_d[l_i_2].xmdcua017 = g_user
                                    LET g_xmdc_d[l_i_2].xmdcua018 = cl_get_current()
                                    UPDATE xmdc_t SET xmdcua017=g_xmdc_d[l_i_2].xmdcua017,xmdcua018=g_xmdc_d[l_i_2].xmdcua018
                                        WHERE xmdcent=g_enterprise AND xmdcsite=g_site AND xmdcdocno=g_xmda_m.xmdadocno AND xmdcseq=g_xmdc_d[l_i_2].xmdcseq
                                    SELECT ooag011 INTO g_xmdc_d[l_i_2].xmdcua017_desc FROM ooag_t 
                                        WHERE ooagent=g_enterprise AND ooag001=g_xmdc_d[l_i_2].xmdcua017
                                    DISPLAY BY NAME g_xmdc_d[l_i_2].xmdcua017,g_xmdc_d[l_i_2].xmdcua018,g_xmdc_d[l_i_2].xmdcua017_desc
                                END IF
                            END IF
                        END FOR
                        
                        ACCEPT DIALOG
                    
                    ON ACTION cancel      #在dialog button (放棄)
                        
                        EXIT DIALOG
                    
                    ON ACTION close       #在dialog 右上角 (X)

                        EXIT DIALOG
                    
                    ON ACTION exit        #toolbar 離開
                        
                        EXIT DIALOG
                    
                    #交談指令共用ACTION
                    &include "common_action.4gl" 
                        CONTINUE DIALOG 
                        
                END DIALOG
               #END add-point
               
            END IF

 

 

PRIVATE FUNCTION axmt500_setPrice2_2(l_xmdcseq,l_xmdc007,l_xmdcua012)
#修改结算单价,根据新的结算单价计算结算金额等,更新、回传并显示

    DEFINE l_xmdcseq LIKE xmdc_t.xmdcseq    #单身项次
    DEFINE l_xmdc001 LIKE xmdc_t.xmdc001    #单身料号
    DEFINE l_xmdc007 LIKE xmdc_t.xmdc007    #单身数量
    DEFINE l_xmdcua012 LIKE xmdc_t.xmdcua012  #单身结算单价
    
    DEFINE l_xmdcua013 LIKE xmdc_t.xmdcua013    #回传参数,结算金额
    DEFINE l_xmdcua014 LIKE xmdc_t.xmdcua014    #回传参数,结算未税单价
    DEFINE l_xmdcua015 LIKE xmdc_t.xmdcua015    #回传参数,结算未税金额
    DEFINE l_xmdcua016 LIKE xmdc_t.xmdcua016    #回传参数,结算税额
    
    #判断订单的单价是否含税
    #单价含税
    IF g_xmda_m.xmda013 THEN 
        LET l_xmdcua013 = l_xmdcua012 * l_xmdc007
        LET l_xmdcua014 = l_xmdcua012 / (1 + g_xmda_m.xmda012 / 100)
        LET l_xmdcua015 = l_xmdcua014 * l_xmdc007
        LET l_xmdcua016 = l_xmdcua013 - l_xmdcua015
    #单价不含税
    ELSE
        LET l_xmdcua013 = l_xmdcua012 * l_xmdc007
        LET l_xmdcua014 = 0.00
        LET l_xmdcua015 = 0.00
        LET l_xmdcua016 = 0.00
    END IF    
    #更新
    UPDATE xmdc_t SET xmdcua012=l_xmdcua012,
                      xmdcua013=l_xmdcua013,
                      xmdcua014=l_xmdcua014,
                      xmdcua015=l_xmdcua015,
                      xmdcua016=l_xmdcua016
      WHERE xmdcent=g_enterprise AND xmdcsite=g_site AND xmdcdocno=g_xmda_m.xmdadocno AND xmdcseq=l_xmdcseq
    #返回值
    RETURN l_xmdcua013,l_xmdcua014,l_xmdcua015,l_xmdcua016
END FUNCTION

 

posted @ 2017-07-01 15:41  AaronLi  阅读(1115)  评论(0编辑  收藏  举报