涉及界面:
問題:財務抱怨外購入庫單價格取錯,單價多除了一次稅率
例如,采購單里面注明了價格是不含稅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'