---------------------------以报告形式展现信息的判断处理----------------------------------------------------------
    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本币科目余额表和凭证明细数据不平衡,不能结账!相关推荐

  1. sql 凭证明细表 科目余额表_sql查询金蝶科目余额表个期间的数据

    select null as QYDM, null as SBNF, null as SBYF, 本期发生_本年累计_科目余额表.会计年度 as 会计年度, 本期发生_本年累计_科目余额表.会计期间 ...

  2. 管家婆分销ERPV3A8单据第1行商品【】货位没有填写或不属于该仓库或已删除,不能保存

    第一步 期初序列号对应货位 update t1 set t1.CargoID=t2.CargoID from gp_initPtypeSerial t1, CargoType t2 where t1. ...

  3. oracle账户余额表和明细表,科目余额表与明细账

    (明细与上相同)在建工程 11 小计 明细账科 LI 余额表 年月日 序上期余额本期发生额月末余额科目名称号借方贷方借方贷方借方 贷方二.负债类短期借款 12 XX 银行 XX 银行应付账款 13 X ...

  4. SAP 原币科目余额表

    查看利润分配-未分配利润的科目配置 SPRO 搜索:定义留存收益 双击 查看 输入:LXCA 显示:41040112 或者:OB53 开发区导测试数据 DATA gt_data TYPE TABLE ...

  5. SAP S4 HANA 本地化报表配置(科目余额表/资产负债表/利润表/会计凭证明细表)

    目录 IDCNACCTBLN科目余额表 报表配置:IDCNALG 报表展示IDCNACCTBLN IDCNBSAIS本地化报表(资产负债表/

  6. sql 凭证明细表 科目余额表_金碟财务软件手册——明细账 凭证汇总表 科目余额表...

    金碟财务软件手册--明细账 凭证汇总表 科目余额表 明细账 查询各科目的明细账账务数据, 这里可以输出现金日记账, 银行存款日记账和其 它各科目的三栏式明细账的账务明细数据: 在明细账查询功能中, 还 ...

  7. oracle科目余额表的查询,科目余额表查询 · selfaccount-services · 看云

    ## 查询某个月的科目余额表 *访问财务数据库并查询某个月的科目余额表* +++ post:/finicial_getItemBalance *string:acctId#登录者账号id *strin ...

  8. 【T+】非主管操作员查询科目余额表提示 权限配置异常,没有[AccountDTO]数据权限

    问题现象:非主管操作员查询科目余额表提示 权限配置异常,没有[AccountDTO]数据权限,打了最新的补丁(13.000.001.0367.0117)也是如此. 解决办法: 进入用户权限,点击这个报 ...

  9. EAS 科目余额表、辅助账余额表(1F、1L、1R、5F、5L、5R)的含义

    T_GL_AccountBalance 科目余额视图 T_GL_AccountBalance_1F 科目余额表 未过账+已过账的原币余额  T_GL_AccountBalance_1L 科目余额表 未 ...

最新文章

  1. MinGW-w64 编译器下载,安装,以及环境变量配置
  2. perl 连接mysql_perl如何连接mysql数据库?
  3. 轻量级Web渗透测试工具jSQL
  4. CCNP-1 EIGRP基本配置(BSCI)
  5. SpringCloud 应用在 Kubernetes 上的最佳实践 — 诊断(线上联调)
  6. html两条下划线重叠,文字和text-decoration:underline下划线重叠问题
  7. 八十、React中的容器组件和无状态组件
  8. java父类调用子类方法_Java 中父类怎么调用子类的方法?
  9. 父页面监听iframe路由变化_前端路由原理
  10. 荣耀20 Pro正面渲染图曝光:开孔全面屏设计+后置四摄
  11. java 构造块_java中构造方法、普通块、静态代码块、构造块的执行顺序
  12. 帆软决策报表JS实现点击超链切换TAB页
  13. JAVA内存模型和GC原理
  14. 打卡赠书,新一年的读者福利 !
  15. python 开发金山打字通辅助脚本
  16. js数组常用方法复习
  17. 树莓派查看cpu温度的命令
  18. 010 Editor修改指令
  19. 18个无版权(免费可商用)图片网站
  20. 微信小程序父子组件方法调用方法汇总

热门文章

  1. 解决Chrome无法播放Songtaste的问题
  2. 2022年7月系统集成项目管理工程师认证招生简章
  3. 【精彩回顾】迪拜BSV全球区块链大会Day1
  4. 2020亚太杯数学建模_2020年“博学杯”数学建模竞赛获奖名单公布
  5. 财富法则-平庸的本质
  6. 什么是LTE(Long Time Evolution 长期演进技术)
  7. ft232电路ttl_基于Arduino使用FT232 USB转TTL串口模块
  8. go 判断元素是否在slice_在Java中如何高效判断数组中是否包含某个元素
  9. 共享单车是如何利用物联网卡实现智能开锁的?
  10. 新文联播第9期 | 通过 fNIRS 看社会地位与信任整合的人际同步机制