136 lines
5.0 KiB
Plaintext
Raw Normal View History

2025-07-17 19:24:39 +08:00
2025-08-04 09:45:55 +08:00
UPDATE [oldk3seorder0714] SET [专票金额1]=NULL,[普票金额1]=NULL;
2025-07-17 19:24:39 +08:00
--TRUNCATE TABLE [ZZZ_ZZ_FaPiaoLosed];
DECLARE @FDATE DATETIME,@FSourceBillNo NVARCHAR(200),@FSourceTranType INT,@FSourceInterId INT ,@F_contractnumber NVARCHAR(2000)
,@F_contractnumber2 NVARCHAR(2000),@F_contractnumber3 NVARCHAR(2000),@F_contractnumber4 NVARCHAR(2000),@FOrderInterID INT,@FOrderEntryID INT,@frob INT,@FNumber NVARCHAR(200),@FAuxQty DECIMAL(18,2)
,@amount DECIMAL(18,2),@hexiao DECIMAL(18,2),@FTranType INT,@saleBill NVARCHAR(200),@ifok INT=0,@id INT,@fid1 INT ,@fid2 INT,@row INT=0,@row2 INT=0,@row3 INT=0,@id2 INT
,@zhuanPiao DECIMAL(18,2),@PuPiao DECIMAL(18,2),@qty INT ;
-- 1. 声明游标
DECLARE cursor_name2 CURSOR FOR
SELECT b.FNumber,FAuxQty [数量]
,a.FStdAmountIncludeTax [价税合计(本位币)]
,aa.FHeadSelfI0456 [合同号]
,frob,aa.FTranType,ddd.[FInterID] ,ddd.[FEntryID]
FROM k3.AIS20130323140156.dbo.icsaleentry a
LEFT JOIN k3.AIS20130323140156.dbo.icsale aa ON a.FInterID=aa.FInterID
LEFT JOIN k3.AIS20130323140156.dbo.t_icitem b ON a.FItemID=b.FItemID
INNER JOIN [AIS2025].[dbo].[ZZZ_ZZ_FaPiaoLosed] ddd ON a.FInterID=ddd.[FInterID] AND a.[FEntryID]=ddd.[FEntryID]
2025-08-04 09:45:55 +08:00
INNER JOIN (SELECT DISTINCT 合同号 FROM [AIS20250707104732].[dbo].[oldk3seorder0714]) vv ON aa.FHeadSelfI0456=vv.合同号 -- AND vv.物料编码= b.FNumber
2025-07-17 19:24:39 +08:00
WHERE a.FStdAmountIncludeTax !=0
ORDER BY a.FInterID,b.FNumber
OPEN cursor_name2;
FETCH NEXT FROM cursor_name2
INTO @FNumber,@FAuxQty,@amount,@F_contractnumber
,@frob,@FTranType,@fid1,@fid2
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @row=@row+1,@row2=0;
SELECT @ifok=0,@id=0;
DECLARE cursor_name3 CURSOR FOR
2025-08-04 09:45:55 +08:00
SELECT [id],[合同号],[数量],[专票金额],[普票金额] FROM [oldk3seorder0714] WHERE [合同号]=@F_contractnumber AND [物料编码]=@FNumber
2025-07-17 19:24:39 +08:00
OPEN cursor_name3;
FETCH NEXT FROM cursor_name3
INTO @id2 ,@F_contractnumber,@qty,@zhuanPiao,@PuPiao
WHILE @@FETCH_STATUS = 0
BEGIN
SET @row2=@row2+1;
PRINT CONCAT('id=',@id2,' 第几行: ',@row,' FInterID: ',@fid1,' FEntryID: ',@fid2,' [价税合计(本位币)] ',@amount);
2025-08-04 09:45:55 +08:00
SELECT @row3=COUNT(1) FROM [oldk3seorder0714] WHERE [合同号]=@F_contractnumber AND [物料编码]=@FNumber
2025-07-17 19:24:39 +08:00
PRINT CONCAT('update id=',@id2,' @row2= ',@row2,' @row3=',@row3,' FTranType: ',@FTranType,' @zhuanPiao: ',@zhuanPiao,' @PuPiao ',@PuPiao ,' [价税合计(本位币)] ',@amount);
IF(@amount>0)
BEGIN
-- @FTranType 80 专票 86 普票 602 专票 601 普票
IF(@FTranType IN (80,602) AND @id>0)
BEGIN
2025-08-04 09:45:55 +08:00
UPDATE [oldk3seorder0714] SET [专票金额1]=ISNULL([专票金额1],0)+ @amount
2025-07-17 19:24:39 +08:00
WHERE id=@id2
end
IF(@FTranType IN (86,601) AND @id>0)
BEGIN
2025-08-04 09:45:55 +08:00
UPDATE [oldk3seorder0714] SET [普票金额1]=ISNULL([专票金额1],0)+ @amount
2025-07-17 19:24:39 +08:00
WHERE id=@id2
end
SELECT @amount=0;
END
ELSE IF(@amount<0)
BEGIN
IF(@row2<@row3)
BEGIN
-- @FTranType 80 专票 86 普票 602 专票 601 普票
IF(@FTranType IN (80,602) )
BEGIN
IF(ABS(@amount)>= ABS(@zhuanPiao))
begin
SELECT @amount=@amount+ABS(@zhuanPiao)
2025-08-04 09:45:55 +08:00
UPDATE [oldk3seorder0714] SET [专票金额1]=ISNULL([专票金额1],0) -ABS(@zhuanPiao)
2025-07-17 19:24:39 +08:00
WHERE id=@id2;
END
ELSE
begin
2025-08-04 09:45:55 +08:00
UPDATE [oldk3seorder0714] SET [专票金额1]=ISNULL([专票金额1],0)+ @amount
2025-07-17 19:24:39 +08:00
WHERE id=@id2;
end
end
IF(@FTranType IN (86,601) )
BEGIN
IF(ABS(@amount)>= ABS(@PuPiao))
BEGIN
SELECT @amount=@amount+ABS(@PuPiao)
2025-08-04 09:45:55 +08:00
UPDATE [oldk3seorder0714] SET [普票金额1]=ISNULL([普票金额1],0) -ABS(@PuPiao)
2025-07-17 19:24:39 +08:00
WHERE id=@id2
END
ELSE
begin
2025-08-04 09:45:55 +08:00
UPDATE [oldk3seorder0714] SET [普票金额1]=ISNULL([普票金额1],0)+ @amount
2025-07-17 19:24:39 +08:00
WHERE id=@id2
end
end
end
IF(@row2=@row3)
BEGIN
-- @FTranType 80 专票 86 普票 602 专票 601 普票
IF(@FTranType IN (80,602) )
BEGIN
2025-08-04 09:45:55 +08:00
UPDATE [oldk3seorder0714] SET [专票金额1]=ISNULL([专票金额1],0)+@amount
2025-07-17 19:24:39 +08:00
WHERE id=@id2
end
IF(@FTranType IN (86,601) )
BEGIN
2025-08-04 09:45:55 +08:00
UPDATE [oldk3seorder0714] SET [普票金额1]=ISNULL([普票金额1],0)+@amount
2025-07-17 19:24:39 +08:00
WHERE id=@id2
end
end
end
-- 获取下一条记录
FETCH NEXT FROM cursor_name3
INTO @id2 ,@F_contractnumber,@qty,@zhuanPiao,@PuPiao;
END
-- 4. 关闭游标
CLOSE cursor_name3;
-- 5. 释放游标资源
DEALLOCATE cursor_name3;
-- 获取下一条记录
FETCH NEXT FROM cursor_name2
INTO @FNumber,@FAuxQty,@amount,@F_contractnumber
,@frob,@FTranType,@fid1,@fid2;
END
-- 4. 关闭游标
CLOSE cursor_name2;
-- 5. 释放游标资源
DEALLOCATE cursor_name2;