This commit is contained in:
余宇波 2025-06-09 18:49:39 +08:00
parent 7d73c70907
commit 2448f50417
2 changed files with 120 additions and 61 deletions

View File

@ -157,7 +157,7 @@ SELECT A.FID [
,fin.FSettleCurrId [ID] ,fin.FSettleCurrId [ID]
, fin.FExchangeRate [] , fin.FExchangeRate []
, (SELECT TOP 1 FCreditAmount FROM T_CRE_CUSTARCHIVESENTRY aa LEFT JOIN T_BD_CUSTOMER bb ON aa.FObjectId=bb.FCUSTID , (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 [] ,Cccc.FNUMBER AS []
,0 [()],0 [()] ,0 [()],0 [()]
,ISNULL(a.F_expenses,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 ) AD ON AD.F_PaperNumber = A.F_contractnumber AND ad.FSALEORGID=a.FSALEORGID
LEFT JOIN 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 ON AB.F_PAPERCONTRACT = A.F_contractnumber AND AB.FSALEORGID=a.FSaleOrgId
WHERE ( ( A.FSALEORGID = 100302 WHERE ( ( A.FSALEORGID = 100302
@ -279,7 +279,7 @@ update [ZRP_YingShouMingXi_yuyubo] set
,[]=[]*[]*0.01 ,[]=[]*[]*0.01
,[]=[]*[]*0.01 ,[]=[]*[]*0.01
,[]=ISNULL([],100) ,[]=ISNULL([],100)
,[]=[]*[]*0.01*ISNULL([],100)*0.01 ,[]=[]*[]*0.01
--UPDATE [ZRP_YingShouMingXi_yuyubo] set []=[]; --UPDATE [ZRP_YingShouMingXi_yuyubo] set []=[];
UPDATE [ZRP_YingShouMingXi_yuyubo] set UPDATE [ZRP_YingShouMingXi_yuyubo] set
[]=CASE WHEN []>0 then ABS([])-ABS(([退]+[])*[]*0.01) +[] ELSE 0 end []=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 '验收完成' ,[]= CASE WHEN []>='1990-01-01' AND [] IS NOT NULL THEN '验收完成'
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([],'') <> '' 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 ( SELECT sum(a.) [] , INTO #temp2 FROM (

View File

@ -3,72 +3,129 @@ IF OBJECT_ID('dbo.[PR_ResetSALORDERPLAN_MBBA_yuyubo]', 'P') IS NOT NULL
BEGIN BEGIN
DROP PROCEDURE dbo.PR_ResetSALORDERPLAN_MBBA_yuyubo; DROP PROCEDURE dbo.PR_ResetSALORDERPLAN_MBBA_yuyubo;
PRINT '存储过程 dbo.[PR_ResetSALORDERPLAN_MBBA_yuyubo] 已删除'; PRINT '存储过程 dbo.[PR_ResetSALORDERPLAN_MBBA_yuyubo] 已删除';
END END;
GO GO
-- 创建新的存储过程 -- 创建新的存储过程
CREATE PROCEDURE dbo.PR_ResetSALORDERPLAN_MBBA_yuyubo CREATE PROCEDURE dbo.PR_ResetSALORDERPLAN_MBBA_yuyubo @saleOrderId INT = 0
@saleOrderId INT=0
AS AS
BEGIN BEGIN
-- 1. 声明游标 -- 1. 声明游标
DECLARE cursor_name CURSOR DECLARE cursor_name CURSOR FOR
FOR SELECT a.F_AMOUNT,
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 b.F_MBBA_DECIMAL_UKY,
FROM dbo.T_SAL_ORDER a WITH(NOLOCK) LEFT JOIN dbo.T_SAL_ORDERPLAN b WITH(NOLOCK) ON a.FID=b.FID a.FBILLNO,
INNER JOIN (SELECT DISTINCT [ID],[退],[] from [ZRP_YingShouMingXi_yuyubo] WHERE []>0) cc ON [ID]=a.FID a.FSALEORGID,
WHERE (ISNULL(a.F_Amount,0) > 0 AND []-ISNULL(a.F_Amount,0) -[退]>0) AND (a.FID=@saleOrderId OR @saleOrderId=0) a.F_CONTRACTNUMBER,
AND b.F_MBBA_DECIMAL_UKY<a.F_Amount a.FID,
ORDER BY a.fid,wfid 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 < a.F_AMOUNT
OR a.FID = @saleOrderId
ORDER BY a.FID,
wfid;
-- 2. 打开游标 -- 2. 打开游标
OPEN cursor_name; OPEN cursor_name;
DECLARE @rowId INT=0,@amount DECIMAL(18,4)=0 DECLARE @rowId INT = 0,
-- 3. 循环获取数据 @amount DECIMAL(18, 4) = 0;
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) ; -- 3. 循环获取数据
FETCH NEXT FROM cursor_name INTO @F_AMOUNT, @F_MBBA_Decimal_uky,@FBILLNO,@FSALEORGID,@F_contractnumber,@fid,@wfid,@FRecAdvanceAmount,@F_EXPENSES; 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 WHILE @@FETCH_STATUS = 0
BEGIN BEGIN
-- 数据处理逻辑(示例输出) -- 数据处理逻辑(示例输出)
--PRINT 'Column1: ' + CAST(@var1 AS VARCHAR) + ', Column2: ' + @var2; --PRINT 'Column1: ' + CAST(@var1 AS VARCHAR) + ', Column2: ' + @var2;
-- 处理收款核销金额 -- 处理收款核销金额
IF(@rowId !=@fid) IF (@rowId != @fid)
BEGIN BEGIN
SELECT @rowId=@fid,@amount=@F_AMOUNT-@F_EXPENSES; SELECT @rowId = @fid,
END @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; END;
-- 4. 关闭游标
CLOSE cursor_name;
-- 5. 释放游标资源
DEALLOCATE cursor_name;
END
--EXEC dbo.PR_ResetSALORDERPLAN_MBBA_yuyubo @saleOrderId = 0 -- int --EXEC dbo.PR_ResetSALORDERPLAN_MBBA_yuyubo @saleOrderId = 0 -- int
--UPDATE T_SAL_ORDERPLAN SET F_MBBA_Decimal_uky=0 --UPDATE T_SAL_ORDERPLAN SET F_MBBA_Decimal_uky=0