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
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号