320 lines
12 KiB
Transact-SQL
320 lines
12 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='2024-01-01'
|
|
AS
|
|
BEGIN
|
|
|
|
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;
|
|
SELECT @fid2=FID FROM dbo.T_AutoWrireRecordEntry2 WHERE FBILLNO3=@FBILLNO
|
|
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
|
|
------发货通知单的核销记录单--------------
|
|
SELECT @fid2=0,@fid3=0,@F_contractnumber='',@amount=0;
|
|
SELECT @fid2=FID FROM dbo.VRYF_t_Cust_Entry100025 WHERE FBILLNO3=@FBILLNO
|
|
|
|
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
|
|
-----应收核销记录表---------
|
|
SELECT @fid2=0,@fid3=0,@F_contractnumber='',@amount=0;
|
|
SELECT d.FDATE,FBILLFORMID, FVERIFYSEQ,FSOURCETYPE,FCURWRITTENOFFAMOUNTFOR,FCURWRITTENOFFAMOUNT,FSRCBILLNO,b.FEXCHANGERATE,FCURTAXMATCHAMOUNT,FCURNOTAXMATCHAMOUNT ,FSRCBILLID
|
|
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')
|
|
--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;
|
|
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,FALLAMOUNTFOR_D,@FSALEORGID,'应收核销记录表',@fid3
|
|
,dd.FEXCHANGERATE,FSettleCurrId,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.F_PAPER ,c.FID,SUM(ak.FALLAMOUNTFOR) FALLAMOUNTFOR_D FROM T_AR_receivable c
|
|
LEFT JOIN T_AR_RECEIVABLEENTRY ak ON c.FID=ak.FID
|
|
GROUP BY c.FSALEORGID,ak.F_PAPER ,c.FID
|
|
) c
|
|
ON c.F_PAPER=a.F_CONTRACTNUMBER AND c.FSALEORGID=a.FSALEORGID
|
|
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
|
|
SELECT @fid2=FSRCBILLID,@fid3=FVERIFYSEQ,@hexiao=FCURWRITTENOFFAMOUNTFOR 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,@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,@FDATE,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 )
|
|
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
|
|
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'
|
|
)
|
|
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,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.F_PAPER ,c.FID,SUM(ak.FALLAMOUNTFOR) FALLAMOUNTFOR_D FROM T_AR_receivable c
|
|
LEFT JOIN T_AR_RECEIVABLEENTRY ak ON c.FID=ak.FID
|
|
GROUP BY c.FSALEORGID,ak.F_PAPER ,c.FID
|
|
) c
|
|
ON c.F_PAPER=a.F_CONTRACTNUMBER AND c.FSALEORGID=a.FSALEORGID
|
|
INNER JOIN #temp222 d ON d.FSRCBILLID=c.fid AND d.FBILLFORMID ='AR_receivable'
|
|
WHERE d.FBILLFORMID='AR_receivable' AND a.FDOCUMENTSTATUS='C'
|
|
)
|
|
DROP TABLE #temp222
|
|
|
|
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
|
|
|
|
|
|
|
|
--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
|
|
|