管家婆分销ERPV3A8本币科目余额表和凭证明细数据不平衡,不能结账!
---------------------------以报告形式展现信息的判断处理----------------------------------------------------------
IF @sys_assets = 1
BEGIN
INSERT INTO #TmpInfo( ContentText, Detail )
SELECT BillCode,2
FROM dbo.BillIndex T1
JOIN @tempStype s ON T1.Stypeid=s.typeid
WHERE BillDate >= @AssetStart AND BillDate <= @AssetEnd AND BillType IN (212,213,214) AND T1.draft=1
INSERT INTO #TmpInfo(ContentText, Detail)
SELECT TOP 1 '存在固定资产业务单据未过账',1
FROM #TmpInfo
WHERE Detail = 2
IF @IsAc = 1
BEGIN
INSERT INTO #TmpInfo( ContentText, Detail )
SELECT BillCode,4
FROM dbo.BillIndex T1
JOIN @tempStype s ON T1.Stypeid=s.typeid
WHERE BillDate >= @AssetStart AND BillDate <= @AssetEnd AND BillType IN (212,213,214) AND Isini = 0
AND NOT EXISTS (SELECT GoodsBillId FROM dbo.Ac_GoodsBill_VoucherBill WHERE GoodsBillId = T1.BillNumberId)
AND BillType IN (212,213,214) AND RedWord=0 --减少单,增加单,折旧单,排除红蓝单
UNION ALL
SELECT aa.FullName+'【减值准备】',4 --减值准备
FROM Ac_ProvisionForImpairment ap
JOIN Ac_AssetsCards aa ON ap.cardid=aa.Id
JOIN @tempStype s ON aa.stypeid=s.typeid
WHERE ap.BusinessDate>= @AssetStart AND ap.BusinessDate <= @AssetEnd
AND ap.id NOT IN (SELECT SourceId FROM Ac_Provision_Voucher WHERE SourceType=1)
UNION ALL
SELECT aa.FullName+'【部门变更】',4 --部门变更
FROM Ac_Assetsmodifyrecords ap
JOIN Ac_AssetsCards aa ON ap.cardid=aa.Id
JOIN @tempStype s ON aa.stypeid=s.typeid
WHERE ap.BusinessDate>= @AssetStart AND ap.BusinessDate <= @AssetEnd
AND ap.id NOT IN (SELECT SourceId FROM Ac_Provision_Voucher WHERE SourceType=2)
INSERT INTO #TmpInfo(ContentText, Detail)
SELECT TOP 1 '存在固定资产业务单据未生成凭证',3
FROM #TmpInfo
WHERE Detail = 4
END
END
IF @IsAc = 1
BEGIN
IF EXISTS(SELECT TOP 1 1 FROM dbo.sysdata WHERE SubName = 'aloneusebsys' AND SubValue = 0) --校验时间段内业务单据
BEGIN
INSERT INTO #TmpInfo( ContentText, Detail )
SELECT BillCode,6
FROM dbo.BillIndex T1
INNER JOIN @tempStype S ON S.typeid = T1.Stypeid
WHERE BillDate >= @FBeginDate AND BillDate <= @FEndDate
AND (BillType IN (11,45,160,305,139,140,142,141,34,6,161,126,144,146,145,21,187,188,201,202,9,14,16,116,115,128,129,4,189,66,190,148,
150,149,151,36,84,85,78,158,77,93,5,10,57,205,181,427,183,166,167,168,170,172,159,173,174,215,147,312,400,401,402,403,12,46)
OR (BillType = 414 AND IsFreightMoney = 1))
AND draft = 0 AND IsIni = 0 AND T1.ifYearBill = 0 AND RedWord = 0
AND NOT EXISTS (SELECT GoodsBillId FROM dbo.Ac_GoodsBill_VoucherBill WHERE GoodsBillId = T1.BillNumberId)
AND NOT EXISTS (SELECT BillnumberId FROM Ac_ProvisionForImpairment WHERE BillNumberId = T1.BillNumberId)
UNION ALL
SELECT BillCode,6
FROM dbo.CommissionBillNew T1
INNER JOIN @tempStype S ON S.typeid = T1.Stypeid
WHERE BillDate >= @FBeginDate AND BillDate <= @FEndDate
AND draft = 0 AND RedWord = 0
AND BillNumberId NOT IN (SELECT GoodsBillId FROM dbo.Ac_CommissionBill_VoucherBill)
UNION ALL
SELECT BillCode,6
FROM dbo.ReceiptBillIndex T1
INNER JOIN @tempStype S ON S.typeid = T1.Stypeid
WHERE BillDate >= @FBeginDate AND BillDate <= @FEndDate
AND draft = 0 AND IsIni = 0 AND T1.ifYearBill =0 AND RedWord = 0
AND BillNumberId NOT IN(SELECT GoodsBillId FROM Ac_ReceiptBill_VoucherBill)
UNION ALL
SELECT BillCode,6
FROM dbo.BillIndex
WHERE BillType = 310 AND draft = 0 AND RedWord = 0 AND ifYearBill = 0
AND (Stypeid IN( SELECT TypeId FROM dbo.SType WHERE VerifyID = @Stypeid)
AND BillNumberId NOT IN (SELECT GoodsBillId FROM dbo.Ac_GoodsBill_VoucherBill WHERE InOutType = -1)
OR
Stypeid2 IN( SELECT TypeId FROM dbo.SType WHERE VerifyID = @Stypeid)
AND BillNumberId NOT IN (SELECT GoodsBillId FROM dbo.Ac_GoodsBill_VoucherBill WHERE InOutType = 1)
)
AND BillDate >= @FBeginDate AND BillDate <= @FEndDate
UNION ALL
SELECT B.BillCode,6
FROM dbo.Coupon_BillIndex B
INNER JOIN dbo.SType S ON S.TypeId=B.STypeId AND S.VerifyID=@Stypeid
WHERE
BillType IN(423,424,426)
AND BillDate >= @FBeginDate AND BillDate <= @FEndDate
AND draft = 0
AND RedWord = 0
AND B.FromType<>3
AND ifYearBill = 0
AND B.BillNumberId NOT IN (SELECT CouponBillId FROM dbo.Ac_CouponBill_VoucherBill)
INSERT INTO #TmpInfo( ContentText, Detail )
SELECT TOP 1 '存在业务单据未生成凭证',5
FROM #TmpInfo
WHERE Detail = 6
INSERT INTO #TmpInfo( ContentText, Detail )
SELECT BillCode,8
FROM billindex b
INNER JOIN @tempStype S ON S.typeid = B.Stypeid
WHERE draft=0 AND RedWord=0 AND isini=0 AND b.ifYearBill =0 AND BillDate >= @FBeginDate AND BillDate <= @FEndDate
AND NOT EXISTS(SELECT 1 FROM Ac_GoodsBill_VoucherBill WHERE GoodsBillId=b.BillNumberId AND IsCost IN(0,2))
AND BillType IN (305,215,11,45,160,141,405,12,46)
UNION ALL
SELECT BillCode,8
FROM ReceiptBillIndex b
INNER JOIN @tempStype S ON S.typeid = B.Stypeid
WHERE draft=0 AND RedWord=0 AND isini=0 AND b.ifYearBill =0 AND BillDate >= @FBeginDate AND BillDate <= @FEndDate
AND NOT EXISTS(SELECT 1 FROM Ac_ReceiptBill_VoucherBill WHERE GoodsBillId=b.BillNumberId AND IsCost IN(0,2))
AND BillType IN (305,215,11,45,160,141,405,12,46)
INSERT INTO #TmpInfo( ContentText, Detail )
SELECT TOP 1 '存在出库类单据未生成基本凭证',7
FROM #TmpInfo
WHERE Detail = 8
INSERT INTO #TmpInfo( ContentText, Detail )
SELECT BillCode,10
FROM billindex b
INNER JOIN @tempStype S ON S.typeid = B.Stypeid
WHERE draft=0 AND RedWord=0 AND isini=0 AND b.ifYearBill = 0 AND BillDate >= @FBeginDate AND BillDate <= @FEndDate
AND NOT EXISTS(SELECT 1 FROM Ac_GoodsBill_VoucherBill WHERE GoodsBillId=b.BillNumberId AND IsCost IN(1,2))
AND BillType IN (305,215,11,45,160,139,140,142,141,402,403,405,12,46)
UNION ALL
SELECT BillCode,10
FROM ReceiptBillIndex b
INNER JOIN @tempStype S ON S.typeid = B.Stypeid
WHERE draft=0 AND RedWord=0 AND isini=0 AND b.ifYearBill =0 AND BillDate >= @FBeginDate AND BillDate <= @FEndDate
AND NOT EXISTS(SELECT 1 FROM Ac_ReceiptBill_VoucherBill WHERE GoodsBillId=b.BillNumberId AND IsCost IN(1,2))
AND BillType IN (305,215,11,45,160,139,140,142,141,402,403,405,12,46)
INSERT INTO #TmpInfo( ContentText, Detail )
SELECT TOP 1 '存在出库类单据未生成成本凭证',9
FROM #TmpInfo
WHERE Detail = 10
END
--判断本期是否有凭证未记账
INSERT INTO #TmpInfo( ContentText, Detail )
SELECT T2.FullName + '-' + CAST(T1.FlowNo AS VARCHAR(100)),12
FROM Ac_Voucher T1
INNER JOIN dbo.Ac_Voucher_Group T2 ON T1.VgId = T2.VgId
WHERE FYear = @FYear AND FPeriod = @FPeriod AND IfCheck = 'f' AND FChecked <> -1 AND MarkError = '' AND STypeId = @Stypeid
INSERT INTO #TmpInfo( ContentText, Detail )
SELECT TOP 1 '本期有未记账的凭证存在,不能结账!',11
FROM #TmpInfo
WHERE Detail = 12
END
--判断是否有未签字的凭证
IF EXISTS(SELECT TOP 1 1 FROM dbo.sysdata WHERE SubName = 'actellersign' AND SubValue = 1)
BEGIN
INSERT INTO #TmpInfo( ContentText, Detail )
SELECT DISTINCT T3.FullName + '-' + CAST(T1.FlowNo AS VARCHAR(100)),14
FROM dbo.Ac_Voucher T1
INNER JOIN dbo.Ac_Voucher_Bill T2 ON T1.BillNumberId = T2.BillNumberId
INNER JOIN dbo.Ac_Voucher_Group T3 ON T1.VgId = T3.VgId
INNER JOIN dbo.Ac_Account T4 ON T2.ATypeId = T4.TypeId AND T1.STypeId = T4.StypeId
WHERE T1.FYear = @FYear AND T1.FPeriod = @FPeriod
AND ISNULL(T1.Teller,'') = ''
AND (T4.IsBank = 1 OR T4.IsCash = 1)
AND T1.STypeId = @STypeid
AND T1.FChecked <> -1
AND ISNULL(T1.MarkError ,'') = ''
INSERT INTO #TmpInfo(ContentText,Detail)
SELECT TOP 1 '本期有未签字的凭证存在,不能结账!',13
FROM #TmpInfo
WHERE Detail = 14
END
IF EXISTS(SELECT TOP 1 1 FROM #TmpInfo)
BEGIN
SELECT * FROM #TmpInfo ORDER BY Detail
DROP TABLE #TmpInfo
RETURN -1
END
---------------------------以报告形式展现信息的判断处理end----------------------------------------------------------
---------------------------最后验证数据是否平衡----------------------------------------------------------------
IF @sys_assets = 1
BEGIN
----固定资产5 检测数据
DECLARE @A NUMERIC(24, 10) --固定资产科目之和
DECLARE @B NUMERIC(24, 10) --累计折旧科目之和
DECLARE @C NUMERIC(24, 10) --减值准备科目之和
DECLARE @NetValueTotal NUMERIC(24, 10) --净值之和
---取出净值之和
IF @ignore1=0
BEGIN
SELECT @NetValueTotal=ISNULL(SUM(a.NetValue),0)
FROM dbo.Ac_AssetsCards_History a
INNER JOIN dbo.AC_AssetsCards ac ON AC.Id=A.AssertsCardId AND AC.AssetsState IN(3,4)
INNER JOIN dbo.Ac_AssetsCategory aac ON aac.StypeId=@STypeId AND ac.CategoryId=aac.Id -- AND aac.StypeId=A.STypeId
INNER JOIN SType S ON S.TypeId = A.STypeId AND S.VerifyID = aac.STYPEID
WHERE
a.BusinessDate<=@AssetEnd
AND A.AuditType !=-4 --排除-4的情况,-4是业务月结存的时候写入的数据,月结存的时候净值取的是结存期间的值,而不是财务系统中卡片最新折旧后的净值
AND NOT EXISTS (SELECT 1 FROM Ac_AssetsCards_History
WHERE AssertsCardId= a.AssertsCardId AND Id>a.Id
AND BusinessDate<=@AssetEnd AND AuditType !=-4)
---取出固定资产科目之和
SELECT @A=ISNULL(SUM(ISNULL(FEndBalance,0)),0)
FROM dbo.Ac_Balance ab
JOIN (
SELECT distinct a.AssertATypeId typeid
FROM dbo.Ac_AssetsCards_History a
INNER JOIN @tempStype S ON S.typeid = A.STypeId
WHERE a.BusinessDate<=@AssetEnd
AND A.AuditType !=-4 --排除-4的情况,-4是业务月结存的时候写入的数据
AND A.AssetsState IN(3,4)
AND NOT EXISTS (SELECT 1 FROM Ac_AssetsCards_History
WHERE AssertsCardId= a.AssertsCardId AND Id>a.Id
AND BusinessDate<=@AssetEnd AND AuditType !=-4)
) ac ON ab.ATypeId=ac.typeid
WHERE ab.STypeId=@Stypeid AND FPeriod=@FPeriod AND ab.Cid=@Cid AND FYear=@FYear
---取出累计折旧科目之和
SELECT @B=ISNULL(SUM(ISNULL(FEndBalance,0)),0)
FROM dbo.Ac_Balance ab
JOIN (
SELECT distinct a.DepATypeId typeid
FROM dbo.Ac_AssetsCards_History a
INNER JOIN @tempStype S ON S.typeid = A.STypeId
WHERE
a.BusinessDate<=@AssetEnd
AND A.AuditType !=-4 --排除-4的情况,-4是业务月结存的时候写入的数据
AND A.AssetsState IN(3,4)
AND NOT EXISTS (SELECT 1 FROM Ac_AssetsCards_History
WHERE AssertsCardId= a.AssertsCardId AND Id>a.Id
AND BusinessDate<=@AssetEnd AND AuditType !=-4)
) ac ON ab.ATypeId=ac.typeid
WHERE ab.STypeId=@Stypeid AND FPeriod=@FPeriod AND ab.Cid=@Cid AND FYear=@FYear
---取出减值准备科目之和
SELECT @C=ISNULL(SUM(ISNULL(FEndBalance,0)),0)
FROM dbo.Ac_Balance ab
JOIN (
SELECT distinct a.DevalueATypeId typeid
FROM dbo.Ac_AssetsCards_History a
INNER JOIN @tempStype S ON S.typeid = A.STypeId
WHERE
a.BusinessDate<=@AssetEnd
AND A.AuditType !=-4 --排除-4的情况,-4是业务月结存的时候写入的数据
AND A.AssetsState IN(3,4)
AND NOT EXISTS (SELECT 1 FROM Ac_AssetsCards_History
WHERE AssertsCardId= a.AssertsCardId AND Id>a.Id
AND BusinessDate<=@AssetEnd AND AuditType !=-4)
) ac ON ab.ATypeId=ac.typeid
WHERE ab.STypeId=@Stypeid AND FPeriod=@FPeriod AND ab.Cid=@Cid AND FYear=@FYear
IF @NetValueTotal!=@A-@B-@C
BEGIN
SELECT @stypeid AS stypeid
RETURN -1
END
END
END
IF @IsAc = 1
BEGIN
--判断余额表中记录的借贷发生额合计和当期凭证明细里记录的借贷发生额合计是否一致
DECLARE @FDebitTotal_B NUMERIC(24, 10),
@FCreditTotal_B NUMERIC(24, 10),
@FDebitTotal_V NUMERIC(24, 10),
@FCreditTotal_V NUMERIC(24, 10),
@FDebitqty_B NUMERIC(24, 10),
@FCreditqty_B NUMERIC(24, 10),
@FDebitqty_V NUMERIC(24, 10),
@FCreditqty_V NUMERIC(24, 10)
SET @FDebitTotal_B = 0
SET @FCreditTotal_B = 0
SET @FDebitTotal_V = 0
SET @FCreditTotal_V = 0
SET @FDebitqty_B = 0
SET @FCreditqty_B = 0
SET @FDebitqty_V = 0
SET @FCreditqty_V = 0
SELECT @FDebitTotal_B= ISNULL(SUM(FDebit),0)
,@FCreditTotal_B= ISNULL(SUM(FCredit),0)
,@FDebitqty_B= ISNULL(SUM(FDebitqty),0)
,@FCreditqty_B= ISNULL(SUM(FCreditqty),0)
FROM Ac_Balance
WHERE Cid = 0
AND FYear = @FYear
AND FPeriod = @FPeriod
AND STypeId = @Stypeid
SELECT @FDebitTotal_V = ISNULL(SUM(B.FDebitTotal),0)
,@FCreditTotal_V = ISNULL(SUM(B.FCreditTotal),0)
,@FDebitqty_V = ISNULL(SUM(B.FDebitQty),0)
,@FCreditqty_V = ISNULL(SUM(B.FCreditQty),0)
FROM Ac_Voucher V
INNER JOIN Ac_Voucher_Bill B ON V.BillNumberId = B.BillNumberId
WHERE V.IfCheck = 't' AND V.STypeId = @Stypeid AND v.FPeriod=@FPeriod AND v.FYear=@fyear
IF @FDebitTotal_B <> @FDebitTotal_V
BEGIN
RAISERROR('科目余额表借方发生额本位币数据和凭证明细数据不平衡,不能结账!',16,1)
RETURN -1
END
IF @FCreditTotal_B <> @FCreditTotal_V
BEGIN
RAISERROR('科目余额表贷方发生额本位币数据和凭证明细数据不平衡,不能结账!',16,1)
RETURN -1
END
--IF @FDebitqty_B <> @FDebitqty_V
--BEGIN
-- RAISERROR('科目余额表借方数量数据和凭证明细数据不平衡,不能结账!',16,1)
-- RETURN -1
--END
--IF @FCreditqty_B <> @FCreditqty_V
--BEGIN
-- RAISERROR('科目余额表贷方数量数据和凭证明细数据不平衡,不能结账!',16,1)
-- RETURN -1
--END
--判断辅助核算余额表和辅助核算明细表是否平衡
DECLARE @FEndBalance NUMERIC(24, 10),
@FBEndBalance NUMERIC(24, 10)
SET @FEndBalance = 0
SET @FBEndBalance = 0
SELECT @FEndBalance = ISNULl(SUM(FEndBalance),0)
FROM Ac_Balance_Assist_CheckItems
WHERE Cid = 0
AND FYear = @FYear
AND FPeriod = @FPeriod
AND STypeId = @Stypeid
SELECT @FBEndBalance = ISNULL(SUM(CASE WHEN B.Fdc = 1 THEN B.FDebitTotal - B.FCreditTotal ELSE B.FCreditTotal - B.FDebitTotal END),0)
FROM (
SELECT A.Fdc,
FDebitTotal = ISNULL(B.FDebitTotal,0),
FCreditTotal = ISNULL(B.FCreditTotal,0)
FROM Ac_Voucher V
INNER JOIN Ac_Voucher_Bill B ON V.BillNumberId = B.BillNumberId
INNER JOIN Ac_Account A ON B.STypeId = A.StypeId AND B.ATypeId = A.TypeId
WHERE V.IfCheck = 't'
AND ISNULL(B.AscIds,'') <> ''
AND V.STypeId = @Stypeid AND (v.FPeriod<=@FPeriod AND v.FYear=@fyear OR v.FYear<@fyear)
UNION ALL
SELECT A.FDc,
FDebitTotal = CASE WHEN A.Fdc = 1 THEN ISNULL(iniTotal,0) ELSE 0 END,
FCreditTotal = CASE WHEN A.Fdc = -1 THEN ISNULL(iniTotal,0) ELSE 0 END
FROM Ac_IniAccount_Assist_CheckItems I
INNER JOIN Ac_Account A ON I.STypeId = A.StypeId AND I.ATypeId = A.TypeId
INNER JOIN SType_UserConfig U ON I.STypeId = U.StypeId
WHERE U.Value = 1 AND i.STypeId = @Stypeid
)B
IF @FEndBalance <> @FBEndBalance
BEGIN
RAISERROR('本币科目辅助余额表和凭证明细数据不平衡,不能结账!',16,1)
RETURN -1
END
--结账时要求损益类科目余额为0
--本年度最后一期结账前要求必须进行一次结转损益 awu 2013.8.7
IF EXISTS(SELECT TOP 1 1 FROM sysdata WHERE SubName = 'acbalanceiszero' AND SubValue = '1') OR @FPeriod = @TotalPeriod
BEGIN
DECLARE @FSDebit NUMERIC(24, 10) ,
@FSCredit NUMERIC(24, 10) ,
@FSDebitqty NUMERIC(24, 10) ,
@FSCreditqty NUMERIC(24, 10)
SELECT ISNULL(SUM(FEndBalance),0) AS Balance,
ISNULL(SUM(FEndBalanceFor),0) AS BalanceFor,
ISNULL(SUM(FEndqty),0) AS qty,
Cid
INTO #TmpBalance
FROM dbo.Ac_Balance
WHERE ATypeId LIKE '00003%'
AND FYear = @FYear
AND FPeriod = @FPeriod
AND STypeId = @Stypeid
GROUP BY ATypeId,Cid
IF EXISTS(SELECT TOP 1 1 FROM #TmpBalance WHERE Balance <> 0 OR qty <> 0)
BEGIN
RAISERROR('科目余额表损益类余额不为0,不能结账!',16,1)
RETURN -1
END
END
END
---------------------------最后验证数据是否平衡END----------------------------------------------------------------
---------------------------开始月结,调整数据--------------------------------------------
--总账下才判断
IF @IsAc = 1
BEGIN
DECLARE @isfanyuejie INT
SET @isfanyuejie=(SELECT COUNT(1) FROM Ac_Balance
WHERE FPeriod=(CASE WHEN @FPeriod = @TotalPeriod THEN 1 ELSE @FPeriod + 1 END)
AND stypeid= @Stypeid
AND fyear=(CASE WHEN @FPeriod = @TotalPeriod THEN @FYear + 1 ELSE @FYear END ) )
--因为增加了反月结不反记账凭证功能,所以改变结转数据思路,如果下期存在匹配的数据,则更新其期初、期末、本年累计数据,否则插入新数据
--这样就可以不用去判断是否有做反月结了,统一处理方式
;WITH result1 AS
(
SELECT STypeId,
ATypeId,
FEndBalance AS FBeginBalance,
FEndBalanceFor AS FBeginBalanceFor,
0 AS FDebit,
0 AS FDebitFor,
0 AS FCredit,
0 AS FCreditFor,
Cid,
FEndBalance,
FEndBalanceFor,
CASE WHEN @FPeriod = @TotalPeriod THEN 0 ELSE FYtdDebit END AS FYtdDebit,
CASE WHEN @FPeriod = @TotalPeriod THEN 0 ELSE FYtdDebitFor END AS FYtdDebitFor,
CASE WHEN @FPeriod = @TotalPeriod THEN 0 ELSE FYtdCredit END AS FYtdCredit,
CASE WHEN @FPeriod = @TotalPeriod THEN 0 ELSE FYtdCreditFor END AS FYtdCreditFor,
CASE WHEN @FPeriod = @TotalPeriod THEN @FYear + 1 ELSE @FYear END AS FYear,
CASE WHEN @FPeriod = @TotalPeriod THEN 1 ELSE @FPeriod + 1 END AS FPeriod,
FEndqty AS FBeginqty,
0 AS FDebitqty,
0 AS FCreditqty,
CASE WHEN @FPeriod = @TotalPeriod THEN 0 ELSE FYtdDebitqty END AS FYtdDebitqty,
CASE WHEN @FPeriod = @TotalPeriod THEN 0 ELSE FYtdCreditqty END AS FYtdCreditqty,
FEndqty
FROM Ac_Balance
WHERE FPeriod = @FPeriod
AND FYear = @FYear
AND STypeId = @Stypeid
)
MERGE INTO dbo.Ac_Balance pp
USING result1 AS r
ON r.fyear=pp.FYear AND r.stypeid=pp.STypeId AND r.fperiod =pp.FPeriod AND r.atypeid=pp.ATypeId AND r.cid=pp.cid
WHEN MATCHED
THEN UPDATE SET pp.FEndBalance += r.FBeginBalance-pp.FBeginBalance,
pp.FEndBalanceFor += r.FBeginBalanceFor-pp.FBeginBalanceFor,
pp.FYtdDebit = pp.FDebit+r.FYtdDebit,
pp.FYtdDebitFor = pp.FDebitFor+r.FYtdDebitFor,
pp.FYtdCredit = pp.FCredit+r.FYtdCredit,
pp.FYtdCreditFor = pp.FCreditFor+r.FYtdCreditFor,
pp.FBeginqty = r.FBeginqty,
pp.FEndqty += r.FEndqty-pp.FBeginqty,
pp.FYtdDebitqty = pp.FDebitqty+r.FYtdDebitqty,
pp.FYtdCreditqty = pp.FCreditqty+r.FYtdCreditqty,
pp.FBeginBalance = r.FBeginBalance,
pp.FBeginBalanceFor = r.FBeginBalanceFor
WHEN NOT MATCHED BY TARGET
THEN INSERT ( STypeId,ATypeId,FBeginBalance,FBeginBalanceFor,FDebit,FDebitFor,FCredit,
FCreditFor,Cid, FEndBalance,FEndBalanceFor,FYtdDebit,FYtdDebitFor,FYtdCredit,FYtdCreditFor,FYear,FPeriod,
FBeginqty,FEndqty,FDebitqty,FCreditqty,FYtdDebitqty,FYtdCreditqty)
VALUES (r.STypeId,r.ATypeId,r.FBeginBalance,r.FBeginBalanceFor,r.FDebit,r.FDebitFor,r.FCredit,r.
FCreditFor,r.Cid,r. FEndBalance,r.FEndBalanceFor,r.FYtdDebit,r.FYtdDebitFor,r.FYtdCredit,r.FYtdCreditFor,r.FYear,r.FPeriod,
r.FBeginqty,r.FEndqty,r.FDebitqty,r.FCreditqty,r.FYtdDebitqty,r.FYtdCreditqty );
IF @@ERROR <> 0
BEGIN
RAISERROR('处理科目余额表错误,请确认!',16,1)
RETURN -1
END
;WITH result1 AS
(
SELECT STypeId,
ATypeId,
Cid,
CASE WHEN @FPeriod = @TotalPeriod THEN 0 ELSE IniYTotal END AS IniYTotal,
CASE WHEN @FPeriod = @TotalPeriod THEN 0 ELSE IniYTotalFor END AS IniYTotalFor,
0 AS FDebit,
0 AS FDebitFor,
0 AS FCredit,
0 AS FCreditFor,
FEndBalance AS IniTotal,
FEndBalanceFor AS IniTotalFor,
CASE WHEN @FPeriod = @TotalPeriod THEN @FYear + 1 ELSE @FYear END AS FYear,
CASE WHEN @FPeriod = @TotalPeriod THEN 1 ELSE @FPeriod + 1 END AS FPeriod,
FEndBalance,
FEndBalanceFor
FROM Ac_Balance_Assist_CheckItems
WHERE FYear = @FYear
AND FPeriod = @FPeriod
AND STypeId = @Stypeid
)
MERGE INTO dbo.Ac_Balance_Assist_CheckItems pp
USING result1 AS r
ON r.fyear=pp.FYear AND r.stypeid=pp.STypeId AND r.fperiod =pp.FPeriod AND r.atypeid=pp.ATypeId AND r.cid=pp.cid
WHEN MATCHED
THEN UPDATE SET pp.FEndBalance += r.IniTotal-pp.IniTotal,
pp.FEndBalanceFor += r.IniTotalFor-pp.IniTotalFor,
pp.IniYTotal = r.IniYTotal,
pp.IniYTotalFor = r.IniYTotalFor,
pp.IniTotal = r.IniTotal,
pp.IniTotalFor = r.IniTotalFor
WHEN NOT MATCHED BY TARGET
THEN INSERT ( STypeId, ATypeId, Cid, IniYTotal, IniYTotalFor, FDebit, FDebitFor, FCredit, FCreditFor,
IniTotal, IniTotalFor, FYear, FPeriod, FEndBalance, FEndBalanceFor)
VALUES (r.STypeId,r.ATypeId,r.Cid,r.IniYTotal,r.IniYTotalFor,r.FDebit,r.FDebitFor,r.FCredit,r.FCreditFor,r.
IniTotal,r.IniTotalFor,r.FYear,r.FPeriod,r.FEndBalance,r.FEndBalanceFor);
IF @@ERROR <> 0
BEGIN
RAISERROR('处理科目余额辅助核算表错误,请确认!',16,1)
RETURN -1
END
;WITH result1 AS
(
SELECT STypeId,
ATypeId,
Cid,
Ascids,
FieldValue,
CASE WHEN @FPeriod = @TotalPeriod THEN @FYear + 1 ELSE @FYear END AS FYear,
CASE WHEN @FPeriod = @TotalPeriod THEN 1 ELSE @FPeriod + 1 END AS FPeriod,
FEndBalance AS IniTotal,
FEndBalanceFor AS IniTotalFor,
FEndBalance,
FEndBalanceFor,
FEndqty AS Iniqty,
FEndqty
FROM Ac_Balance_Assist_CheckItems_Detail
WHERE FYear = @FYear
AND FPeriod = @FPeriod
AND STypeId = @Stypeid
)
MERGE INTO dbo.Ac_Balance_Assist_CheckItems_Detail pp
USING result1 AS r
ON r.fyear=pp.FYear AND r.stypeid=pp.STypeId AND r.fperiod =pp.FPeriod AND r.atypeid=pp.ATypeId AND r.cid=pp.cid
AND pp.Ascids=r.Ascids AND pp.FieldValue=r.FieldValue
WHEN MATCHED
THEN UPDATE SET pp.FEndBalance += r.IniTotal-pp.IniTotal,
pp.FEndBalanceFor += r.IniTotalFor-pp.IniTotalFor,
pp.FEndqty += r.Iniqty-pp.Iniqty,
pp.IniTotal = r.IniTotal,
pp.IniTotalFor = r.IniTotalFor,
pp.Iniqty = r.Iniqty
WHEN NOT MATCHED BY TARGET
THEN INSERT (STypeId, ATypeId, Cid, Ascids, FieldValue, FYear, FPeriod,IniTotal,IniTotalFor,FEndBalance,FEndBalanceFor,Iniqty,FEndqty)
VALUES(r.STypeId,r.ATypeId,r.Cid,r.Ascids,r.FieldValue,r. FYear,r. FPeriod,r.IniTotal,r.IniTotalFor,r.FEndBalance,r.FEndBalanceFor,r.Iniqty,r.FEndqty);
IF @@ERROR <> 0
BEGIN
RAISERROR('处理科目余额辅助核算明细表错误,请确认!',16,1)
RETURN -1
END
END
--修改当前的会计期间
IF @FPeriod = @TotalPeriod
UPDATE dbo.Ac_AccountsPeroid_Stype SET FYear = @FYear + 1,FPeriod = 1 WHERE Stypeid = @STypeid
ELSE
UPDATE dbo.Ac_AccountsPeroid_Stype SET FPeriod = @FPeriod + 1 WHERE Stypeid = @Stypeid
IF @@ERROR <> 0
BEGIN
RAISERROR('修改当前会计期间失败,请确认!',16,1)
RETURN -1
END
END
SELECT * FROM #TmpInfo
DROP TABLE #TmpInfo
RETURN 0
管家婆分销ERPV3A8本币科目余额表和凭证明细数据不平衡,不能结账!相关推荐
- sql 凭证明细表 科目余额表_sql查询金蝶科目余额表个期间的数据
select null as QYDM, null as SBNF, null as SBYF, 本期发生_本年累计_科目余额表.会计年度 as 会计年度, 本期发生_本年累计_科目余额表.会计期间 ...
- 管家婆分销ERPV3A8单据第1行商品【】货位没有填写或不属于该仓库或已删除,不能保存
第一步 期初序列号对应货位 update t1 set t1.CargoID=t2.CargoID from gp_initPtypeSerial t1, CargoType t2 where t1. ...
- oracle账户余额表和明细表,科目余额表与明细账
(明细与上相同)在建工程 11 小计 明细账科 LI 余额表 年月日 序上期余额本期发生额月末余额科目名称号借方贷方借方贷方借方 贷方二.负债类短期借款 12 XX 银行 XX 银行应付账款 13 X ...
- SAP 原币科目余额表
查看利润分配-未分配利润的科目配置 SPRO 搜索:定义留存收益 双击 查看 输入:LXCA 显示:41040112 或者:OB53 开发区导测试数据 DATA gt_data TYPE TABLE ...
- SAP S4 HANA 本地化报表配置(科目余额表/资产负债表/利润表/会计凭证明细表)
目录 IDCNACCTBLN科目余额表 报表配置:IDCNALG 报表展示IDCNACCTBLN IDCNBSAIS本地化报表(资产负债表/
- sql 凭证明细表 科目余额表_金碟财务软件手册——明细账 凭证汇总表 科目余额表...
金碟财务软件手册--明细账 凭证汇总表 科目余额表 明细账 查询各科目的明细账账务数据, 这里可以输出现金日记账, 银行存款日记账和其 它各科目的三栏式明细账的账务明细数据: 在明细账查询功能中, 还 ...
- oracle科目余额表的查询,科目余额表查询 · selfaccount-services · 看云
## 查询某个月的科目余额表 *访问财务数据库并查询某个月的科目余额表* +++ post:/finicial_getItemBalance *string:acctId#登录者账号id *strin ...
- 【T+】非主管操作员查询科目余额表提示 权限配置异常,没有[AccountDTO]数据权限
问题现象:非主管操作员查询科目余额表提示 权限配置异常,没有[AccountDTO]数据权限,打了最新的补丁(13.000.001.0367.0117)也是如此. 解决办法: 进入用户权限,点击这个报 ...
- EAS 科目余额表、辅助账余额表(1F、1L、1R、5F、5L、5R)的含义
T_GL_AccountBalance 科目余额视图 T_GL_AccountBalance_1F 科目余额表 未过账+已过账的原币余额 T_GL_AccountBalance_1L 科目余额表 未 ...
最新文章
- MinGW-w64 编译器下载,安装,以及环境变量配置
- perl 连接mysql_perl如何连接mysql数据库?
- 轻量级Web渗透测试工具jSQL
- CCNP-1 EIGRP基本配置(BSCI)
- SpringCloud 应用在 Kubernetes 上的最佳实践 — 诊断(线上联调)
- html两条下划线重叠,文字和text-decoration:underline下划线重叠问题
- 八十、React中的容器组件和无状态组件
- java父类调用子类方法_Java 中父类怎么调用子类的方法?
- 父页面监听iframe路由变化_前端路由原理
- 荣耀20 Pro正面渲染图曝光:开孔全面屏设计+后置四摄
- java 构造块_java中构造方法、普通块、静态代码块、构造块的执行顺序
- 帆软决策报表JS实现点击超链切换TAB页
- JAVA内存模型和GC原理
- 打卡赠书,新一年的读者福利 !
- python 开发金山打字通辅助脚本
- js数组常用方法复习
- 树莓派查看cpu温度的命令
- 010 Editor修改指令
- 18个无版权(免费可商用)图片网站
- 微信小程序父子组件方法调用方法汇总
热门文章
- 解决Chrome无法播放Songtaste的问题
- 2022年7月系统集成项目管理工程师认证招生简章
- 【精彩回顾】迪拜BSV全球区块链大会Day1
- 2020亚太杯数学建模_2020年“博学杯”数学建模竞赛获奖名单公布
- 财富法则-平庸的本质
- 什么是LTE(Long Time Evolution 长期演进技术)
- ft232电路ttl_基于Arduino使用FT232 USB转TTL串口模块
- go 判断元素是否在slice_在Java中如何高效判断数组中是否包含某个元素
- 共享单车是如何利用物联网卡实现智能开锁的?
- 新文联播第9期 | 通过 fNIRS 看社会地位与信任整合的人际同步机制