范例(axmt541,隶属axmt540):
1、价格清单(核价单)更改后,更新单身的出货明细单价;
2、单身出货明细 新增、修改后,根据所选的价格清单(核价单)更新单价;
3、单价更新成功后开窗提示。
(备注,核价单axmt420)
具体:
1、自定义函数1,此函数会return相关价格,主要是价格清单开窗、修改时调用,更新数据库相关单价的同时,获取相关单价的回传值显示到明细上:
PRIVATE FUNCTION axmt540_getPrice_xmdkud004(n_site,n_xmdldocno,n_xmdlseq,n_xmdkud004,n_xmdl008,n_xmdl018) #定义参数变数 DEFINE n_site LIKE xmdl_t.xmdlsite #据点 DEFINE n_xmdldocno LIKE xmdl_t.xmdldocno #出货单号 DEFINE n_xmdlseq LIKE xmdl_t.xmdlseq #出货项次 DEFINE n_xmdkud004 LIKE xmdu_t.xmdudocno #核价单号 DEFINE n_xmdl008 LIKE xmdl_t.xmdl008 #料件编号 DEFINE n_xmdl018 LIKE xmdl_t.xmdl018 #出货数量 #定义存储值变数 DEFINE n_xmdt006 LIKE xmdt_t.xmdt006 #核价单头——税别 DEFINE n_xmdt008 LIKE xmdt_t.xmdt008 #核价单头——单价含税否 DEFINE n_xmdu011 LIKE xmdu_t.xmdu011 #核价单身——单价(取出单价xmdl045) DEFINE n_xmdu012 LIKE xmdu_t.xmdu012 #核价单身——税率 DEFINE n_price LIKE xmdl_t.xmdl024 #新单价 DEFINE n_nprice LIKE xmdl_t.xmdl027 #未税金额 DEFINE n_sprice LIKE xmdl_t.xmdl028 #含税金额 DEFINE n_ns LIKE xmdl_t.xmdl029 #税额 #根据核价单号获取税别、单价含税否 SELECT xmdt006,xmdt008 INTO n_xmdt006,n_xmdt008 FROM xmdt_t WHERE xmdtent = g_enterprise AND xmdtsite = n_site AND xmdtdocno = n_xmdkud004 #根据核价单号、料件编号获取单价、税率 SELECT xmdu011,xmdu012 INTO n_xmdu011,n_xmdu012 FROM xmdu_t WHERE xmduent = g_enterprise AND xmdusite = n_site AND xmdudocno = n_xmdkud004 AND xmdu002 = n_xmdl008 #单价含税 IF n_xmdt008 THEN LET n_price = n_xmdu011 LET n_sprice = n_price * n_xmdl018 LET n_nprice = n_sprice / (1 + n_xmdu012 / 100) LET n_ns = n_sprice - n_nprice #单价不含税 ELSE LET n_price = n_xmdu011 * (1 + n_xmdu012 / 100) LET n_sprice = n_price * n_xmdl018 LET n_nprice = n_xmdu011 * n_xmdl018 LET n_ns = n_sprice - n_nprice END IF #根据出货单号、出货项次更新出货单身表的单价、税别、税率、未税金额、含税金额、税额、取出单价字段 UPDATE xmdl_t SET xmdl024 = n_price, xmdl025 = n_xmdt006, xmdl026 = n_xmdu012, xmdl027 = n_nprice, xmdl028 = n_sprice, xmdl029 = n_ns, xmdl045 = n_xmdu011 WHERE xmdlent = g_enterprise AND xmdlsite = n_site AND xmdldocno = n_xmdldocno AND xmdlseq = n_xmdlseq #返回:单价、税别、税率、未税金额、含税金额、税额、取出单价 RETURN n_price,n_xmdt006,n_xmdu012,n_nprice,n_sprice,n_ns,n_xmdu011 END FUNCTION
2、价格清单开窗,通过遍历单身价格信息明细,传递料号等参数,获取单价等更新、显示,并提示成功与否:
#Ctrlp:input.c.xmdkud004 #應用 a03 樣板自動產生(Version:3) ON ACTION controlp INFIELD xmdkud004 #add-point:ON ACTION controlp INFIELD xmdkud004 name="input.c.xmdkud004" #應用 a07 樣板自動產生(Version:3) #開窗i段 INITIALIZE g_qryparam.* TO NULL LET g_qryparam.state = 'i' LET g_qryparam.reqry = FALSE LET g_qryparam.default1 = g_xmdk_m.xmdkud004 #給予default值 #給予arg LET g_qryparam.arg1 = "" #s CALL cq_xmdtdocno_2() #呼叫開窗 LET g_xmdk_m.xmdkud004 = g_qryparam.return1 DISPLAY g_xmdk_m.xmdkud004 TO xmdkud004 # FOR i = 1 TO g_xmdl2_d.getLength() CALL axmt540_getPrice_xmdkud004(g_site, g_xmdk_m.xmdkdocno, g_xmdl2_d[i].xmdlseq, g_xmdk_m.xmdkud004, g_xmdl2_d[i].xmdl0081, g_xmdl2_d[i].xmdl0181) RETURNING g_xmdl2_d[i].xmdl024, g_xmdl2_d[i].xmdl025, g_xmdl2_d[i].xmdl026, g_xmdl2_d[i].xmdl027, g_xmdl2_d[i].xmdl028, g_xmdl2_d[i].xmdl029, g_xmdl2_d[i].xmdl045 DISPLAY BY NAME g_xmdl2_d[i].xmdl024, g_xmdl2_d[i].xmdl025, g_xmdl2_d[i].xmdl026, g_xmdl2_d[i].xmdl027, g_xmdl2_d[i].xmdl028, g_xmdl2_d[i].xmdl029, g_xmdl2_d[i].xmdl045 END FOR IF NOT SQLCA.sqlcode THEN CALL cl_ask_confirm3("cxc-00006","") ELSE CALL cl_ask_confirm3("cxc-00007","") END IF NEXT FIELD xmdkud004 #返回原欄位 #END add-point
3、价格清单修改后,通过遍历单身价格信息明细,传递料号等参数,获取单价等更新、显示,并提示成功与否:
#應用 a02 樣板自動產生(Version:2) AFTER FIELD xmdkud004 #add-point:AFTER FIELD xmdkud004 name="input.a.xmdkud004" IF NOT cl_null(g_xmdk_m.xmdkud004) THEN #應用 a17 樣板自動產生(Version:3) #欄位存在檢查 #設定g_chkparam.*的參數前,先將其初始化,避免之前設定遺留的參數值造成影響。 INITIALIZE g_chkparam.* TO NULL #設定g_chkparam.*的參數 LET g_chkparam.arg1 = g_xmdk_m.xmdkud004 #呼叫檢查存在並帶值的library IF cl_chk_exist("cv_xmdtdocno") THEN #檢查成功時後續處理 FOR i = 1 TO g_xmdl2_d.getLength() CALL axmt540_getPrice_xmdkud004(g_site, g_xmdk_m.xmdkdocno, g_xmdl2_d[i].xmdlseq, g_xmdk_m.xmdkud004, g_xmdl2_d[i].xmdl0081, g_xmdl2_d[i].xmdl0181) RETURNING g_xmdl2_d[i].xmdl024, g_xmdl2_d[i].xmdl025, g_xmdl2_d[i].xmdl026, g_xmdl2_d[i].xmdl027, g_xmdl2_d[i].xmdl028, g_xmdl2_d[i].xmdl029, g_xmdl2_d[i].xmdl045 DISPLAY BY NAME g_xmdl2_d[i].xmdl024, g_xmdl2_d[i].xmdl025, g_xmdl2_d[i].xmdl026, g_xmdl2_d[i].xmdl027, g_xmdl2_d[i].xmdl028, g_xmdl2_d[i].xmdl029, g_xmdl2_d[i].xmdl045 END FOR IF NOT SQLCA.sqlcode THEN #CALL cl_ask_confirm3("cxc-00006","") ELSE CALL cl_ask_confirm3("cxc-00007","") END IF ELSE #檢查失敗時後續處理 NEXT FIELD CURRENT END IF END IF #END add-point
4、自定义函数2,此函数跟自定义函数1基本相同,不同处是此函数不会return,只做更新;
此函数主要是在出货明细新增、修改后调用;
PRIVATE FUNCTION axmt540_setPrice_xmdkud004(n_site,n_xmdldocno,n_xmdlseq,n_xmdkud004,n_xmdl008,n_xmdl018) #定义参数变数 DEFINE n_site LIKE xmdl_t.xmdlsite #据点 DEFINE n_xmdldocno LIKE xmdl_t.xmdldocno #出货单号 DEFINE n_xmdlseq LIKE xmdl_t.xmdlseq #出货项次 DEFINE n_xmdkud004 LIKE xmdu_t.xmdudocno #核价单号 DEFINE n_xmdl008 LIKE xmdl_t.xmdl008 #料件编号 DEFINE n_xmdl018 LIKE xmdl_t.xmdl018 #出货数量 #定义存储值变数 DEFINE n_xmdt006 LIKE xmdt_t.xmdt006 #核价单头——税别 DEFINE n_xmdt008 LIKE xmdt_t.xmdt008 #核价单头——单价含税否 DEFINE n_xmdu011 LIKE xmdu_t.xmdu011 #核价单身——单价(取出单价xmdl045) DEFINE n_xmdu012 LIKE xmdu_t.xmdu012 #核价单身——税率 DEFINE n_price LIKE xmdl_t.xmdl024 #新单价 DEFINE n_nprice LIKE xmdl_t.xmdl027 #未税金额 DEFINE n_sprice LIKE xmdl_t.xmdl028 #含税金额 DEFINE n_ns LIKE xmdl_t.xmdl029 #税额 #根据核价单号获取税别、单价含税否 SELECT xmdt006,xmdt008 INTO n_xmdt006,n_xmdt008 FROM xmdt_t WHERE xmdtent = g_enterprise AND xmdtsite = n_site AND xmdtdocno = n_xmdkud004 #根据核价单号、料件编号获取单价、税率 SELECT xmdu011,xmdu012 INTO n_xmdu011,n_xmdu012 FROM xmdu_t WHERE xmduent = g_enterprise AND xmdusite = n_site AND xmdudocno = n_xmdkud004 AND xmdu002 = n_xmdl008 #单价含税 IF n_xmdt008 THEN LET n_price = n_xmdu011 LET n_sprice = n_price * n_xmdl018 LET n_nprice = n_sprice / (1 + n_xmdu012 / 100) LET n_ns = n_sprice - n_nprice #单价不含税 ELSE LET n_price = n_xmdu011 * (1 + n_xmdu012 / 100) LET n_sprice = n_price * n_xmdl018 LET n_nprice = n_xmdu011 * n_xmdl018 LET n_ns = n_sprice - n_nprice END IF #根据出货单号、出货项次更新出货单身表的单价、税别、税率、未税金额、含税金额、税额、取出单价字段 UPDATE xmdl_t SET xmdl024 = n_price, xmdl025 = n_xmdt006, xmdl026 = n_xmdu012, xmdl027 = n_nprice, xmdl028 = n_sprice, xmdl029 = n_ns, xmdl045 = n_xmdu011 WHERE xmdlent = g_enterprise AND xmdlsite = n_site AND xmdldocno = n_xmdldocno AND xmdlseq = n_xmdlseq END FUNCTION
5、单身新增后:
#add-point:單身新增後 name="input.body.a_insert" #20170518 by ljr begin IF NOT cl_null(g_xmdk_m.xmdkud004) THEN CALL axmt540_setPrice_xmdkud004(g_site, g_xmdk_m.xmdkdocno, g_xmdl_d[l_ac].xmdlseq, g_xmdk_m.xmdkud004, g_xmdl_d[l_ac].xmdl008, g_xmdl_d[l_ac].xmdl018) END IF #end begin #end add-point
6、单身修改后:
#add-point:單身修改後 name="input.body.a_update" #新增多庫儲批 CALL axmt540_01_xmdm_modify('1',l_xmdlseq_backup,g_xmdk_m.xmdksite,g_xmdk_m.xmdkdocno,g_xmdl_d[l_ac].xmdlseq, g_xmdl_d[l_ac].xmdl008,g_xmdl_d[l_ac].xmdl009,g_xmdl_d[l_ac].xmdl011,g_xmdl_d[l_ac].xmdl012, g_xmdl_d[l_ac].xmdl014,g_xmdl_d[l_ac].xmdl015,g_xmdl_d[l_ac].xmdl016,g_xmdl_d[l_ac].xmdl052, g_xmdl_d[l_ac].xmdl017,g_xmdl_d[l_ac].xmdl018,g_xmdl_d[l_ac].xmdl019,g_xmdl_d[l_ac].xmdl020, '','') RETURNING l_success IF NOT l_success THEN CALL s_transaction_end('N','0') LET g_xmdl_d[l_ac].* = g_xmdl_d_t.* END IF #重新計算整單的未稅、含稅總金額 CALL axmt540_tax_recount(g_xmdk_m.xmdkdocno) RETURNING l_success IF NOT l_success THEN CALL s_transaction_end('N','0') LET g_xmdl_d[l_ac].* = g_xmdl_d_t.* END IF #20170517 by ljr begin IF NOT cl_null(g_xmdk_m.xmdkud004) THEN CALL axmt540_setPrice_xmdkud004(g_site, g_xmdk_m.xmdkdocno, g_xmdl_d[l_ac].xmdlseq, g_xmdk_m.xmdkud004, g_xmdl_d[l_ac].xmdl008, g_xmdl_d[l_ac].xmdl018) END IF #end begin #end add-point