-- 检查存储过程是否存在,存在则删除 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.FALLAMOUNT220) 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