1. 程式人生 > >金蝶K3外購入庫單單價取數規則調整

金蝶K3外購入庫單單價取數規則調整

涉及介面:

問題:財務抱怨外購入庫單價格取錯,單價多除了一次稅率

 例如,採購單裡面註明了價格是不含稅15.3256

結果在外購入庫單裡面,又自做主張除以稅率17%,把採購成本搞成了13.0988,

 

諮詢專家給了2句SQL來解決問題:

--更新收料通知下外購入庫單價取數規則

update ICSelbills

set FAction='

CASE when EXISTS(select * from t_SystemProfile where FCategory ='''+'IC'+''' AND FKey='''+'POOrderTaxInPrice'+''' and FValue =1)

          then u1.FAuxPrice*(1+(CAST((CASE when t4.FTaxRate<>0         /*稅率-有稅取稅*/ 

                                                                    then t4.FTaxRate

                                                                    else case when t8.FValueAddRate<>0  /*沒稅取增值稅*/

                                                                                    then t8.FValueAddRate

                                                                                    else 17           /*預設稅率17*/ 

                                                                           end

                                                            end)

                                                AS FLOAT)/100))

         else u1.FAuxPrice

end'

where FID='A01'  /*收料通知下外購入庫單*/

    and FFieldName='FSCBillInterID'

    and FSelType=0

    and FColName ='FPurchasePrice'

 

--更新採購訂單下推收料通知單價取數規則

update ICSelbills set FAction='CAST(u1.FAuxPrice AS FLOAT)*(100-u1.FTaxRate)/100'

where FID='P03'  /*採購訂單下推收料通知單*/

   and FFieldName='FCnnInterID'

   and FColName='FAuxPrice'

 

原來外購入庫單的取數規則是保持在ICSelbills的表裡面。

用語句取出原來的值如下:

/*收料通知下外購入庫單*/

select * from ICSelbills where FID='A01' AND FFieldName='FSCBillInterID' AND FSelType=0 AND FColName ='FPurchasePrice'

CAST(u1.FAuxPrice AS FLOAT)*CAST(v1.FExchangeRate AS FLOAT) --看起來考慮了匯率

 

/*採購訂單下推收料通知單*/

select * from ICSelbills where FID='P03' AND FFieldName='FCnnInterID' AND FColName='FAuxPrice' 

CASE (SELECT FValue FROM t_SystemProfile Where FCategory='IC' and FKey='POOrderTaxInPrice') /*取系統配置採購訂單單價預設為含稅單價,TW為1*/

  WHEN '0'

  THEN CAST(u1.FAuxPrice AS FLOAT)*CAST((100-u1.FTaxRate) AS FLOAT)/100 /*系統沒配置預設為含稅單價,則按單價回算稅前價格*/

       ELSE u1.FAuxPriceDiscount  /*系統配置採購訂單單價預設為含稅單價,TW此處生效*/

END

CASE (SELECT FValue FROM t_SystemProfile Where FCategory='IC' and FKey='POOrderTaxInPrice') WHEN '0' THEN CAST(u1.FAuxPrice AS FLOAT)*CAST((100-u1.FTaxRate) AS FLOAT)/100 ELSE u1.FAuxPriceDiscount END

可見TW取錯了u1.FAuxPriceDiscount 實際含稅單價

 

實際執行了“更新採購訂單下推收料通知單價取數規則”就可以了。

update ICSelbills set FAction='CAST(u1.FAuxPrice AS FLOAT)*(100-u1.FTaxRate)/100' where FID='P03' AND FFieldName='FCnnInterID' AND FColName='FAuxPrice'