金蝶K3 Wise 12.2版本 有一单出库单生成发票提示不能将值插入列FAuxPrice,UPDATE失败。

2024-11-25 20:23:01
推荐回答(5个)
回答1:

今天我也遇到此类问题。现在与大家分享吧!

       销售出库单中有一笔分录没有订单(有下级单据也能删除有点奇怪)。发货通知里面FAuxPrice字段为空值,自然销售出库也为空值。到了做销售发票FAuxPrice字段为空值就会跳出错误提示。


请把"此处输入销售出库单号"替换成你的销售出库单号。

如下代码可以找出销售出库单有异常的数据行,有了Fsourcebillno,Fsorderbillno就去前台找吧

declare @xout varchar(50)
set @xout=(select finterid from icstockbill where FBillNo='此处输入销售出库单号')
SELECT v1.FSupplyID AS FAddress,t1.FAddress AS FAddress1,t1.FAddress AS FAddress2,u2.FAmount*((CASE WHEN tnew1.FValue <> '1'  THEN u2.FTaxRate ELSE 0 END )/100) AS FAmtDiscount,
u2.FTaxPrice*t7.FCoefficient AS FAuxOrderPrice,(CASE WHEN tnew1.FValue <> '1' THEN (CASE WHEN (IsNull(u2.FEntryID,0)>0 AND t17.FValue<>'1') THEN IsNull(u2.FAuxPrice,0) WHEN IsNull(u2.FEntryID,0)=0 THEN u1.FConsignPrice ELSE 0 END) ELSE u1.FConsignPrice END) AS FAuxPrice,
t4.FUnitGroupID as FItemUnitGroupID,sign(t4.FAuxClassID)-sign(u1.fauxpropid) AS FAuxPropCls,
u1.FAuxPropID,t105.FName AS FAuxPropName,t105.FNumber AS FAuxPropNum,Case When (u1.FAuxQty-u1.FAuxQtyInvoice)*sign(v1.FROB)>0 Then (u1.FAuxQty-u1.FAuxQtyInvoice) Else 0 End AS FAuxQty,
(CASE WHEN tnew1.FValue <> '1' THEN (CASE WHEN IsNull(u2.FEntryID,0)>0 THEN CAST(u2.FAuxTaxPrice AS FLOAT)/CAST(t257.FCoefficient AS FLOAT)*CAST(t7.FCoefficient AS FLOAT) WHEN t17.FValue='1' THEN u1.FConsignPrice ELSE 0 END) ELSE  (CASE WHEN T17.FVALUE=1 THEN u1.FConsignPrice ELSE 0 END)   END) AS FAuxTaxPrice,
v1.FSupplyID AS FBank,t1.FBank AS FBank1,t1.FBank AS FBank2,t10.FName AS FBaseUnitName,
u1.FBatchNo,v1.FBillNO,t7.FCoefficient,u1.FContractBillNo,u1.FContractEntryID,u1.FContractInterID,
CASE WHEN tnew1.FValue <> '1' THEN (case when u1.forderinterid>0 then v2.FCurrencyID else 1 end) ELSE (CASE WHEN t1.FCyID<>0 THEN t1.FCyID ELSE 1 END) END AS FCurrencyID,
CASE WHEN tnew1.FValue <> '1' THEN (case when u1.forderinterid>0 then t14.fname else (select fname from t_Currency where fcurrencyid=1) end) ELSE (CASE WHEN t1.FCyID<>0 THEN (select fname from t_currency where fcurrencyid=t1.fcyid) ELSE (select fname from t_Currency where fcurrencyid=1) end)END AS FCurrencyName,
CASE WHEN tnew1.FValue <> '1' THEN (case when u1.forderinterid>0 then t14.fnumber else (select fnumber from t_Currency where fcurrencyid=1) end) ELSE (CASE WHEN t1.FCyID<>0 THEN (select fnumber from t_currency where fcurrencyid=t1.fcyid) else (select fnumber from t_Currency where fcurrencyid=1) end)END AS FCurrencyNumber,
v1.FSupplyID AS FCustID,t1.FName AS FCustName,t1.FNumber AS FCustNumber,v1.FDeptID,
t2.FName AS FDeptIDName,t2.FNumber AS FDeptIDNumber,(CASE WHEN tnew1.FValue <> '1' AND ISNULL(u1.FOrderInterID,0) >0 THEN (CASE WHEN u2.FTaxRate <> 0 THEN u2.FTaxRate WHEN u2.FAuxTaxPrice * u2.FUniDiscount > 0 THEN (CASE WHEN tnew4.FValue = '1' THEN CONVERT(DECIMAL(28, 16), u2.FUniDiscount * 100 / u2.FAuxTaxPrice) ELSE CONVERT(DECIMAL(28, 16), u2.FUniDiscount * 100 / u2.FAuxPrice) END) ELSE 0 END) ELSE u1.FDiscountRate END) AS FDiscountRate,
v1.FEmpID,t3Emp.FName AS FEmpIDName,t3Emp.FNumber AS FEmpIDNumber,u1.FEntryID,CASE WHEN tnew1.FValue <> '1' THEN (case when u1.forderinterid>0 then v2.fexchangerate else 1 end) ELSE 1 END AS FExchangeRate,
(CASE WHEN u1.FOrderInterID<0 or u1.FOrderInterID>0 THEN ISNULL((v2.FExchangeRateType),0)  ELSE (CASE WHEN  u1.FSourceTranType IN (82,83) THEN ISNULL((SELECT FExchangeRateType FROM SEOutStock WHERE FInterID=u1.FSourceInterId) ,0) ELSE 0 END)  END ) AS FExchangeRateType,
(select fname from v_base_exratetype where fid=(CASE WHEN u1.FOrderInterID<0 or u1.FOrderInterID>0 THEN ISNULL((v2.FExchangeRateType),0)  ELSE (CASE WHEN  u1.FSourceTranType IN (82,83) THEN ISNULL((SELECT FExchangeRateType FROM SEOutStock WHERE FInterID=u1.FSourceInterId) ,0) ELSE 0 END)  END )) AS FExchangeRateTypename,
(select fnumber from v_base_exratetype where fid=(CASE WHEN u1.FOrderInterID<0 or u1.FOrderInterID>0 THEN ISNULL((v2.FExchangeRateType),0)  ELSE (CASE WHEN  u1.FSourceTranType IN (82,83) THEN ISNULL((SELECT FExchangeRateType FROM SEOutStock WHERE FInterID=u1.FSourceInterId) ,0) ELSE 0 END)  END )) AS FExchangeRateTypenumber,
v1.FExplanation,v1.FHeadSelfB0147 AS FHeadSelfB01470,v1.FHeadSelfB0147 AS FHeadSelfB01471,
v1.FHeadSelfB0147 AS FHeadSelfB01472,v1.FHeadSelfB0149 AS FHeadSelfB01490,v1.FHeadSelfB0149 AS FHeadSelfB01491,
v1.FHeadSelfB0149 AS FHeadSelfB01492,v1.FInterID,u1.FItemID,u1.FKFDate,u1.FKFPeriod,
V1.FManagerID,t15_1.FName AS FManagerIDName,t15_1.FNumber AS FManagerIDNumber,u1.FMapName,
u1.FMapNumber,t4.FName AS FMatName,t4.FNumber  as FMatNumber ,t4.Fmodel,u1.FMTONo,
u1.FNote,u1.FOLOrderBillNo,u1.FOrderBillNo,u1.FOrderEntryID,u1.FOrderInterID,u2.FTaxPrice AS FOrderPrice,
v1.FPayCondition,pay16.FName AS FPayConditionName,pay16.FNumber AS FPayConditionNumber,
u1.FPlanMode,tPlanMode.FName AS FPlanModeName,tPlanMode.FID AS FPlanModeNumber,
t4.FPriceDecimal,CASE WHEN (u1.FQty-u1.FQtyInvoice)*sign(v1.FROB)>0 THEN (u1.FQty-u1.FQtyInvoice) ELSE 0 END AS FQty,
t4.FQtyDecimal,v1.FSaleStyle,t18.FName AS FSaleStyleName,t18.FID AS FSaleStyleNumber,
(CASE WHEN ABS(u1.FSecQty)>ABS(u1.FSecInvoiceQty) THEN (u1.FQty-u1.FQtyInvoice)/(u1.FSecQty-u1.FSecInvoiceQty) ELSE 0 END) AS FSecCoefficient,
(CASE WHEN ABS(u1.FSecQty)>ABS(u1.FSecInvoiceQty) THEN u1.FSecQty-u1.FSecInvoiceQty ELSE 0 END) AS FSecQty,
t501.FName AS FSecUnitName,v1.FTranType AS FSelTranTypeID,(SELECT FName FROM v_ICTransType WHERE FID=v1.FTranType) AS FSelTranTypeName,
(SELECT FName FROM v_ICTransType WHERE FID=v1.FTranType) AS FSelTranTypeNumber,
u1.FSEOutBillNo,u1.FSEOutEntryID,u1.FSEOutInterID,v1.FSettleDate,v2.FSettleID,Case When v2.FSettleID=0 then '' else t8.FName end AS FSettleIDName,
Case When v2.FSettleID=0 then '' else t8.FNumber end AS FSettleNumber,v1.FBillNo AS FSourceBillNo,
u1.FEntryID AS FSourceEntryID,v1.FInterId AS FSourceInterID,v1.FTranType AS FSourceTranType,
v1.FSupplyID AS FTaxNum,t1.FTaxNum AS FTaxNum1,t1.FTaxNum AS FTaxNum2,CASE WHEN tnew1.FValue <> '1' THEN(CASE WHEN u1.forderinterid>0 AND v2.FClassTypeID<>1007100 THEN u2.FCess WHEN t13.FValue='1' THEN t4.FTaxRate ELSE t1.FValueAddRate END)ELSE (CASE WHEN t13.FValue='1' THEN t4.FTaxRate ELSE t1.FValueAddRate END) END AS FTaxRate,
t4.FTrack,(CASE WHEN tnew1.FValue <> '1' THEN (CASE WHEN u2.FUniDiscount <> 0 THEN u2.FUniDiscount WHEN u2.FAuxTaxPrice * u2.FTaxRate /100 > 0 THEN CASE WHEN tnew4.FValue='1' THEN CONVERT(DECIMAL(28, 16), u2.FAuxTaxPrice * u2.FTaxRate /100) ELSE CONVERT(DECIMAL(28, 16), u2.FAuxPrice * u2.FTaxRate /100) END ELSE 0 END) WHEN u1.FDiscountAmount <> 0 THEN u1.FDiscountAmount/u1.FAuxQty ELSE 0 END) AS FUniDiscount,
u1.FUnitID,t7.FName AS FUnitName,t7.FNumber AS FUnitNumber,t1.FValueAddRate
INTO #TmpSelBills FROM ICStockBill v1
INNER JOIN ICStockBillEntry u1 ON  v1.FInterID=u1.FInterID
LEFT OUTER JOIN t_Organization t1 ON  v1.FSupplyID=t1.FItemID
LEFT OUTER JOIN t_SubMessage t18 ON  v1.FSaleStyle=t18.FInterID
LEFT JOIN t_Emp t15_1 ON  v1.FManagerID=t15_1.FItemID
LEFT OUTER JOIN t_SystemProfile t13 ON  t13.FCategory='IC' AND t13.FKey='SaleTaxRateOption'
LEFT OUTER JOIN t_SystemProfile t17 ON  t17.FCategory='IC' AND t17.FKey='SEOrderTaxInPrice'
LEFT JOIN t_Department t2 ON  v1.FDeptID = t2.FItemID
LEFT JOIN t_Emp t3emp ON  v1.FEmpID = t3emp.FItemID
LEFT OUTER JOIN t_SystemProfile tnew1 ON  tnew1.FCategory='IC' AND tnew1.FKey='SalesInvoicePrice'
LEFT OUTER JOIN t_SystemProfile tnew4 ON  tnew4.FCategory='IC' AND tnew4.FKey='DisCountIncludeTax'
LEFT OUTER JOIN t_PayColCondition pay16 ON  v1.FPayCondition=pay16.FID
INNER JOIN t_ICItem t4 ON  u1.FItemID=t4.FItemID
LEFT OUTER JOIN t_MeasureUnit t7 ON  u1.FUnitID=t7.FItemID
LEFT JOIN t_AuxItem t105 ON  u1.FAuxPropID=t105.FItemID
LEFT OUTER JOIN SEOrderEntry u2 ON  u1.FOrderInterID=u2.FInterID AND u1.FOrderEntryID=u2.FEntryID
LEFT OUTER JOIN t_SubMessage tplanmode ON  u1.FPlanMode=tplanmode.FInterID
LEFT OUTER JOIN t_MeasureUnit t10 ON  t4.FUnitID=t10.FItemID
LEFT OUTER JOIN t_MeasureUnit t501 ON  t4.FSecUnitID=t501.FItemID
LEFT OUTER JOIN SEOrder v2 ON  u2.FInterID=v2.FInterID
LEFT OUTER JOIN t_MeasureUnit t257 ON  u2.FUnitID=t257.FItemID
LEFT OUTER JOIN t_Currency t14 ON  v2.FCurrencyID=t14.FCurrencyID
LEFT OUTER JOIN v_base_exratetype texratetype ON  v2.FExchangeRateType=texratetype.FID
LEFT OUTER JOIN t_settle t8 ON  v2.FSettleID=t8.FItemID
WHERE ((v1.FInterID=@xout AND u1.FEntryID IN (27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55)))
ORDER BY v1.FInterID, u1.FEntryID; update #TmpSelBills set FuniDisCount=Fauxprice*(FDiscountRate/100) where FuniDisCount=0;
--销售出库单插入#tmpselbills表的数据
select * from  #tmpselbills   --查询刚刚插入临时表的数据

回答2:

搞了半天这个问题的原因很简单,是因为客户资料没有设置增值税率

错误提示:数据读取错误.不能将值NULL插入列'FAuxPrice'

回答3:

这个问题的引起原因是Erp系统里客户或者供应商的销售/采购方式决定的

回答4:

找到对应关系,看看出库单是个字段影响的,手工更新一下字段值

回答5:

k3重新进一下。看看能解决不?