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