PiolotTH_ReportFrom/派诺报表SQL文件/应收对账单(兴诺明细版存储过程).sql

407 lines
20 KiB
MySQL
Raw Normal View History

2025-12-12 01:33:16 +08:00
USE [AIS2025]
GO
/****** Object: StoredProcedure [dbo].[UpdateYSDZBMX_GZTH] Script Date: 2025/11/28 10:40:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[UpdateYSDZBMX_GZTH_XN]
@FSDATE varchar(1000),
@FEDATE varchar(1000),
@FSaleOrgId varchar(1000),
@FCUSTID varchar(1000),
@XSYFID varchar(1000),
@ZZHTH varchar(1000)
,@SFQJFWDZ varchar(1000) ---
AS
BEGIN
DECLARE @StartDate DATE = CONVERT(DATE, @FSDATE);
--DECLARE @EndDate DATE = CONVERT(DATE,@FEDATE);
DECLARE @EndDate DATE = CONVERT(DATE,CASE @FEDATE WHEN '' THEN '2099-12-31'ELSE @FEDATE END);
-- 将结束日期增加一天
SET @EndDate = DATEADD(DAY, 1, @EndDate);
TRUNCATE TABLE YingShouZhanKuanMX_GZTH;
SELECT DISTINCT *
INTO #TEMP3
FROM(
--
SELECT F_PAPERCONTRACT ZHHTH,FDELIVERYORGID ZZ
FROM T_SAL_DELIVERYNOTICE T1
WHERE (FDELIVERYORGID = @FSaleOrgId OR ISNULL(@FSaleOrgId,'') = '')
AND FCUSTOMERID = @FCUSTID --
AND FApproveDate >= @StartDate
AND FApproveDate < @EndDate
AND (ISNULL(@ZZHTH,'') = '' OR F_PAPERCONTRACT = @ZZHTH)
AND FDOCUMENTSTATUS = 'C'
UNION ALL
--退
SELECT F_PAPERCONTRACT ZHHTH,FRETORGID ZZ
FROM T_SAL_RETURNNOTICE T1
WHERE (FRETORGID = @FSaleOrgId OR ISNULL(@FSaleOrgId,'') = '')
AND FRETCUSTID = @FCUSTID --
AND FApproveDate >= @StartDate
AND FApproveDate < @EndDate
AND (ISNULL(@ZZHTH,'') = '' OR F_PAPERCONTRACT = @ZZHTH)
AND FDOCUMENTSTATUS = 'C'
UNION ALL
--
SELECT F_CONTRACTNUMBER ZHHTH,FPAYORGID ZZ
FROM T_AR_RECEIVEBILL T1
WHERE (FPAYORGID = @FSaleOrgId OR ISNULL(@FSaleOrgId,'') = '')
AND FCONTACTUNITTYPE = 'BD_Customer' --
AND FCONTACTUNIT = @FCUSTID --
AND FApproveDate >= @StartDate
AND FApproveDate < @EndDate
AND (ISNULL(@ZZHTH,'') = '' OR F_CONTRACTNUMBER = @ZZHTH)
AND FDOCUMENTSTATUS = 'C'
UNION ALL
--退
SELECT F_VRYF_TEXT_83G ZHHTH,FPAYORGID ZZ
FROM T_AR_REFUNDBILL T1
WHERE (FPAYORGID = @FSaleOrgId OR ISNULL(@FSaleOrgId,'') = '')
AND FCONTACTUNITTYPE = 'BD_Customer' --
AND FCONTACTUNIT = @FCUSTID --
AND FApproveDate >= @StartDate
AND FApproveDate < @EndDate
AND (ISNULL(@ZZHTH,'') = '' OR F_VRYF_TEXT_83G = @ZZHTH)
AND FDOCUMENTSTATUS = 'C'
UNION ALL
--
SELECT F_PAPERNUMBER ZHHTH,FSETTLEORGID ZZ
FROM T_IV_SALESIC T1
WHERE (FSETTLEORGID = @FSaleOrgId OR ISNULL(@FSaleOrgId,'') = '')
AND FCUSTOMERID = @FCUSTID --
AND FApproveDate >= '2025-01-01'
AND FApproveDate >= @FSDATE
AND FApproveDate < @EndDate
AND (ISNULL(@ZZHTH,'') = '' OR F_PAPERNUMBER = @ZZHTH)
AND FDOCUMENTSTATUS = 'C'
AND T1.F_SFQC = 0
UNION ALL
--
SELECT F_CONTRACTNUMBER ZHHTH,FSALEORGID ZZ
FROM T_SAL_ORDER
WHERE FDOCUMENTSTATUS = 'C'
AND FApproveDate < @EndDate
AND 1= @SFQJFWDZ
UNION ALL
--
SELECT F_CONTRACTNUMBER ZHHTH,FSALEORGID ZZ
FROM T_SAL_ORDER
WHERE FDOCUMENTSTATUS = 'C'
AND FApproveDate >= @FSDATE
AND FApproveDate < @EndDate
AND 2= @SFQJFWDZ
)a
INSERT INTO
YingShouZhanKuanMX_GZTH
(FID,FENTRYID,FSaleOrgId,FBILLNO,FSalerId,[DATE],CONTRACTNUMBER,ProjectName,SizeModel,FQty,FTaxPrice,FAllAmount,OrderAmount,PaymentAmount,[K3数据],,NUMBER)
SELECT
A.FID AS FID
,B.FENTRYID AS FENTRYID
,A.FSaleOrgId AS
,A.FBILLNO AS
,XS.FNAME AS FID
,FORMAT( A.FApproveDate,'yyyy-MM-dd') AS
,A.F_contractnumber AS
,GC.FNAME AS
,WL_L.FSpecification AS
,B.FQTY AS
,B_F.FTAXPRICE AS
,B_F.FALLAMOUNT_LC AS
,AF.FBillAllAmount
,A.F_Amount AS
,0 AS K3数据
,tmm.FOldNumber
,ROW_NUMBER() OVER(ORDER BY A.FApproveDate ,A.FID) AS NUMBER
FROM T_SAL_ORDER A
INNER JOIN (
SELECT T1.FID,SUM(T1.FALLAMOUNT_LC) FBillAllAmount
FROM T_SAL_ORDERENTRY_F T1
INNER JOIN T_SAL_ORDERENTRY T2 ON T1.FENTRYID = T2.FENTRYID AND T2.FRETURNTYPE <> 'RETURN'
GROUP BY T1.FID
) AF ON A.FID = AF.FID
INNER JOIN T_BAS_PREBDONE_L GC ON A.F_projectname = GC.FID
INNER JOIN T_SAL_ORDERENTRY B ON A.FID = B.FID
INNER JOIN T_BD_MATERIAL_L WL_L ON B.FMATERIALID = WL_L.FMATERIALID
INNER JOIN T_BD_MATERIAL tmm ON B.FMATERIALID = tmm.FMATERIALID
INNER JOIN T_SAL_ORDERENTRY_F B_F ON B.FENTRYID = B_F.FENTRYID
INNER JOIN V_BD_SALESMAN_L XS ON XS.FID = A.FSALERID
INNER JOIN #TEMP3 LS ON LS.ZHHTH = A.F_CONTRACTNUMBER AND LS.ZZ = A.FSALEORGID
WHERE (A.FSaleOrgId = @FSaleOrgId OR ISNULL(@FSaleOrgId,'') = '')
AND A.FCUSTID = @FCUSTID
--AND A.FApproveDate >= @StartDate
--AND A.FApproveDate <= @EndDate
AND (ISNULL(@XSYFID, '') = '' OR A.FSalerId = @XSYFID)
AND (ISNULL(@ZZHTH,'') = '' OR A.F_contractnumber = @ZZHTH)
AND B.FRETURNTYPE <> 'RETURN'
AND A.FDOCUMENTSTATUS = 'C'
/*2025-08-13调整发货数量逻辑,替换该逻辑*/
--UPDATE a
--SET a.[K3发货数量]=b.,a.[K3发货金额]=b.,a.[K3退货数量]=b.退
--,a.[K3退货金额]=b.退--,a.[K3专票金额] = b. ,a.[K3普票金额]= b.
--FROM YingShouZhanKuanMX_GZTH A
--INNER JOIN T_SAL_ORDERENTRY C ON A.FENTRYID = C.FENTRYID
--INNER JOIN [t_xnoldk3seorder1125] b
--ON C.F_K3SEQ = b. AND a.FBILLNO=b.[] --AND a.=[] AND a.FQty=[] AND (ABS(a.FTaxPrice-b.[])<=0.02 OR ABS(a.FTaxPrice-b.[])<=0.02)
--WHERE K3数据=0
--AND B. >= @StartDate
--AND B. < @EndDate
--k3专票
UPDATE a
SET a.[K3专票金额] = b.
FROM YingShouZhanKuanMX_GZTH A
INNER JOIN T_SAL_ORDERENTRY C ON A.FENTRYID = C.FENTRYID
INNER JOIN (SELECT ,,SUM() AS '发票金额' FROM [oldk3ICSale0802] GROUP BY ,) b
ON C.FSEQ = 1 AND a.CONTRACTNUMBER=b. --AND a.=[] AND a.FQty=[] AND (ABS(a.FTaxPrice-b.[])<=0.02 OR ABS(a.FTaxPrice-b.[])<=0.02)
WHERE K3数据=0
AND b. = ''
--AND B. >= @StartDate
--AND B. < @EndDate
--k3普票
UPDATE a
SET a.[K3普票金额] = b.
FROM YingShouZhanKuanMX_GZTH A
INNER JOIN T_SAL_ORDERENTRY C ON A.FENTRYID = C.FENTRYID
INNER JOIN (SELECT ,,,SUM() AS '发票金额' FROM [oldk3ICSale0802] GROUP BY ,,) b
ON C.FSEQ = 1 AND a.CONTRACTNUMBER=b. --AND a.=[] AND a.FQty=[] AND (ABS(a.FTaxPrice-b.[])<=0.02 OR ABS(a.FTaxPrice-b.[])<=0.02)
WHERE K3数据=0
AND b. = ''
AND ISNULL(b.,'') <> 1
UPDATE a SET a.[K3专票金额] = CASE B.rownumber WHEN 1 THEN b. ELSE 0 END,a.[K3普票金额]= CASE B.rownumber WHEN 1 THEN b. ELSE 0 END
FROM YingShouZhanKuanMX_GZTH A
INNER JOIN (
SELECT ROW_NUMBER() OVER(PARTITION BY T1.FID ORDER BY T1.FID) rownumber,T1.FID,T1.FENTRYID,T2.,T2.
FROM YingShouZhanKuanMX_GZTH T1
INNER JOIN (
SELECT FID,SUM([K3专票金额]) AS ,SUM([K3普票金额]) AS
FROM YingShouZhanKuanMX_GZTH
GROUP BY FID) T2 ON T1.FID = t2.FID
)B ON A.FID = B.FID AND A.FENTRYID = B.FENTRYID
----K3数据
--INSERT INTO
--YingShouZhanKuanMX_GZTH
--(FID,FENTRYID,FSaleOrgId,FBILLNO,FSalerId,[DATE],CONTRACTNUMBER,ProjectName,SizeModel,[K3发货数量],[K3发货金额],[K3退货数量],[K3退货金额],[K3普票金额],[K3专票金额],[K3数据])
--SELECT
-- B.FID AS 销售订单FID
--,0 AS FENTRYID
--,B.FSaleOrgId AS
--,B.FBILLNO AS
--,XS.FNAME AS FID
--,FORMAT( B.FApproveDate,'yyyy-MM-dd') AS
--,B.F_contractnumber AS
--,GC.FNAME AS
--,A. AS
--,A. AS
--,A. AS
--,A.退 AS 退
--,A.退 AS 退
--,A. AS
--,A. AS
--,1 AS K3数据
--FROM t_xnoldk3seorder1125 A
--INNER JOIN T_SAL_ORDER B ON A. = B.FBILLNO
--INNER JOIN T_BAS_PREBDONE_L GC ON B.F_projectname = GC.FID
--INNER JOIN V_BD_SALESMAN_L XS ON XS.FID = B.FSALERID
--WHERE B.FSaleOrgId = @FSaleOrgId
--AND B.FCUSTID = @FCUSTID
--AND B.FApproveDate >= @StartDate
--AND B.FApproveDate <= @EndDate
--AND (ISNULL(@XSYFID, '') = '' OR B.FSalerId = @XSYFID)
--AND (ISNULL(@ZZHTH,'') = '' OR B.F_contractnumber = @ZZHTH)
--
SELECT
C.FSBILLID AS FID
,C.FSID AS FENTRYID
,A.FApproveDate AS
,B.FQTY AS
,B_F.FAllAmount_LC AS
,STUFF((SELECT DISTINCT ','+FORMAT(FApproveDate,'yyyy-MM-dd') FROM T_SAL_DELIVERYNOTICE T1
LEFT JOIN T_SAL_DELIVERYNOTICEENTRY T2 ON T1.FID = T2.FID
LEFT JOIN T_SAL_DELIVERYNOTICEENTRY_F T3 ON T2.FENTRYID = T3.FENTRYID
LEFT JOIN T_SAL_DELIVERYNOTICEENTRY_LK T4 ON T3.FENTRYID = T4.FENTRYID AND T4.FSTABLENAME = 'T_SAL_ORDERENTRY'
WHERE T4.FSBILLID IN (SELECT FID FROM YingShouZhanKuanMX_GZTH) AND C.FSBILLID = T4.FSBILLID FOR XML PATH('')),1,1,'') AS
INTO #TEMP1
FROM T_SAL_DELIVERYNOTICE A
LEFT JOIN T_SAL_DELIVERYNOTICEENTRY B ON A.FID = B.FID
LEFT JOIN T_SAL_DELIVERYNOTICEENTRY_F B_F ON B.FENTRYID = B_F.FENTRYID
LEFT JOIN T_SAL_DELIVERYNOTICEENTRY_LK C ON B_F.FENTRYID = C.FENTRYID AND C.FSTABLENAME = 'T_SAL_ORDERENTRY'
WHERE C.FSBILLID IN (SELECT FID FROM YingShouZhanKuanMX_GZTH)
AND C.FSID IN (SELECT FENTRYID FROM YingShouZhanKuanMX_GZTH)
AND A.FApproveDate >= @StartDate
AND A.FApproveDate < @EndDate
AND A.FDOCUMENTSTATUS = 'C'
----k3发货数据
--update A
--SET A.K3发货数量 = C.,A.K3发货金额 = C.
--FROM YingShouZhanKuanMX_GZTH A
--INNER JOIN T_SAL_ORDERENTRY B ON A.FID = B.FID AND A.FENTRYID = B.FENTRYID
--INNER JOIN T_BD_MATERIAL D ON B.FMATERIALID = B.FMaterialId
--INNER JOIN t_xnoldk3seorder1125 C ON A.FBILLNO = C. AND A.CONTRACTNUMBER = C. AND D.FOldNumber = C.
SELECT
FID,
FENTRYID,
SUM() AS ,
SUM() AS
INTO #FHTEMP1
FROM #TEMP1
GROUP BY FID,FENTRYID
--
UPDATE A
SET ShipmentsDate = B. --FORMAT( B.,'yyyy-MM-dd')
FROM YingShouZhanKuanMX_GZTH A
INNER JOIN #TEMP1 B ON A.FID = B.销售订单FID AND A.FENTRYID = B.销售订单FENTRYID
--K3发货日期
UPDATE A
SET ShipmentsDate = LEFT(CONCAT(CASE WHEN ISNULL(A.ShipmentsDate,'') = '' THEN '' ELSE A.ShipmentsDate+',' END ,B.),1990)
FROM YingShouZhanKuanMX_GZTH A
INNER JOIN T_SAL_ORDERENTRY C ON A.FENTRYID = C.FENTRYID
INNER JOIN (SELECT ,STUFF((SELECT DISTINCT ','+ FROM t_xnoldk3seorder1125 WHERE = a. FOR XML PATH('')),1,1,'') AS '合并发货日期',
from t_xnoldk3seorder1125 a) b
ON C.F_K3SEQ = b. AND a.CONTRACTNUMBER=b.[]
UPDATE A
SET A. = B.,A. = B.
FROM YingShouZhanKuanMX_GZTH A
INNER JOIN #FHTEMP1 B ON A.FID = B.销售订单FID AND A.FENTRYID = B.销售订单FENTRYID
/*2025-08-13调整发货数量逻辑"销售订单发货数量取数逻辑,要根据销售订单行数据进行判断:
1
2++"*/
UPDATE a
SET a.[K3发货数量]= CASE ISNULL(A.,0) WHEN 0 THEN b. ELSE ISNULL(b.,0)+ISNULL(b.,0) END
,a.[K3发货金额]= CASE ISNULL(A.,0) WHEN 0 THEN b. ELSE (ISNULL(b.,0)+ISNULL(b.,0))*b. END
,a.[K3退货数量]=b.退
,a.[K3退货金额]=b.退
FROM YingShouZhanKuanMX_GZTH A
INNER JOIN T_SAL_ORDERENTRY C ON A.FENTRYID = C.FENTRYID
INNER JOIN [t_xnoldk3seorder1125] b
ON C.F_K3SEQ = b. AND a.CONTRACTNUMBER=b.[]
WHERE K3数据=0
AND B. >= @StartDate
AND B. < @EndDate
--
UPDATE A
SET A.ShipmentsNum = ISNULL([],0) + ISNULL([K3发货数量],0),A.ShipmentsAmount = ISNULL([],0) + ISNULL([K3发货金额],0)
FROM YingShouZhanKuanMX_GZTH A
--退退退
SELECT
E.FSBILLID AS FID
,E.FSID AS FENTRYID
,A.FDATE AS 退
,B.FQTY AS 退
,B_F.FALLAMOUNT_LC AS 退
,F.F_CONTRACTNUMBER AS
INTO #TEMP2
FROM T_SAL_RETURNNOTICE A
INNER JOIN T_SAL_RETURNNOTICEENTRY B ON A.FID = B.FID
INNER JOIN T_SAL_RETURNNOTICEENTRY_F B_F ON B.FENTRYID = B_F.FENTRYID
INNER JOIN T_SAL_RETURNNOTICEENTRY_LK C ON B_F.FENTRYID = C.FENTRYID AND C.FSTABLENAME = 'T_SAL_ORDERENTRY'
INNER JOIN T_SAL_ORDERENTRY D ON C.FSBILLID = D.FID AND C.FSID = D.FENTRYID
INNER JOIN T_SAL_ORDERENTRY_LK E ON E.FENTRYID = D.FENTRYID AND C.FSTABLENAME = 'T_SAL_ORDERENTRY'
INNER JOIN T_SAL_ORDER F ON E.FSBILLID = F.FID
WHERE 1=1
AND A.FApproveDate >= @StartDate
AND A.FApproveDate < @EndDate
AND A.FDOCUMENTSTATUS = 'C'
--退退退
INSERT INTO #TEMP2 (销售订单FID,销售订单FENTRYID,退货日期,退货数量,退货金额,纸质合同号)
SELECT
F.FID AS FID
,D.FENTRYID AS FENTRYID
,A.FDATE AS 退
,B.FQTY AS 退
,B_F.FALLAMOUNT_LC AS 退
,F.F_CONTRACTNUMBER AS
FROM T_SAL_RETURNNOTICE A
INNER JOIN T_SAL_RETURNNOTICEENTRY B ON A.FID = B.FID
INNER JOIN T_SAL_RETURNNOTICEENTRY_F B_F ON B.FENTRYID = B_F.FENTRYID
INNER JOIN T_SAL_RETURNNOTICEENTRY_LK C ON B_F.FENTRYID = C.FENTRYID AND C.FSTABLENAME = 'T_SAL_ORDERENTRY'
INNER JOIN T_SAL_ORDERENTRY D ON C.FSBILLID = D.FID AND C.FSID = D.FENTRYID
INNER JOIN T_SAL_ORDER F ON D.FID = F.FID
WHERE 1=1
AND D.FRETURNTYPE <> 'RETURN'
AND D.FRETURNTYPE <> 'SEND'
AND F.F_CONTRACTNUMBER NOT IN (SELECT DISTINCT [] FROM #TEMP2)
AND A.FApproveDate >= @StartDate
AND A.FApproveDate < @EndDate
AND A.FDOCUMENTSTATUS = 'C'
--退退退
INSERT INTO #TEMP2 (销售订单FID,销售订单FENTRYID,退货日期,退货数量,退货金额,纸质合同号)
SELECT
C.FID AS FID
,D.FENTRYID AS FENTRYID
,A.FDATE AS 退
,B.FQTY AS 退
,B_F.FALLAMOUNT_LC AS 退
,C.F_CONTRACTNUMBER AS
FROM T_SAL_RETURNNOTICE A
INNER JOIN T_SAL_RETURNNOTICEENTRY B ON A.FID = B.FID
INNER JOIN T_SAL_RETURNNOTICEENTRY_F B_F ON B.FENTRYID = B_F.FENTRYID
INNER JOIN T_SAL_ORDER C ON A.F_SOURPAPERCONTRACT = C.F_CONTRACTNUMBER AND C.FSALEORGID = A.FRETORGID --
INNER JOIN T_SAL_ORDERENTRY D ON C.FID = D.FID AND D.FMATERIALID = B.FMATERIALID --
WHERE 1=1
AND A.FApproveDate >= @StartDate
AND A.FApproveDate < @EndDate
AND C.F_CONTRACTNUMBER NOT IN (SELECT DISTINCT [] FROM #TEMP2)
AND A.FDOCUMENTSTATUS = 'C'
----k3退货数据
--update A
--SET A.K3退货数量 = C.退,A.K3退货金额 = C.退
--FROM YingShouZhanKuanMX_GZTH A
--INNER JOIN T_SAL_ORDERENTRY B ON A.FID = B.FID AND A.FENTRYID = B.FENTRYID
--INNER JOIN T_BD_MATERIAL D ON B.FMATERIALID = B.FMaterialId
--INNER JOIN t_xnoldk3seorder1125 C ON A.FBILLNO = C. AND A.CONTRACTNUMBER = C. AND D.FOldNumber = C.
UPDATE A
SET ReturnDate = FORMAT( B.退,'yyyy-MM-dd'),A.退 = ISNULL(B.退,0),A.退 = ISNULL(B.退,0)
FROM YingShouZhanKuanMX_GZTH A
INNER JOIN #TEMP2 B ON A.FID = B.销售订单FID AND A.FENTRYID = B.销售订单FENTRYID
update YingShouZhanKuanMX_GZTH
SET ReturnNum = ISNULL(K3退货数量,0) + ISNULL(退,0), ReturnAmount = ISNULL(K3退货金额,0) + ISNULL(退,0);
--
UPDATE A
SET PaymentDate = FORMAT(B.ShouKuanFDate,'yyyy-MM-dd')
FROM YingShouZhanKuanMX_GZTH A
INNER JOIN ZZZ_HeXiaoBook B ON B.XiaoShouFid = A.FID
WHERE 1=1
AND B.ShouKuanFDate >= @StartDate
AND B.ShouKuanFDate < @EndDate
--SELECT OrderAmount,PaymentAmount,ShippedDebt,InvoicedDebt,IsEnded ,OwedTickets,BillingAmount, CASE WHEN ROW_NUMBER() OVER(PARTITION BY FBILLNO ORDER BY fid) = 1 THEN FBILLNO
--END AS ,* FROM YingShouZhanKuanMX_GZTH
--退退
SELECT A.FID,SUM(A.ShipmentsAmount) AS '发货金额', SUM(A.ReturnAmount) AS '退货金额',
STUFF((SELECT DISTINCT ','+ReturnDate FROM YingShouZhanKuanMX_GZTH WHERE FID = a.FID FOR XML PATH('')),1,1,'') AS '退货日期'
INTO #TEMP4
FROM YingShouZhanKuanMX_GZTH A
GROUP BY A.FID
UPDATE A
SET A.ShipmentsAmount = ISNULL(B.,0),A.ReturnAmount = ISNULL(B.退,0),A.ReturnDate = ISNULL(B.退,'')
FROM YingShouZhanKuanMX_GZTH A
INNER JOIN #TEMP4 B ON A.FID = B.FID
END