采购申请单全程跟踪报表数据未带出
金蝶云社区-wanglaixi2010
wanglaixi2010
0人赞赏了该文章 906次浏览 未经作者许可,禁止转载编辑于2016年09月21日 13:08:32

客户要求带出采购申请单的一些数据,现在做了sql语句,但是未能带出采购申请单的数量,日期和单号,求高人指点,图片中圆圈内为未带出所选项
SET NOCOUNT ON
SET Ansi_Warnings OFF
SELECT OS.* INTO #Temp FROM(
SELECT 0 AS FSumSort,p1.fqty as fqtyrequest,p2.fbillno as fbillnorequest,p2.fdate as fdaterequest,u1.FItemID as FItemID,v1.FEmpID as FEmpID,v1.FDeptID as FDeptID,v1.FSupplyID as FSupplyID,
ts.FNumber AS FSupplierNumber,ts.FName AS FSupplierName,v1.FBillNo,u1.FNote,v1.FDate AS FDate,u1.FDate AS FDateDelivery,
t.FNumber AS FNumber,t.FName AS FName,t.FModel,ta.FName AS FAuxPropName,tm.FName AS FUnitName,
tc.FName AS FCurrencyName,u1.FAuxQty,u1.FAuxPriceDiscount,
u1.FAllAmount,CAST(u1.FAllAmount * v1.FExchangeRate AS DECIMAL(28,2)) AS FAllAmountFor,
ISNULL(u1.FAuxStockQty,0) AS FAuxStockQtyCommit,u1.FAuxQty-ISNULL(u1.FAuxStockQty,0) AS FAuxStockQtyUnCommit,
ISNULL(u1.FAuxQtyInvoice,0) AS FAuxQtyInvoice,u1.FAuxQty-ISNULL(u1.FAuxQtyInvoice,0) AS FAuxQtyInvoiceUnCommit,
ISNULL(tp.FStdAllAmount,0)/v1.FExchangeRate AS FAmountInvoice,
u1.FAllAmount-ISNULL(tp.FStdAllAmount,0)/v1.FExchangeRate AS FAmountInvoiceUnCommit,
ISNULL(u1.FReceiveAmountFor_Commit,0) AS FReceiveAmountForCommit,
u1.FAllAmount-ISNULL(u1.FReceiveAmountFor_Commit,0) AS FReceiveAmountForUnCommit,
CASE WHEN v1.FStatus = 3 OR v1.FClosed = 1 THEN 'Y' ELSE '' END AS FClosed,
CASE WHEN u1.FMrpClosed = 1 THEN 'Y' ELSE '' END AS FMrpClosed,t.FPriceDecimal,t.FQtyDecimal
,cast(ISNULL(tv.FAuxCheckQty,0)/tm.FCoefficient as decimal(28,10)) AS FAuxCheckQtyCommit,
u1.FAuxQty-cast(ISNULL(tv.FAuxCheckQty,0)/tm.FCoefficient as decimal(28,10)) AS FAuxCheckQtyUnCommit
FROM POOrder v1
LEFT JOIN POOrderEntry u1 ON v1.FInterID=u1.FInterID
left join porequestentry p1 on v1.FInterID=p1.fsourceinterid
left join porequest p2 on p2.finterid=p1.finterid
LEFT JOIN t_Supplier ts ON ts.FItemID=v1.FSupplyID
LEFT JOIN t_AuxItem ta ON ta.FItemID=u1.FAuxPropID
LEFT JOIN t_MeasureUnit tm ON tm.FMeasureUnitID = u1.FUnitID
LEFT JOIN t_Currency tc ON tc.FCurrencyID=v1.FCurrencyID
LEFT JOIN t_ICItem t ON t.FItemID=u1.FItemID
LEFT JOIN t_Emp te ON te.FItemID=v1.FEmpID
LEFT JOIN t_Department td ON td.FItemID=v1.FDeptID
LEFT JOIN (
SELECT FOrderInterID,FOrderEntryID,SUM(FStdAllAmount) AS FStdAllAmount FROM (
SELECT ui.FOrderInterID,ui.FOrderEntryID,
SUM(ui.FStdAmount + CASE WHEN vi.FTranType IN(76,603) THEN 0 ELSE ui.FStdTaxAmount END) AS FStdAllAmount
FROM ICPurchase vi
LEFT JOIN ICPurchaseEntry ui ON vi.FInterID=ui.FInterID
WHERE ISNULL(vi.FCancellation, 0) = 0 And ui.FOrderInterID > 0 And ui.FEntryID > 0 AND ui.FOrderType=71 AND vi.FInterID NOT IN(SELECT DIStINCT FBillID FROM ICBillRelations_Purchase)
GROUP BY ui.FOrderInterID,ui.FOrderEntryID
UNION ALL
SELECT ti.FOrderInterID,ti.FOrderEntryID,
SUM(tl.FQty*ui.FPrice*FExchangeRate + CASE WHEN vi.FTranType IN(76,603) THEN 0 ELSE tl.FQty*ui.FPrice*ui.FTaxRate*FExchangeRate/100 END) AS FStdAllAmount
FROM ICPurchase vi
LEFT JOIN ICPurchaseEntry ui ON vi.FInterID=ui.FInterID
INNER JOIN ICBillRelations_Purchase tl ON vi.FInterID=tl.FBillID and ui.FEntryID=tl.FDestEntryID
INNER JOIN ICStockBillEntry ti ON ti.FInterID=tl.FMultiInterID AND ti.FEntryID=tl.FMultiEntryID
WHERE ISNULL(vi.FCancellation, 0) = 0 And ui.FOrderInterID > 0 And ui.FEntryID > 0 AND ui.FOrderType=71
GROUP BY ti.FOrderInterID,ti.FOrderEntryID) t GROUP BY FOrderInterID,FOrderEntryID
) tp ON u1.FInterID=tp.FOrderInterID AND u1.FEntryID=tp.FOrderEntryID
LEFT JOIN (
select FOrderInterID,FOrderEntryID,sum(case when t1.FTranType in(72,702) then FQty when t1.FTranType=73 then -FQty end ) AS FAuxCheckQty from POInstock t1
LEFT JOIN POInstockEntry t2 ON t1.FInterID=t2.FInterID AND t1.FTranType IN(72,73,702) AND t2.FOrderType=71
GROUP BY t2.FOrderInterID,t2.FOrderEntryID
) tv on u1.FInterID=tv.FOrderInterID AND u1.FEntryID=tv.FOrderEntryID
WHERE v1.FStatus>0 AND v1.FCancellation =0 AND v1.FClassTypeID<>1007101 AND v1.FDate>='2016-09-01' AND v1.FDate<='2016-09-21'
UNION ALL
SELECT 0 AS FSumSort,p1.fqty as fqty1,p2.fbillno as fbillnorequest,p2.fdate as fdaterequest,u1.FItemID as FItemID,v1.FEmployee as FEmpID,v1.FDepartment as FDeptID,v1.FSupplyID as FSupplyID,ts.FNumber AS FSupplierNumber,ts.FName AS FSupplierName,v1.FBillNo,'' as FNote,v1.FDate AS
FDate,u1.FFetchDate AS FDateDelivery,
t.FNumber AS FNumber,t.FName AS FName,t.FModel,ta.FName AS FAuxPropName,tm.FName AS FUnitName,
tc.FName AS FCurrencyName,u1.FAuxQty,u1.FAuxPriceDiscount,
u1.FAllAmount,CAST(u1.FAllAmount * v1.FExchangeRate AS DECIMAL(28,2)) AS FAllAmountFor,
ISNULL(u1.FAuxStockQty,0) AS FAuxStockQtyCommit,u1.FAuxQty-ISNULL(u1.FAuxStockQty,0) AS FAuxStockQtyUnCommit,
ISNULL(u1.FAuxQtyInvoice,0) AS FAuxQtyInvoice,u1.FAuxQty-ISNULL(u1.FAuxQtyInvoice,0) AS FAuxQtyInvoiceUnCommit,
ISNULL(tp.FStdAllAmount,0)/v1.FExchangeRate AS FAmountInvoice,
u1.FAllAmount-ISNULL(tp.FStdAllAmount,0)/v1.FExchangeRate AS FAmountInvoiceUnCommit,
ISNULL(u1.FReceiveAmountFor_Commit,0) AS FReceiveAmountForCommit,
u1.FAllAmount-ISNULL(u1.FReceiveAmountFor_Commit,0) AS FReceiveAmountForUnCommit,
CASE WHEN v1.FClosed = 1 THEN 'Y' ELSE '' END AS FClosed,
CASE WHEN u1.FMrpClosed = 1 THEN 'Y' ELSE '' END AS FMrpClosed,t.FPriceDecimal,t.FQtyDecimal
,cast(ISNULL(tv.FAuxCheckQty,0)/tm.FCoefficient as decimal(28,10)) AS FAuxCheckQtyCommit,u1.FAuxQty-cast(ISNULL(tv.FAuxCheckQty,0)/tm.FCoefficient as decimal(28,10)) AS FAuxCheckQtyUnCommit
FROM ICSubContract v1
LEFT JOIN ICSubContractEntry u1 ON v1.FInterID=u1.FInterID
left join porequestentry p1 on u1.FItemID=p1.FItemID
left join porequest p2 on p1.finterid=p2.finterid
LEFT JOIN t_Supplier ts ON ts.FItemID=v1.FSupplyID
LEFT JOIN t_AuxItem ta ON ta.FItemID=u1.FAuxPropID
LEFT JOIN t_MeasureUnit tm ON tm.FMeasureUnitID = u1.FUnitID
LEFT JOIN t_Currency tc ON tc.FCurrencyID=v1.FCurrencyID
LEFT JOIN t_ICItem t ON t.FItemID=u1.FItemID
LEFT JOIN t_Emp te ON te.FItemID=v1.FEmployee
LEFT JOIN t_Department td ON td.FItemID=v1.FDepartment
LEFT JOIN (
SELECT FOrderInterID,FOrderEntryID,SUM(FStdAllAmount) AS FStdAllAmount FROM (
SELECT ui.FOrderInterID,ui.FOrderEntryID,
SUM(ui.FStdAmount + CASE WHEN vi.FTranType IN(76,603) THEN 0 ELSE ui.FStdTaxAmount END) AS FStdAllAmount
FROM ICPurchase vi
LEFT JOIN ICPurchaseEntry ui ON vi.FInterID=ui.FInterID
WHERE ISNULL(vi.FCancellation, 0) = 0 And ui.FOrderInterID > 0 And ui.FEntryID > 0 AND ui.FOrderType=1007105 AND vi.FInterID NOT IN(SELECT DIStINCT FBillID FROM ICBillRelations_Purchase)
GROUP BY ui.FOrderInterID,ui.FOrderEntryID
UNION ALL
SELECT ti.FOrderInterID,ti.FOrderEntryID,
SUM(tl.FQty*ui.FPrice*FExchangeRate + CASE WHEN vi.FTranType IN(76,603) THEN 0 ELSE tl.FQty*ui.FPrice*ui.FTaxRate*FExchangeRate/100 END) AS FStdAllAmount
FROM ICPurchase vi
LEFT JOIN ICPurchaseEntry ui ON vi.FInterID=ui.FInterID
INNER JOIN ICBillRelations_Purchase tl ON vi.FInterID=tl.FBillID and ui.FEntryID=tl.FDestEntryID
INNER JOIN ICStockBillEntry ti ON ti.FInterID=tl.FMultiInterID AND ti.FEntryID=tl.FMultiEntryID
WHERE ISNULL(vi.FCancellation, 0) = 0 And ui.FOrderInterID > 0 And ui.FEntryID > 0 AND ui.FOrderType=1007105
GROUP BY ti.FOrderInterID,ti.FOrderEntryID) t GROUP BY FOrderInterID,FOrderEntryID
) tp ON u1.FInterID=tp.FOrderInterID AND u1.FEntryID=tp.FOrderEntryID
LEFT JOIN (
select FOrderInterID,FOrderEntryID,sum(case when t1.FTranType in(72,702) then FQty when t1.FTranType=73 then -FQty end ) AS FAuxCheckQty from POInstock t1
LEFT JOIN POInstockEntry t2 ON t1.FInterID=t2.FInterID AND t1.FTranType IN(72,73,702) AND t2.FOrderType=1007105
GROUP BY t2.FOrderInterID,t2.FOrderEntryID
) tv on u1.FInterID=tv.FOrderInterID AND u1.FEntryID=tv.FOrderEntryID
WHERE v1.FStatus>0 AND v1.FCancellation =0 AND v1.FDate>='2016-09-01' AND v1.FDate<='2016-09-21'
) OS
IF EXISTS(SELECT TOP 1 FSumSort FROM #Temp WHERE FSumSort=0)
BEGIN
INSERT INTO
#Temp(FSumSort,fbillnorequest,fdaterequest,FSupplierNumber,FItemID,FEmpID,FDeptID,FSupplyID,FBillNo,FNote,FClosed,FMrpClosed,FAuxQty,FAllAmount,FAllAmountFor,FAuxStockQtyCommit,FAuxStockQtyUnCommit,FAuxQtyInvoice,FAuxQtyInvoiceUnCommit,FAmountInvoice
, FAmountInvoiceUnCommit, FReceiveAmountForCommit,FReceiveAmountForUnCommit,FAuxCheckQtyCommit,FAuxCheckQtyUnCommit,fqtyrequest)
SELECT
101,'','','合计',0,0,0,0,'','','','',SUM(ISNULL(FAuxQty,0)),SUM(ISNULL(FAllAmount,0)),SUM(ISNULL(FAllAmountFor,0)),
SUM(ISNULL(FAuxStockQtyCommit,0)),SUM(ISNULL(FAuxStockQtyUnCommit,0)),SUM(ISNULL(FAuxQtyInvoice,0)),
SUM(ISNULL(FAuxQtyInvoiceUnCommit,0)),SUM(ISNULL(FAmountInvoice,0)),SUM(ISNULL(FAmountInvoiceUnCommit,0)),
SUM(ISNULL(FReceiveAmountForCommit,0)),SUM(ISNULL(FReceiveAmountForUnCommit,0)),SUM(ISNULL(FAuxCheckQtyCommit,0)),
SUM(ISNULL(FAuxCheckQtyUnCommit,0)),SUM(ISNULL(fqtyrequest,0))
FROM #Temp
END
SELECT * FROM #Temp DROP TABLE #Temp