Piolot_RepotForm_PeiHao/非C#代码文件/刷K3发票金额SQL.sql
2025-08-04 09:45:55 +08:00

73 lines
3.2 KiB
Transact-SQL

--UPDATE [oldk3seorder0701] SET 专票金额=0,[普票金额]=0;
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;
-- 1. 声明游标
DECLARE cursor_name2 CURSOR FOR
SELECT a.FInterID,a.FEntryID,a.FSourceTranType,a.FSourceInterId,a.FOrderInterID,a.FOrderEntryID,c.FBillNo AS [销售单号], b.FNumber,FAuxQty [数量]
-- ,a.FTaxPrice [含税价]
--,a.FStdAmount [金额(本位币)]
,a.FStdAmountIncludeTax [价税合计(本位币)]
--,a.FStdTaxAmount [税额(本位币)]
,aa.FHeadSelfI0553
,aa.FHeadSelfI0456
,c.FHeadSelfS01108,c.FHeadSelfS0171
,aa.FDate
,frob,aa.FTranType --,aa.FBillNo,a.FInterID,a.FEntryID,a.FSourceBillNo,FHeadSelfS0172
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
LEFT JOIN k3.AIS20130323140156.dbo.SEOrder c ON a.FOrderInterID=c.FInterID
--WHERE FTranType NOT IN (80,86)
--WHERE c.FBillNo='S110301-ZWH01'
ORDER BY a.FInterID,a.FEntryID
OPEN cursor_name2;
FETCH NEXT FROM cursor_name2
INTO @fid1,@fid2,@FSourceTranType, @FSourceInterId,@FOrderInterID,@FOrderEntryID,@saleBill,@FNumber,@FAuxQty,@amount,@F_contractnumber,@F_contractnumber2,@F_contractnumber3,@F_contractnumber4
,@FDATE,@frob,@FTranType
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @row=@row+1;
SELECT @ifok=0,@id=0;
IF(@saleBill IS NOT NULL AND @saleBill !='')
BEGIN
SELECT @ifok=1;
SELECT @id=id FROM [oldk3seorder0701] WHERE @saleBill=[单据编码] AND [内码]=@FOrderInterID AND [行号]=@FOrderEntryID;
END
ELSE IF(@F_contractnumber2 IS NOT NULL AND @F_contractnumber2 !='')
BEGIN
SELECT @ifok=2;
SELECT @id=id FROM [oldk3seorder0701] WHERE @F_contractnumber2=[合同号] AND @FNumber=[物料编码] AND @FAuxQty=[数量];
END
PRINT CONCAT('id=',@id,' 第几行: ',@row,' FInterID: ',@fid1,' FEntryID: ',@fid2,' [价税合计(本位币)] ',@amount);
IF(@id=0)
BEGIN
INSERT INTO [dbo].[ZZZ_ZZ_FaPiaoLosed] ([FInterID] ,[FEntryID])
VALUES (@fid1 ,@fid2)
END
-- @FTranType 80 专票 86 普票 602 专票 601 普票
IF(@FTranType IN (80,602) AND @id>0)
BEGIN
UPDATE [oldk3seorder0701] SET [专票金额]=ISNULL([专票金额],0)+@amount
WHERE id=@id
end
IF(@FTranType IN (86,601) AND @id>0)
BEGIN
UPDATE [oldk3seorder0701] SET [普票金额]=ISNULL([普票金额],0)+@amount
WHERE id=@id
end
-- 获取下一条记录
FETCH NEXT FROM cursor_name2
INTO @fid1,@fid2,@FSourceTranType, @FSourceInterId,@FOrderInterID,@FOrderEntryID,@saleBill,@FNumber,@FAuxQty,@amount,@F_contractnumber,@F_contractnumber2,@F_contractnumber3,@F_contractnumber4
,@FDATE,@frob,@FTranType;
END
-- 4. 关闭游标
CLOSE cursor_name2;
-- 5. 释放游标资源
DEALLOCATE cursor_name2;