180 lines
7.0 KiB
Transact-SQL
180 lines
7.0 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='2025-01-01'
|
|
AS
|
|
BEGIN
|
|
|
|
DELETE [ZZZ_HeXiaoBook] WHERE [ShouKuanFDate]>=@BeginDATE
|
|
|
|
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);
|
|
-- 1. 声明游标
|
|
DECLARE cursor_name2 CURSOR FOR
|
|
SELECT FDATE,FBILLNO,FID,FSALEORGID,F_contractnumber 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
|
|
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;
|
|
INSERT INTO [dbo].[ZZZ_HeXiaoBook]
|
|
([XiaoShouFid]
|
|
,[XiaoShouBillNo]
|
|
,[XiaoShouHeTong]
|
|
,[ShouKuanFid]
|
|
,[ShouKuanBillNo]
|
|
,[ShouKuanFDate]
|
|
,[BenCiHeXiao]
|
|
,[FSaleOrgId],Note,NoteFid,FExchangeRate,FSettleCurrId,FLOCALCURRID,[ShouKuanType])
|
|
( SELECT a.fid,a.FBILLNO,a.F_CONTRACTNUMBER,@ShouKuanFID,@FBILLNO,@FDATE
|
|
,(CASE WHEN b.FALLAMOUNT22<c.FALLAMOUNT33 THEN b.FALLAMOUNT22 ELSE c.FALLAMOUNT33 END)
|
|
,@FSALEORGID,'销售的自动核销记录单',@fid2,dd.FExchangeRate,FSettleCurrId,FLocalCurrId,0 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
|
|
WHERE b.FID=@fid2 AND c.FBILLNO3=@FBILLNO )
|
|
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])
|
|
( SELECT a.fid,a.FBILLNO,a.F_CONTRACTNUMBER,@ShouKuanFID,@FBILLNO,@FDATE,@amount,@FSALEORGID,'发货通知单的核销记录单',@fid2, dd.FExchangeRate,FSettleCurrId,FLOCALCURRID,0 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])
|
|
( SELECT a.fid,a.FBILLNO,a.F_CONTRACTNUMBER,@ShouKuanFID,@FBILLNO,@FDATE,d.FCURWRITTENOFFAMOUNTFOR,@FSALEORGID,'应收核销记录表',@fid3
|
|
,dd.FEXCHANGERATE,FSettleCurrId,FLOCALCURRID,0
|
|
FROM T_SAL_ORDER a
|
|
LEFT JOIN T_SAL_ORDERFIN dd ON a.FID=dd.FID
|
|
LEFT JOIN T_AR_receivable c ON c.F_PAPERPRO=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
|
|
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])
|
|
( SELECT aa.fid,aa.FBILLNO,aa.F_CONTRACTNUMBER,@ShouKuanFID,@FBILLNO,@FDATE,b.FREALRECAMOUNT,@FSALEORGID,'收款单来源明细',@fid2
|
|
,dd.FEXCHANGERATE,FSettleCurrId,FLOCALCURRID,0
|
|
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])
|
|
( SELECT a.fid,a.FBILLNO,a.F_CONTRACTNUMBER,@ShouKuanFID,@FBILLNO,@FDATE,F_shareAmount,@FSALEORGID,'历史核销记录单',c.FEntryID ,dd.FEXCHANGERATE,FSettleCurrId,FLOCALCURRID,0 FROM T_SAL_ORDER a
|
|
LEFT 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=[FSaleOrgId] AND F_matched=1 AND c.F_Receiptnumber=@FBILLNO )
|
|
END
|
|
|
|
-- 获取下一条记录
|
|
FETCH NEXT FROM cursor_name2
|
|
INTO @FDATE,
|
|
@FBILLNO,
|
|
@ShouKuanFID,
|
|
@FSALEORGID,
|
|
@F_contractnumber;
|
|
END
|
|
|
|
-- 4. 关闭游标
|
|
CLOSE cursor_name2;
|
|
|
|
-- 5. 释放游标资源
|
|
DEALLOCATE cursor_name2;
|
|
END |