根据单头价格清单(核价单),更新单身出货明细的单价

范例(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

 

转载于:https://www.cnblogs.com/xiaoli9627/p/6874357.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值