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 + "没有找到科目"); } }
/// <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); }