Piolot_RepotForm_PeiHao/非C#代码文件/收款单核销流水存储过程.sql
2025-10-16 10:40:56 +08:00

777 lines
27 KiB
Transact-SQL

-- 检查存储过程是否存在,存在则删除 P202502080013
IF OBJECT_ID('dbo.[PR_YingShouSBU_yuyubo]', 'P') IS NOT NULL
BEGIN
DROP PROCEDURE dbo.PR_YingShouSBU_yuyubo;
PRINT '存储过程 dbo.[PR_YingShouSBU_yuyubo] 已删除';
END
GO
-- 创建新的存储过程
CREATE PROCEDURE dbo.PR_YingShouSBU_yuyubo @BeginDATE DATETIME='2000-01-01'
AS
BEGIN
UPDATE STATISTICS T_SAL_ORDERENTRY_F;
UPDATE STATISTICS T_SAL_ORDER;
EXEC usp_RefreshViews 'ZZV_SalOrder';
--EXEC usp_RefreshViews 'V_CN_SALORDERANDRECEIVE';
DELETE [ZZZ_HeXiaoBook] WHERE [ShouKuanFDate]>=@BeginDATE
OR ShouKuanType>0
DECLARE @FDATE DATETIME,@FBILLNO NVARCHAR(200),@ShouKuanFID INT,@FSALEORGID INT ,@F_contractnumber NVARCHAR(2000),@fid2 INT,@fid3 INT,@amount DECIMAL(18,2),@hexiao DECIMAL(18,2)
,@remark NVARCHAR(200);
-- 1. 声明游标
DECLARE cursor_name2 CURSOR FOR
SELECT FDATE,FBILLNO,FID,FSALEORGID,F_contractnumber,FREMARK FROM T_AR_RECEIVEBILL
WHERE FDOCUMENTSTATUS='C' AND FDATE>=@BeginDATE
ORDER BY FDATE
OPEN cursor_name2;
FETCH NEXT FROM cursor_name2
INTO @FDATE,
@FBILLNO,
@ShouKuanFID,
@FSALEORGID,
@F_contractnumber,@remark
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @hexiao=0;
---销售的自动核销记录单--
SELECT @fid2=0,@fid3=0;
DECLARE cursor_name33 CURSOR FOR
SELECT FID FROM dbo.T_AutoWrireRecordEntry2 WHERE FBILLNO3=@FBILLNO
OPEN cursor_name33;
FETCH NEXT FROM cursor_name33
INTO @fid2
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @fid3=0;
IF (@fid2 > 0)
BEGIN
SELECT @FDATE = ISNULL(F_YEWUDATE, FCREATEDATE),
@fid3 = FID
FROM T_AutoWrireRecord
WHERE FID = @fid2 AND FDOCUMENTSTATUS = 'C';
IF (@fid3 > 0)
BEGIN
SELECT @hexiao = 1;
IF ((SELECT COUNT(1)FROM T_AutoWrireRecordEntry2 WHERE FID = @fid2) < 2)
BEGIN
INSERT INTO [dbo].[ZZZ_HeXiaoBook]
(
[XiaoShouFid],
[XiaoShouBillNo],
[XiaoShouHeTong],
[ShouKuanFid],
[ShouKuanBillNo],
[ShouKuanFDate],
[BenCiHeXiao],
[FSaleOrgId],
Note,
NoteFid,
FExchangeRate,
FSettleCurrId,
FLOCALCURRID,
[ShouKuanType],
Remark
)
(SELECT a.FID,
a.FBILLNO,
a.F_CONTRACTNUMBER,
@ShouKuanFID,
@FBILLNO,
@FDATE,
b.FALLAMOUNT22,
@FSALEORGID,
'销售的自动核销记录单',
@fid2,
dd.FEXCHANGERATE,
FSETTLECURRID,
FLOCALCURRID,
0,
head.F_NOTE
FROM T_SAL_ORDER a
LEFT JOIN T_AutoWrireRecordEntry b
ON a.FBILLNO = b.FBILLNO2
LEFT JOIN T_AutoWrireRecordEntry2 c
ON b.FID = c.FID
LEFT JOIN T_SAL_ORDERFIN dd
ON a.FID = dd.FID
LEFT JOIN T_AutoWrireRecord head
ON b.FID = head.FID
WHERE b.FID = @fid2
AND c.FBILLNO3 = @FBILLNO);
END;
ELSE
BEGIN
INSERT INTO [dbo].[ZZZ_HeXiaoBook]
(
[XiaoShouFid],
[XiaoShouBillNo],
[XiaoShouHeTong],
[ShouKuanFid],
[ShouKuanBillNo],
[ShouKuanFDate],
[BenCiHeXiao],
[FSaleOrgId],
Note,
NoteFid,
FExchangeRate,
FSettleCurrId,
FLOCALCURRID,
[ShouKuanType],
Remark
)
(SELECT a.FID,
a.FBILLNO,
a.F_CONTRACTNUMBER,
@ShouKuanFID,
@FBILLNO,
@FDATE,
c.FALLAMOUNT33,
@FSALEORGID,
'销售的自动核销记录单',
@fid2,
dd.FEXCHANGERATE,
FSETTLECURRID,
FLOCALCURRID,
0,
head.F_NOTE
FROM T_SAL_ORDER a
LEFT JOIN T_AutoWrireRecordEntry b
ON a.FBILLNO = b.FBILLNO2
LEFT JOIN T_AutoWrireRecordEntry2 c
ON b.FID = c.FID
LEFT JOIN T_SAL_ORDERFIN dd
ON a.FID = dd.FID
LEFT JOIN T_AutoWrireRecord head
ON b.FID = head.FID
WHERE b.FID = @fid2
AND c.FBILLNO3 = @FBILLNO);
END;
END;
END;
-- 获取下一条记录
FETCH NEXT FROM cursor_name33
INTO @fid2;
END;
-- 4. 关闭游标
CLOSE cursor_name33;
-- 5. 释放游标资源
DEALLOCATE cursor_name33;
------发货通知单的核销记录单--------------
SELECT @fid2=0,@fid3=0,@F_contractnumber='',@amount=0;
DECLARE cursor_name44 CURSOR FOR
SELECT FID FROM dbo.VRYF_t_Cust_Entry100025 WHERE FBILLNO3=@FBILLNO
OPEN cursor_name44;
FETCH NEXT FROM cursor_name44
INTO @fid2
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @fid3=0;
SELECT @FDATE=ISNULL(F_YeWuDate,FCREATEDATE),@fid3=FID FROM VRYF_t_Cust100015
WHERE FID=@fid2 AND FDOCUMENTSTATUS='C'
IF(@fid3>0)
BEGIN
SELECT @F_contractnumber=FCONTRACTNUMBER,@amount=FALLAMOUNT22 FROM VRYF_t_Cust_Entry100024 a WHERE a.FID=@fid2
SELECT @hexiao=@amount;
INSERT INTO [dbo].[ZZZ_HeXiaoBook]
([XiaoShouFid]
,[XiaoShouBillNo]
,[XiaoShouHeTong]
,[ShouKuanFid]
,[ShouKuanBillNo]
,[ShouKuanFDate]
,[BenCiHeXiao]
,[FSaleOrgId],Note,NoteFid,FExchangeRate,FSettleCurrId,FLOCALCURRID,[ShouKuanType],Remark)
( SELECT a.fid,a.FBILLNO,a.F_CONTRACTNUMBER,@ShouKuanFID,@FBILLNO,@FDATE,@amount,@FSALEORGID,'发货通知单的核销记录单',@fid2, dd.FExchangeRate,FSettleCurrId,FLOCALCURRID,0
,@remark FROM T_SAL_ORDER a
LEFT JOIN T_SAL_ORDERFIN dd ON a.FID=dd.FID
WHERE a.FSALEORGID=[FSaleOrgId] and a.F_CONTRACTNUMBER=@F_contractnumber)
END
FETCH NEXT FROM cursor_name44
INTO @fid2;
END;
-- 4. 关闭游标
CLOSE cursor_name44;
-- 5. 释放游标资源
DEALLOCATE cursor_name44;
-----应收核销记录表---------
SELECT @fid2=0,@fid3=0,@F_contractnumber='',@amount=0;
SELECT FVERIFYDATE,FBILLFORMID, FVERIFYSEQ,FSOURCETYPE,FCURWRITTENOFFAMOUNTFOR,FCURWRITTENOFFAMOUNT,FSRCBILLNO,b.FEXCHANGERATE,FCURTAXMATCHAMOUNT,FCURNOTAXMATCHAMOUNT
,FSRCBILLID ,b.FCURRENCYID,b.FLOCALCURRID,b.FORDERBILLNO
INTO #temp2
FROM T_AR_RECMacthLog a
LEFT JOIN dbo.T_AR_RECMACTHLOGENTRY b ON a.FID=b.FID
LEFT JOIN T_BAS_BILLTYPE c ON b.FSOURCETYPE=c.FBILLTYPEID
LEFT JOIN t_AR_RECEIVEBILL d ON d.FBILLNO=b.FSRCBILLNO
WHERE FVERIFYSEQ IN (SELECT FVERIFYSEQ FROM T_AR_RECMacthLog a
LEFT JOIN dbo.T_AR_RECMACTHLOGENTRY b ON a.FID=b.FID
WHERE b.FSRCBILLNO=@FBILLNO AND b.FSOURCETYPE='36cf265bd8c3452194ed9c83ec5e73d2' AND FVERIFYDATE>=@BeginDATE
) AND FVERIFYSEQ NOT IN (100135,100138,100042,100141,100139)
--SELECT * FROM #temp2
--SELECT @amount= SUM(FCURWRITTENOFFAMOUNT) FROM #temp2 WHERE FBILLFORMID !='AR_RECEIVEBILL'
SELECT @fid2=FSRCBILLID,@fid3=FVERIFYSEQ FROM #temp2 WHERE FBILLFORMID ='AR_receivable'
--SELECT @F_contractnumber= F_PAPERPRO FROM T_AR_receivable WHERE fid=@fid2
--PRINT '合同号:'+@F_contractnumber;
IF(@fid2>0)
BEGIN
SELECT @hexiao=1;
SELECT @FDATE=FVERIFYDATE FROM #temp2;
IF((SELECT COUNT(1)
FROM T_SAL_ORDER a
LEFT JOIN T_SAL_ORDERFIN dd ON a.FID=dd.FID
LEFT JOIN
(SELECT c.FSALEORGID,ak.FORDERNUMBER ,c.FID,SUM(ak.FALLAMOUNTFOR)/(SELECT SUM(FALLAMOUNTFOR) FROM T_AR_RECEIVABLEENTRY akk
where akk.FID=ak.FID) FALLAMOUNTFOR_D
FROM T_AR_receivable c
LEFT JOIN T_AR_RECEIVABLEENTRY ak ON c.FID=ak.FID
GROUP BY c.FSALEORGID,ak.FORDERNUMBER ,c.FID,ak.FID
) c
ON c.FORDERNUMBER=a.FBILLNO AND c.FSALEORGID=a.FSALEORGID AND a.FBILLNO !=''
LEFT JOIN #temp2 d ON d.FSRCBILLID=c.fid AND d.FBILLFORMID ='AR_receivable'
WHERE a.FSALEORGID=@FSALEORGID AND d.FBILLFORMID='AR_receivable'
)>0)
begin
INSERT INTO [dbo].[ZZZ_HeXiaoBook]
([XiaoShouFid]
,[XiaoShouBillNo]
,[XiaoShouHeTong]
,[ShouKuanFid]
,[ShouKuanBillNo]
,[ShouKuanFDate]
,[BenCiHeXiao]
,[FSaleOrgId],Note,NoteFid,FExchangeRate,FSettleCurrId,FLOCALCURRID,[ShouKuanType],Remark)
( SELECT a.fid,a.FBILLNO,a.F_CONTRACTNUMBER,@ShouKuanFID,@FBILLNO,d.FVERIFYDATE,FCURWRITTENOFFAMOUNTFOR*FALLAMOUNTFOR_D,@FSALEORGID,'应收核销记录表',d.FVERIFYSEQ
,dd.FEXCHANGERATE,dd.FSettleCurrId,dd.FLOCALCURRID,0 ,@remark
FROM T_SAL_ORDER a
LEFT JOIN T_SAL_ORDERFIN dd ON a.FID=dd.FID
LEFT JOIN
(SELECT c.FSALEORGID,ak.FORDERNUMBER ,c.FID,SUM(ak.FALLAMOUNTFOR)/(SELECT SUM(FALLAMOUNTFOR) FROM T_AR_RECEIVABLEENTRY akk
where akk.FID=ak.FID)
FALLAMOUNTFOR_D
FROM T_AR_receivable c
LEFT JOIN T_AR_RECEIVABLEENTRY ak ON c.FID=ak.FID
GROUP BY c.FSALEORGID,ak.FORDERNUMBER ,c.FID,ak.FID
) c
ON c.FORDERNUMBER=a.FBILLNO AND c.FSALEORGID=a.FSALEORGID AND a.FBILLNO !=''
LEFT JOIN #temp2 d ON d.FSRCBILLID=c.fid AND d.FBILLFORMID ='AR_receivable'
WHERE a.FSALEORGID=@FSALEORGID AND d.FBILLFORMID='AR_receivable' )
end
ELSE
begin
INSERT INTO [dbo].[ZZZ_HeXiaoBook]
([XiaoShouFid]
,[XiaoShouBillNo]
,[XiaoShouHeTong]
,[ShouKuanFid]
,[ShouKuanBillNo]
,[ShouKuanFDate]
,[BenCiHeXiao]
,[FSaleOrgId],Note,NoteFid,FExchangeRate,FSettleCurrId,FLOCALCURRID,[ShouKuanType],Remark)
( SELECT 0,'','',@ShouKuanFID,@FBILLNO,d.FVERIFYDATE,FCURWRITTENOFFAMOUNTFOR,@FSALEORGID,'应收核销记录表期初应收单',FVERIFYSEQ
,FEXCHANGERATE,FCURRENCYID,FLOCALCURRID,0 ,@remark
FROM #temp2 d
WHERE d.FBILLFORMID='AR_RECEIVEBILL' )
END
END
ELSE
BEGIN
SELECT @fid2=FSRCBILLID,@fid3=FVERIFYSEQ,@hexiao=FCURWRITTENOFFAMOUNTFOR,@FDATE=FVERIFYDATE FROM #temp2 WHERE FSRCBILLNO=@FBILLNO AND FBILLFORMID='AR_RECEIVEBILL'
IF(@fid2>0)
BEGIN
INSERT INTO [dbo].[ZZZ_HeXiaoBook]
([XiaoShouFid]
,[XiaoShouBillNo]
,[XiaoShouHeTong]
,[ShouKuanFid]
,[ShouKuanBillNo]
,[ShouKuanFDate]
,[BenCiHeXiao]
,[FSaleOrgId],Note,NoteFid,FExchangeRate,FSettleCurrId,FLOCALCURRID,[ShouKuanType],Remark)
( SELECT 0,'','',@ShouKuanFID,@FBILLNO,@FDATE,@hexiao,@FSALEORGID,'特殊核销只有收款单',@fid3
,d.FEXCHANGERATE,FCURRENCYID,FMAINBOOKCURID,0 ,@remark
FROM T_AR_RECEIVEBILL d
WHERE d.FBILLNO=@FBILLNO )
END
end
DROP TABLE #temp2
--------------收款单来源明细--------
IF(@hexiao=0)
begin
SELECT @fid2=a.FID FROM T_AR_RECEIVEBILL a LEFT JOIN T_AR_RECEIVEBILLSRCENTRY b ON a.FID=b.FID
WHERE a.fid=@ShouKuanFID
IF(@fid2>0)
BEGIN
SELECT @hexiao=1;
INSERT INTO [dbo].[ZZZ_HeXiaoBook]
([XiaoShouFid]
,[XiaoShouBillNo]
,[XiaoShouHeTong]
,[ShouKuanFid]
,[ShouKuanBillNo]
,[ShouKuanFDate]
,[BenCiHeXiao]
,[FSaleOrgId],Note,NoteFid,FExchangeRate,FSettleCurrId,FLOCALCURRID,[ShouKuanType],Remark)
( SELECT aa.fid,aa.FBILLNO,aa.F_CONTRACTNUMBER,@ShouKuanFID,@FBILLNO,a.FDATE,b.FREALRECAMOUNT,@FSALEORGID,'收款单来源明细',@fid2
,dd.FEXCHANGERATE,FSettleCurrId,FLOCALCURRID,0 ,@remark
FROM T_AR_RECEIVEBILL a LEFT JOIN T_AR_RECEIVEBILLSRCENTRY b ON a.FID=b.FID
LEFT JOIN dbo.T_SAL_ORDER aa ON b.FSRCBILLID=aa.FID
LEFT JOIN T_SAL_ORDERFIN dd ON aa.FID=dd.FID
WHERE a.fid=@ShouKuanFID AND b.FREALRECAMOUNT <>0 )
END
end
--------历史核销记录单--------------
IF(@FSALEORGID=100302)
begin
SELECT @hexiao=1;
INSERT INTO [dbo].[ZZZ_HeXiaoBook]
([XiaoShouFid]
,[XiaoShouBillNo]
,[XiaoShouHeTong]
,[ShouKuanFid]
,[ShouKuanBillNo]
,[ShouKuanFDate]
,[BenCiHeXiao]
,[FSaleOrgId],Note,NoteFid,FExchangeRate,FSettleCurrId,FLOCALCURRID,[ShouKuanType],Remark)
( SELECT a.fid,a.FBILLNO,a.F_CONTRACTNUMBER,@ShouKuanFID,@FBILLNO,c.F_Date,F_shareAmount,@FSALEORGID,'历史核销记录单',c.FEntryID ,dd.FEXCHANGERATE,FSettleCurrId,FLOCALCURRID,0 ,@remark
FROM T_SAL_ORDER a
RIGHT JOIN VRYF_t_Cust_Entry100021 c ON a.F_CONTRACTNUMBER=c.F_ORDERNO
LEFT JOIN T_SAL_ORDERFIN dd ON a.FID=dd.FID
WHERE (a.FSALEORGID=100302 OR a.fid IS NULL ) AND c.F_Receiptnumber=@FBILLNO AND c.F_ORDERNO NOT LIKE '%待%' )
END
-- 获取下一条记录
FETCH NEXT FROM cursor_name2
INTO @FDATE,
@FBILLNO,
@ShouKuanFID,
@FSALEORGID,
@F_contractnumber
,@remark;
END
-- 4. 关闭游标
CLOSE cursor_name2;
-- 5. 释放游标资源
DEALLOCATE cursor_name2;
INSERT INTO [dbo].[ZZZ_HeXiaoBook]
([XiaoShouFid]
,[XiaoShouBillNo]
,[XiaoShouHeTong]
,[ShouKuanFid]
,[ShouKuanBillNo]
,[ShouKuanFDate]
,[BenCiHeXiao]
,[FSaleOrgId],Note,NoteFid,FExchangeRate,FSettleCurrId,FLOCALCURRID,[ShouKuanType],Remark)
( SELECT a.fid AS [XiaoShouFid],a.FBILLNO,a.F_CONTRACTNUMBER,b.FEntryID,head.FBILLNO,head.F_YEWUDATE
,b.FALLAMOUNT22
,a.FSaleOrgId,'销售单与销售单调整',head.FID AS heahid,dd.FExchangeRate,FSettleCurrId,FLocalCurrId,2
,head.F_NOTE
FROM T_AutoWrireRecordEntry b
LEFT JOIN T_SAL_ORDER a ON a.FBILLNO=b.FBILLNO2
LEFT JOIN T_AutoWrireRecordEntry2 c ON b.FID=c.FID
LEFT JOIN T_SAL_ORDERFIN dd ON a.FID=dd.FID
LEFT JOIN T_AutoWrireRecord head ON b.FID=head.FID
WHERE head.FDOCUMENTSTATUS='C' AND c.FID IS NULL
)
--------以下是特殊核销----------
SELECT FVERIFYDATE,FBILLFORMID, FVERIFYSEQ,FSOURCETYPE,FCURWRITTENOFFAMOUNTFOR,FCURWRITTENOFFAMOUNT,FSRCBILLNO,b.FEXCHANGERATE,FCURTAXMATCHAMOUNT,FCURNOTAXMATCHAMOUNT ,FSRCBILLID,a.FMATCHMETHODID
,b.FORDERBILLNO
INTO #temp222
FROM T_AR_RECMacthLog a
LEFT JOIN dbo.T_AR_RECMACTHLOGENTRY b ON a.FID=b.FID
LEFT JOIN T_BAS_BILLTYPE c ON b.FSOURCETYPE=c.FBILLTYPEID
WHERE
--a.FMATCHMETHODID=30
-- AND
a.FVERIFYSEQ NOT IN
(SELECT DISTINCT FVERIFYSEQ from T_AR_RECMacthLog oo LEFT JOIN T_AR_RECMACTHLOGENTRY ll ON oo.FID=ll.FID
LEFT JOIN T_BAS_BILLTYPE c ON ll.FSOURCETYPE=c.FBILLTYPEID
WHERE FBILLFORMID='AR_RECEIVEBILL'
) AND FVERIFYSEQ NOT IN (100135,100138,100042,100140) AND FVERIFYSEQ NOT IN (100135,100138,100042,100141,100139)
ORDER BY a.FVERIFYSEQ;
INSERT INTO [dbo].[ZZZ_HeXiaoBook]
([XiaoShouFid]
,[XiaoShouBillNo]
,[XiaoShouHeTong]
,[ShouKuanFid]
,[ShouKuanBillNo]
,[ShouKuanFDate]
,[BenCiHeXiao]
,[FSaleOrgId],Note,NoteFid,FExchangeRate,FSettleCurrId,FLOCALCURRID,[ShouKuanType],Remark)
(
SELECT a.fid,a.FBILLNO,a.F_CONTRACTNUMBER,0,d.FSRCBILLNO,FVERIFYDATE,FCURWRITTENOFFAMOUNTFOR*FALLAMOUNTFOR_D,a.FSALEORGID,'特殊核销没有收款单',FVERIFYSEQ
,dd.FEXCHANGERATE,FSettleCurrId,FLOCALCURRID,1 ,''
FROM T_SAL_ORDER a
LEFT JOIN T_SAL_ORDERFIN dd ON a.FID=dd.FID
INNER JOIN
(SELECT c.FSALEORGID,ak.FORDERNUMBER ,c.FID,SUM(ak.FALLAMOUNTFOR)/(SELECT CASE WHEN SUM(FALLAMOUNTFOR)=0 THEN 100000000 ELSE SUM(FALLAMOUNTFOR) end FROM T_AR_RECEIVABLEENTRY akk
where akk.FID=ak.FID) FALLAMOUNTFOR_D
FROM T_AR_receivable c
LEFT JOIN T_AR_RECEIVABLEENTRY ak ON c.FID=ak.FID
GROUP BY c.FSALEORGID,ak.FORDERNUMBER ,c.FID,ak.FID
) c
ON c.FORDERNUMBER=a.FBILLNO AND c.FSALEORGID=a.FSALEORGID
INNER JOIN #temp222 d ON (d.FSRCBILLID=c.fid AND d.FBILLFORMID ='AR_receivable') OR (a.FBILLNO=d.FORDERBILLNO AND a.FBILLNO <> '' )
WHERE d.FBILLFORMID='AR_receivable' AND a.FDOCUMENTSTATUS='C'
);
DROP TABLE #temp222;
INSERT INTO [dbo].[ZZZ_HeXiaoBook]
([XiaoShouFid]
,[XiaoShouBillNo]
,[XiaoShouHeTong]
,[ShouKuanFid]
,[ShouKuanBillNo]
,[ShouKuanFDate]
,[BenCiHeXiao]
,[FSaleOrgId],Note,NoteFid,FExchangeRate,FSettleCurrId,FLOCALCURRID,[ShouKuanType],Remark)
( SELECT a.fid,a.FBILLNO,a.F_CONTRACTNUMBER,0,'',c.F_Date,F_shareAmount,a.FSALEORGID,'历史核销记录单没有收款单',c.FEntryID ,dd.FEXCHANGERATE,FSettleCurrId,FLOCALCURRID,2 ,c.F_NOTES
FROM T_SAL_ORDER a
INNER JOIN VRYF_t_Cust_Entry100021 c ON a.F_CONTRACTNUMBER=c.F_ORDERNO
LEFT JOIN T_SAL_ORDERFIN dd ON a.FID=dd.FID
WHERE (a.FSALEORGID=100302 OR a.fid IS NULL ) AND c.F_Receiptnumber='' AND c.F_ORDERNO NOT LIKE '%待%' )
UPDATE [ZZZ_HeXiaoBook] SET ZhangLing= ISNULL( ROUND( DATEDIFF(DAY,[到期时间],[ZZZ_HeXiaoBook].ShouKuanFDate) / 30,0) ,0 )
FROM (SELECT a.XiaoShouFid,a.XiaoShouBillNo,[XiaoShouHeTong],a.ShouKuanFDate,b.预计到期时间,b.到期时间 FROM [ZZZ_HeXiaoBook] a
LEFT JOIN (SELECT b.销售单主键ID,MAX(b.预计到期时间) AS 预计到期时间 ,max (b.到期时间) AS 到期时间 FROM [ZRP_YingShouMingXi_yuyubo] b GROUP BY 销售单主键ID) b
ON a.XiaoShouFid=b.销售单主键ID) b
WHERE [ZZZ_HeXiaoBook].XiaoShouFid=b.XiaoShouFid
UPDATE T_SAL_ORDER SET F_AMOUNT=0
WHERE FSALEORGID=100302
UPDATE T_SAL_ORDER SET F_AMOUNT=b.BenCiHeXiao
FROM (SELECT SUM(BenCiHeXiao ) BenCiHeXiao,XiaoShouBillNo FROM dbo.ZZZ_HeXiaoBook WHERE [ShouKuanType]!=3
GROUP BY XiaoShouBillNo) b
WHERE T_SAL_ORDER.FBILLNO=b.XiaoShouBillNo AND FSALEORGID=100302 AND F_AMOUNT <> b.BenCiHeXiao AND T_SAL_ORDER.FBILLNO!=''
UPDATE T_AR_RECEIVEBILL SET F_AMOUNT=0
WHERE FSALEORGID=100302
UPDATE T_AR_RECEIVEBILL SET F_AMOUNT=b.BenCiHeXiao
FROM (SELECT SUM(BenCiHeXiao ) BenCiHeXiao,ShouKuanBillNo FROM dbo.ZZZ_HeXiaoBook WHERE [ShouKuanType]!=3
GROUP BY ShouKuanBillNo) b
WHERE T_AR_RECEIVEBILL.FBILLNO=b.ShouKuanBillNo AND FSALEORGID=100302 AND F_AMOUNT <> b.BenCiHeXiao AND T_AR_RECEIVEBILL.FBILLNO!=''
UPDATE T_AR_RECEIVEBILL SET F_contractnumber=bb.hetong
FROM ( SELECT a.fid
,hetong=( SELECT STRING_AGG(XiaoShouHeTong, ',')
FROM (SELECT DISTINCT XiaoShouHeTong,ShouKuanBillNo FROM dbo.ZZZ_HeXiaoBook cc
WHERE ShouKuanBillNo!='' AND FSaleOrgId=100302 AND XiaoShouHeTong IS NOT NULL AND cc.ShouKuanBillNo=a.FBILLNO ) gg)
FROM T_AR_RECEIVEBILL a
WHERE a.FSALEORGID=100302) bb
WHERE FSALEORGID=100302 AND T_AR_RECEIVEBILL.fid=bb.fid AND bb.hetong IS NOT NULL;
PRINT '退款核销流水';
----------------退款核销流水----------- F_refundAmount F_TuiKuan_Amount
--SELECT a.fid,a.FBILLNO,b.FBILLNO2,b.FTYPE ,b.FALLAMOUNT22,c.FID,b.fid,c.FEntryID,b.FEntryID,b.FCONTRACTNUMBER
-- ,c.FBILLNO3,c.FCONTRACTNUMBER2 FROM T_RefundWrireRecord a
--LEFT JOIN T_RefundWrireRecordEntry b ON a.FID=b.FID
--LEFT JOIN T_RefundWrireRecordEntry2 c ON a.FID=c.FID
--WHERE a.FDOCUMENTSTATUS='C'
DECLARE @type1 NVARCHAR(50),
@tuiKuanBill NVARCHAR(50);
-- 1. 声明游标
DECLARE TuiKuanRecord CURSOR FOR
SELECT F_YEWUDATE,
FID,
F_NOTE
FROM T_RefundWrireRecord
WHERE FDOCUMENTSTATUS = 'C'
--AND F_YEWUDATE >= @BeginDATE
ORDER BY F_YEWUDATE;
OPEN TuiKuanRecord;
FETCH NEXT FROM TuiKuanRecord
INTO @FDATE,
@ShouKuanFID,
@remark;
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @hexiao = 0;
---销售单或者收款单的退款记录--
SELECT @fid2 = 0,
@fid3 = 0;
DECLARE cursor_TuiKuanRecord1 CURSOR FOR
SELECT FTYPE,
FBILLNO2,
FALLAMOUNT22
FROM dbo.T_RefundWrireRecordEntry
WHERE FID = @ShouKuanFID;
OPEN cursor_TuiKuanRecord1;
FETCH NEXT FROM cursor_TuiKuanRecord1
INTO @type1,
@FBILLNO,
@hexiao;
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @tuiKuanBill = FBILLNO3,
@fid2 = FID
FROM T_RefundWrireRecordEntry2
WHERE FID = @ShouKuanFID;
IF (@type1 = '销售订单')
BEGIN
IF (
(
SELECT COUNT(1)FROM T_RefundWrireRecordEntry2 WHERE FID = @ShouKuanFID
) < 2
)
BEGIN
INSERT INTO [dbo].[ZZZ_HeXiaoBook]
(
[XiaoShouFid],
[XiaoShouBillNo],
[XiaoShouHeTong],
[ShouKuanFid],
[ShouKuanBillNo],
[ShouKuanFDate],
[BenCiHeXiao],
[FSaleOrgId],
Note,
NoteFid,
FExchangeRate,
FSettleCurrId,
FLOCALCURRID,
[ShouKuanType],
Remark
)
(SELECT a.FID,
a.FBILLNO,
a.F_CONTRACTNUMBER,
@fid2,
@tuiKuanBill,
@FDATE,
@hexiao,
a.FSALEORGID,
'销售退款记录单1V多',
@ShouKuanFID,
dd.FEXCHANGERATE,
FSETTLECURRID,
FLOCALCURRID,
3,
@remark
FROM T_SAL_ORDER a
LEFT JOIN T_SAL_ORDERFIN dd
ON a.FID = dd.FID
WHERE a.FBILLNO = @FBILLNO);
END;
ELSE
BEGIN
INSERT INTO [dbo].[ZZZ_HeXiaoBook]
(
[XiaoShouFid],
[XiaoShouBillNo],
[XiaoShouHeTong],
[ShouKuanFid],
[ShouKuanBillNo],
[ShouKuanFDate],
[BenCiHeXiao],
[FSaleOrgId],
Note,
NoteFid,
FExchangeRate,
FSettleCurrId,
FLOCALCURRID,
[ShouKuanType],
Remark
)
(SELECT a.FID,
a.FBILLNO,
a.F_CONTRACTNUMBER,
e.FID,
e.FBILLNO,
@FDATE,
c.FALLAMOUNT33,
a.FSALEORGID,
'销售退款记录单多V1',
@ShouKuanFID,
dd.FEXCHANGERATE,
FSETTLECURRID,
FLOCALCURRID,
3,
head.F_NOTE
FROM T_SAL_ORDER a
LEFT JOIN T_RefundWrireRecordEntry b
ON a.FBILLNO = b.FBILLNO2
LEFT JOIN T_RefundWrireRecordEntry2 c
ON b.FID = c.FID
LEFT JOIN T_SAL_ORDERFIN dd
ON a.FID = dd.FID
LEFT JOIN T_RefundWrireRecord head
ON b.FID = head.FID
LEFT JOIN T_AR_REFUNDBILL e
ON c.FBILLNO3 = e.FBILLNO
WHERE b.FID = @ShouKuanFID);
END;
END;
ELSE IF (@type1 = '收款单')
BEGIN
IF (
(
SELECT COUNT(1)FROM T_RefundWrireRecordEntry2 WHERE FID = @ShouKuanFID
) < 2
)
BEGIN
INSERT INTO [dbo].[ZZZ_HeXiaoBook]
(
[XiaoShouFid],
[XiaoShouBillNo],
[XiaoShouHeTong],
[ShouKuanFid],
[ShouKuanBillNo],
[ShouKuanFDate],
[BenCiHeXiao],
[FSaleOrgId],
Note,
NoteFid,
FExchangeRate,
FSettleCurrId,
FLOCALCURRID,
[ShouKuanType],
Remark
)
(SELECT a.FID,
a.FBILLNO,
a.F_CONTRACTNUMBER,
@ShouKuanFID,
@tuiKuanBill,
@FDATE,
@hexiao,
a.FSALEORGID,
'收款退款记录单1V多',
@ShouKuanFID,
a.FEXCHANGERATE,
FCURRENCYID,
FMAINBOOKCURID,
4,
@remark
FROM T_AR_RECEIVEBILL a
WHERE a.FBILLNO = @FBILLNO);
END;
ELSE
BEGIN
INSERT INTO [dbo].[ZZZ_HeXiaoBook]
(
[XiaoShouFid],
[XiaoShouBillNo],
[XiaoShouHeTong],
[ShouKuanFid],
[ShouKuanBillNo],
[ShouKuanFDate],
[BenCiHeXiao],
[FSaleOrgId],
Note,
NoteFid,
FExchangeRate,
FSettleCurrId,
FLOCALCURRID,
[ShouKuanType],
Remark
)
(SELECT a.FID,
a.FBILLNO,
a.F_CONTRACTNUMBER,
e.FID,
e.FBILLNO,
@FDATE,
c.FALLAMOUNT33,
a.FSALEORGID,
'收款退款记录单多V1',
@ShouKuanFID,
a.FEXCHANGERATE,
a.FCURRENCYID,
a.FMAINBOOKCURID,
4,
head.F_NOTE
FROM T_AR_RECEIVEBILL a
LEFT JOIN T_RefundWrireRecordEntry b
ON a.FBILLNO = b.FBILLNO2
LEFT JOIN T_RefundWrireRecordEntry2 c
ON b.FID = c.FID
LEFT JOIN T_RefundWrireRecord head
ON b.FID = head.FID
LEFT JOIN T_AR_REFUNDBILL e
ON c.FBILLNO3 = e.FBILLNO
WHERE b.FID = @ShouKuanFID);
END;
END;
-- 获取下一条记录
FETCH NEXT FROM cursor_TuiKuanRecord1
INTO @type1,
@FBILLNO,
@hexiao;
END;
-- 4. 关闭游标
CLOSE cursor_TuiKuanRecord1;
-- 5. 释放游标资源
DEALLOCATE cursor_TuiKuanRecord1;
-- 获取下一条记录
FETCH NEXT FROM TuiKuanRecord
INTO @FDATE,
@ShouKuanFID,
@remark;
END;
-- 4. 关闭游标
CLOSE TuiKuanRecord;
-- 5. 释放游标资源
DEALLOCATE TuiKuanRecord;
-----收款单已核销金额= 销售单核销-退款核销
UPDATE T_AR_RECEIVEBILL SET F_AMOUNT=F_AMOUNT+ISNULL(b.BenCiHeXiao,0),F_TUIKUAN_AMOUNT=ISNULL(b.BenCiHeXiao,0)
FROM (SELECT SUM(BenCiHeXiao*-1 ) BenCiHeXiao,XiaoShouBillNo FROM dbo.ZZZ_HeXiaoBook WHERE [ShouKuanType]=4
GROUP BY XiaoShouBillNo) b
WHERE T_AR_RECEIVEBILL.FBILLNO=b.XiaoShouBillNo AND FSALEORGID=100302 AND F_AMOUNT <> b.BenCiHeXiao AND T_AR_RECEIVEBILL.FBILLNO!=''
----销售单已核销金额=收款单核销+退款核销金额
UPDATE T_SAL_ORDER SET F_AMOUNT=F_AMOUNT+ISNULL(b.BenCiHeXiao,0),F_refundAmount=ISNULL(b.BenCiHeXiao,0)
FROM (SELECT SUM(BenCiHeXiao*1 ) BenCiHeXiao,XiaoShouBillNo FROM dbo.ZZZ_HeXiaoBook WHERE [ShouKuanType]=3
GROUP BY XiaoShouBillNo) b
WHERE T_SAL_ORDER.FBILLNO=b.XiaoShouBillNo AND FSALEORGID=100302 AND T_SAL_ORDER.FBILLNO!='';
---退款单核销金额=退款单核销金额
UPDATE T_AR_REFUNDBILL SET F_AMOUNT=ISNULL(b.BenCiHeXiao,0)
FROM (SELECT SUM(BenCiHeXiao *(-1)) BenCiHeXiao,ShouKuanBillNo FROM dbo.ZZZ_HeXiaoBook WHERE [ShouKuanType] IN (3,4)
GROUP BY ShouKuanBillNo) b
WHERE T_AR_REFUNDBILL.FBILLNO=b.ShouKuanBillNo AND FSALEORGID=100302 ;
--SELECT FVERIFYDATE,FBILLFORMID, FVERIFYSEQ,FSOURCETYPE,FCURWRITTENOFFAMOUNTFOR,FCURWRITTENOFFAMOUNT,FSRCBILLNO,b.FEXCHANGERATE,FCURTAXMATCHAMOUNT,FCURNOTAXMATCHAMOUNT ,FSRCBILLID,a.FMATCHMETHODID
--FROM T_AR_RECMacthLog a
--LEFT JOIN dbo.T_AR_RECMACTHLOGENTRY b ON a.FID=b.FID
--LEFT JOIN T_BAS_BILLTYPE c ON b.FSOURCETYPE=c.FBILLTYPEID
--WHERE a.FVERIFYSEQ =100135
END