From 2448f504179d6acdfb1c547a00f69d74ddfc93e1 Mon Sep 17 00:00:00 2001 From: yuyubo <1870149533@qq.com> Date: Mon, 9 Jun 2025 18:49:39 +0800 Subject: [PATCH] 11 --- 应收明细SQL.sql | 10 +- 重置收款计划的已核销金额字段.sql | 171 ++++++++++++++++++++----------- 2 files changed, 120 insertions(+), 61 deletions(-) diff --git a/应收明细SQL.sql b/应收明细SQL.sql index 753a887..74fae51 100644 --- a/应收明细SQL.sql +++ b/应收明细SQL.sql @@ -157,7 +157,7 @@ SELECT A.FID [ ,fin.FSettleCurrId [ұID] , fin.FExchangeRate [] , (SELECT TOP 1 FCreditAmount FROM T_CRE_CUSTARCHIVESENTRY aa LEFT JOIN T_BD_CUSTOMER bb ON aa.FObjectId=bb.FCUSTID -WHERE aa.FCreditStatus='A' AND aa.FRowAuditStatus='A' AND bb.FNUMBER=Cccc.FNUMBER ORDER BY aa.FExpiryDate desc) [ͻö] +WHERE aa.FCreditStatus='A' AND aa.FRowAuditStatus='A' AND bb.FNUMBER=Cccc.FNUMBER ORDER BY aa.FExpiryDate DESC) [ͻö] ,Cccc.FNUMBER AS [ͻ] ,0 [ۼƵ(ԭ)],0 [Ӧտϼ(ԭ)] ,ISNULL(a.F_expenses,0) [ӷ] @@ -226,7 +226,7 @@ GROUP BY F_PaperNumber, FSALEORGID ) AD ON AD.F_PaperNumber = A.F_contractnumber AND ad.FSALEORGID=a.FSALEORGID LEFT JOIN - (SELECT distinct F_Papercontract,FSALEORGID FROM T_SAL_DELIVERYNOTICE WITH(NOLOCK) WHERE F_SFYFH ='') AB + (SELECT DISTINCT F_Papercontract,FSALEORGID FROM T_SAL_DELIVERYNOTICE WITH(NOLOCK) WHERE F_SFYFH ='') AB ON AB.F_PAPERCONTRACT = A.F_contractnumber AND AB.FSALEORGID=a.FSaleOrgId WHERE ( ( A.FSALEORGID = 100302 @@ -279,7 +279,7 @@ update [ZRP_YingShouMingXi_yuyubo] set ,[ۼƿƱ]=[ۼƿƱ]*[̯]*0.01 ,[ۼƵ]=[ۼƵ]*[̯]*0.01 ,[տ̯]=ISNULL([տ̯],100) -,[ӷ]=[ӷ]*[̯]*0.01*ISNULL([տ̯],100)*0.01 +,[ӷ]=[ӷ]*[̯]*0.01 --UPDATE [ZRP_YingShouMingXi_yuyubo] set [̯]=[ܶ]; UPDATE [ZRP_YingShouMingXi_yuyubo] set [Ӧտϼ]=CASE WHEN [ܶ]>0 then ABS([ܶ])-ABS(([ۼ˻]+[ۼƵ])*[̯]*0.01) +[ӷ] ELSE 0 end @@ -295,7 +295,9 @@ UPDATE [ZRP_YingShouMingXi_yuyubo] set ,[Ŀ׶]= CASE WHEN [Ŀʱ]>='1990-01-01' AND [Ŀʱ] IS NOT NULL THEN '' WHEN [Ŀʱ]>='1990-01-01' AND [Ŀʱ] IS NOT NULL THEN '' WHEN ISNULL([Ŀ],'') <> '' THEN [Ŀ] WHEN ISNULL([ۼƷ],0) = 0 THEN 'δ' -WHEN ISNULL( [ۼƷ],0) = ISNULL([ܶ],0) THEN '' WHEN ISNULL([ܶ],0) > ISNULL( [ۼƷ],0) THEN '' END ; +WHEN ISNULL( [ۼƷ],0) = ISNULL([ܶ],0) THEN '' WHEN ISNULL([ܶ],0) > ISNULL( [ۼƷ],0) THEN '' END +,[ӷ]=[ӷ]*ISNULL([տ̯],100)*0.01 +; SELECT sum(a.ʵѳӦտϼ) [ʵѳӦտϼ] ,ͻ INTO #temp2 FROM ( diff --git a/重置收款计划的已核销金额字段.sql b/重置收款计划的已核销金额字段.sql index 0f78b29..d76f4b1 100644 --- a/重置收款计划的已核销金额字段.sql +++ b/重置收款计划的已核销金额字段.sql @@ -3,72 +3,129 @@ IF OBJECT_ID('dbo.[PR_ResetSALORDERPLAN_MBBA_yuyubo]', 'P') IS NOT NULL BEGIN DROP PROCEDURE dbo.PR_ResetSALORDERPLAN_MBBA_yuyubo; PRINT '洢 dbo.[PR_ResetSALORDERPLAN_MBBA_yuyubo] ɾ'; -END +END; GO -- µĴ洢 -CREATE PROCEDURE dbo.PR_ResetSALORDERPLAN_MBBA_yuyubo -@saleOrderId INT=0 -AS -BEGIN --- 1. α -DECLARE cursor_name CURSOR -FOR -SELECT a.F_Amount,b.F_MBBA_Decimal_uky,a.FBILLNO,a.FSALEORGID,a.F_contractnumber,a.fid,b.FENTRYID AS wfid ,b.FRECADVANCEAMOUNT,a.F_EXPENSES -FROM dbo.T_SAL_ORDER a WITH(NOLOCK) LEFT JOIN dbo.T_SAL_ORDERPLAN b WITH(NOLOCK) ON a.FID=b.FID -INNER JOIN (SELECT DISTINCT [۵ID],[ۼ˻],[ܶ] from [ZRP_YingShouMingXi_yuyubo] WHERE [ܶ]>0) cc ON [۵ID]=a.FID -WHERE (ISNULL(a.F_Amount,0) > 0 AND [ܶ]-ISNULL(a.F_Amount,0) -[ۼ˻]>0) AND (a.FID=@saleOrderId OR @saleOrderId=0) -AND b.F_MBBA_DECIMAL_UKY 0 + ) cc + ON [۵ID] = a.FID + WHERE ( + ISNULL(a.F_AMOUNT, 0) > 0 + AND [ܶ] - ISNULL(a.F_AMOUNT, 0) - [ۼ˻] > 0 + ) + AND + ( + a.FID = @saleOrderId + OR @saleOrderId = 0 + ) + AND b.F_MBBA_DECIMAL_UKY < a.F_AMOUNT + OR a.FID = @saleOrderId + ORDER BY a.FID, + wfid; + + -- 2. α + OPEN cursor_name; + DECLARE @rowId INT = 0, + @amount DECIMAL(18, 4) = 0; + -- 3. ѭȡ + DECLARE @F_AMOUNT DECIMAL(18, 2), + @F_MBBA_Decimal_uky DECIMAL(18, 2), + @FBILLNO NVARCHAR(200), + @FSALEORGID INT, + @F_contractnumber NVARCHAR(500), + @fid INT, + @wfid INT, + @FRecAdvanceAmount DECIMAL(18, 2), + @F_EXPENSES DECIMAL(18, 6); + FETCH NEXT FROM cursor_name + INTO @F_AMOUNT, + @F_MBBA_Decimal_uky, + @FBILLNO, + @FSALEORGID, + @F_contractnumber, + @fid, + @wfid, + @FRecAdvanceAmount, + @F_EXPENSES; + + WHILE @@FETCH_STATUS = 0 + BEGIN + -- ݴ߼ʾ + --PRINT 'Column1: ' + CAST(@var1 AS VARCHAR) + ', Column2: ' + @var2; + -- տ + IF (@rowId != @fid) + BEGIN + SELECT @rowId = @fid, + @amount = @F_AMOUNT - @F_EXPENSES; + END; + + IF (@amount >= @FRecAdvanceAmount) + BEGIN + UPDATE T_SAL_ORDERPLAN + SET F_MBBA_DECIMAL_UKY = @FRecAdvanceAmount + WHERE FENTRYID = @wfid; + SELECT @amount = @amount - @FRecAdvanceAmount; + END; + ELSE + BEGIN + IF (@amount >= 0) + BEGIN + UPDATE T_SAL_ORDERPLAN + SET F_MBBA_DECIMAL_UKY = @amount + WHERE FENTRYID = @wfid; + SELECT @amount = 0; + END; + END; + + -- ȡһ¼ + FETCH NEXT FROM cursor_name + INTO @F_AMOUNT, + @F_MBBA_Decimal_uky, + @FBILLNO, + @FSALEORGID, + @F_contractnumber, + @fid, + @wfid, + @FRecAdvanceAmount, + @F_EXPENSES; + END; + + -- 4. رα + CLOSE cursor_name; + + -- 5. ͷαԴ + DEALLOCATE cursor_name; - IF(@amount>=@FRecAdvanceAmount) - BEGIN - UPDATE T_SAL_ORDERPLAN SET F_MBBA_Decimal_uky=@FRecAdvanceAmount - WHERE FENTRYID=@wfid; - SELECT @amount=@amount-@FRecAdvanceAmount; - END - ELSE - BEGIN - IF(@amount>0) - BEGIN - UPDATE T_SAL_ORDERPLAN SET F_MBBA_Decimal_uky=@amount - WHERE FENTRYID=@wfid; - SELECT @amount=0; - END - END - -- ȡһ¼ - FETCH NEXT FROM cursor_name INTO @F_AMOUNT, @F_MBBA_Decimal_uky,@FBILLNO,@FSALEORGID,@F_contractnumber,@fid,@wfid,@FRecAdvanceAmount,@F_EXPENSES; END; --- 4. رα -CLOSE cursor_name; - --- 5. ͷαԴ -DEALLOCATE cursor_name; - - -END - --EXEC dbo.PR_ResetSALORDERPLAN_MBBA_yuyubo @saleOrderId = 0 -- int - --UPDATE T_SAL_ORDERPLAN SET F_MBBA_Decimal_uky=0 \ No newline at end of file +--UPDATE T_SAL_ORDERPLAN SET F_MBBA_Decimal_uky=0 \ No newline at end of file