예제 #1
0
        private TKS_FAS_AccountSubject GetSubjectBySubjectCode(TKS_FAS_DocDetail newDoc, IDbTransaction ts)
        {
            string sql = @"select * from tks_fas_AccountSubject where 
                    code=@Code and accountId=@AccountId ";

            var data = cnn.Query <TKS_FAS_AccountSubject>(sql,
                                                          new
            {
                Code      = newDoc.SubjectCode,
                AccountId = newDoc.AccountId,
            }, ts).ToList();

            if (data.Count > 0)
            {
                return(data[0]);
            }
            else
            {
                throw new AppException("", "GetBalBySubjectCode", "期末结转异常",
                                       "期末结转:辅助核算项余额表插入异常,账套ID:" + newDoc.AccountId + ",凭证明细ID:" + newDoc.Id + @"
                    科目代码:" + newDoc.SubjectCode + "没有找到科目");
            }
        }
예제 #2
0
        /// <summary>
        /// 辅助核算项余额表新增
        /// </summary>
        /// <param name="currentBalance"></param>
        /// <param name="newDoc"></param>
        /// <param name="ts"></param>
        /// <returns></returns>
        private void FGLBalanceAdd(TKS_FAS_DocDetail newDoc, List <TKS_FAS_FGLBalance> saveData, IDbTransaction ts)
        {
            TKS_FAS_FGLBalance currentBalance = new TKS_FAS_FGLBalance();


            TKS_FAS_AccountSubject subject = GetSubjectBySubjectCode(newDoc, ts);

            currentBalance.SCredit_Debit = subject.Credit_Debit;

            //年度是累加的,年初是确定后就不变的,本月的是当前月,期末是公式计算

            //按凭证的借贷方向进行操作
            if (newDoc.Credit_Debit == 0)                             //借方
            {
                currentBalance.NUMDebitTotal   += newDoc.Quantity;    //本月借方累计数量
                currentBalance.NUMDebitTotal_Y += newDoc.Quantity;    //年度借方累计数量
                currentBalance.YBDebitTotal    += newDoc.YB;
                currentBalance.YBDebitTotal_Y  += newDoc.YB;          //年度借方累计原币
                currentBalance.BWBDebitTotal   += newDoc.Money_Debit; //本位币
                currentBalance.BWBDebitTotal_Y += newDoc.Money_Debit; //年度借方累计 本位币
            }
            else
            {
                //贷方
                currentBalance.NUMCreditTotal   += newDoc.Quantity;
                currentBalance.NUMCreditTotal_Y += newDoc.Quantity;//数量
                currentBalance.YBCreditTotal    += newDoc.YB;
                currentBalance.YBCreditTotal_Y  += newDoc.YB;
                currentBalance.BWBCreditTotal   += newDoc.Money_Credit;
                currentBalance.BWBCreditTotal_Y += newDoc.Money_Credit;
            }

            if (currentBalance.SCredit_Debit == 0)//期初余额方向 借
            {
                //期初+本期借方-本期贷方 >0 借 <0 贷 =0 平
                var val = currentBalance.BWBStartBAL + currentBalance.BWBDebitTotal - currentBalance.BWBCreditTotal;
                int cb  = 0;
                if (val > 0)
                {
                    cb = 0;
                }
                else if (val == 0)
                {
                    cb = 0;
                }
                else
                {
                    cb = 1;
                }

                currentBalance.ECredit_Debit = cb;
                currentBalance.BWBEndBAL     = Math.Abs(val);
                currentBalance.NUMEndBAL     = currentBalance.NUMStartBAL + currentBalance.NUMDebitTotal - currentBalance.NUMCreditTotal;
                currentBalance.YBEndBAL      = currentBalance.YBStartBAL + currentBalance.YBDebitTotal - currentBalance.YBCreditTotal;
            }
            else
            {
                //期初+本期贷方-本期借方 >0 贷 <0 借 =0 平
                var val = currentBalance.BWBStartBAL + currentBalance.BWBCreditTotal - currentBalance.BWBDebitTotal;
                int cb  = 0;
                if (val > 0)
                {
                    cb = 1;
                }
                else if (val == 0)
                {
                    cb = 1;
                }
                else
                {
                    cb = 0;
                }

                currentBalance.ECredit_Debit = cb;
                currentBalance.BWBEndBAL     = Math.Abs(val);
                currentBalance.NUMEndBAL     = currentBalance.NUMStartBAL + currentBalance.NUMCreditTotal - currentBalance.NUMDebitTotal;
                currentBalance.YBEndBAL      = currentBalance.YBStartBAL + currentBalance.YBCreditTotal - currentBalance.YBDebitTotal;
            }


            currentBalance.Id                = Guid.NewGuid().ToString();
            currentBalance.CalItem1          = newDoc.CalItem1;
            currentBalance.CalItem2          = newDoc.CalItem2;
            currentBalance.CalItem3          = newDoc.CalItem3;
            currentBalance.CalItem4          = newDoc.CalItem4;
            currentBalance.CalItem5          = newDoc.CalItem5;
            currentBalance.CalValue1         = newDoc.CalValue1;
            currentBalance.CalValue2         = newDoc.CalValue2;
            currentBalance.CalValue3         = newDoc.CalValue3;
            currentBalance.CalValue4         = newDoc.CalValue4;
            currentBalance.CalValue5         = newDoc.CalValue5;
            currentBalance.SubjectCode       = newDoc.SubjectCode;
            currentBalance.AccountId         = newDoc.AccountId;
            currentBalance.PeriodId          = newDoc.PeriodId;
            currentBalance.Year              = newDoc.Year;
            currentBalance.Category          = subject.Category;
            currentBalance.ParentId          = subject.Id;
            currentBalance.CurrencyCode      = newDoc.CurrencyCode;
            currentBalance.Name              = newDoc.SubjectDescription.Trim();
            currentBalance.IsFirstPeriodAdd  = 0;
            currentBalance.IsDefaultCurrency = newDoc.CurrencyCode == "RMB" ? 1 : 0;


            saveData.Add(currentBalance);
        }