public bool PostLedger(TaxPeriod taxPeriod, bool SaveImmediately = true) { if (taxPeriod.PostStatus == LedgerPostStatus.Posted) { return(false); } taxPeriod.ReCalculate(); var trLedger = new Models.Accounting.LedgerGroup() { Id = taxPeriod.Id, TransactionDate = taxPeriod.TransactionDate, TransactionName = taxPeriod.Name, TransactionNo = taxPeriod.No ?? 0, TransactionType = transactionType }; taxPeriod.GetCommercialTaxGroups().ForEach(taxGroup => { switch (taxGroup.TaxCode.TaxDirection) { case TaxDirection.Input: Console.WriteLine($"INP =>{taxGroup.TaxCode.TaxAccount.Name}{taxGroup.TaxBalance}"); trLedger.AddCredit(taxGroup.TaxCode.TaxAccount, taxGroup.TaxBalance); break; case TaxDirection.Output: Console.WriteLine($"OUT =>{taxGroup.TaxCode.TaxAccount.Name}{taxGroup.TaxBalance}"); trLedger.AddDebit(taxGroup.TaxCode.TaxAccount, taxGroup.TaxBalance); break; } }); if (taxPeriod.CloseToAccount.Type == Models.ChartOfAccount.AccountTypes.Asset) { trLedger.AddDebit(taxPeriod.CloseToAccount, Math.Abs(taxPeriod.ClosingAmount)); } else if (taxPeriod.CloseToAccount.Type == Models.ChartOfAccount.AccountTypes.Liability) { trLedger.AddCredit(taxPeriod.CloseToAccount, Math.Abs(taxPeriod.ClosingAmount)); } if (trLedger.FinalValidate()) { erpNodeDBContext.LedgerGroups.Add(trLedger); taxPeriod.PostStatus = LedgerPostStatus.Posted; } if (SaveImmediately && taxPeriod.PostStatus == LedgerPostStatus.Posted) { erpNodeDBContext.SaveChanges(); } return(true); }
public void AutoAssignCommercial(TaxPeriod taxPeriod) { if (taxPeriod.PostStatus == LedgerPostStatus.Posted) { this.UnPostLedger(taxPeriod); } var comTaxes = this.GetUnassignCommercialTaxes(taxPeriod); comTaxes.ToList().ForEach(comTax => { taxPeriod.CommercialTaxes.Add(comTax); }); taxPeriod.ReCalculate(); erpNodeDBContext.SaveChanges(); }
public int AssignCommercialTaxs(TaxPeriod taxPeriod, string commercialsId) { List <Guid> commercialsIdList = commercialsId?.Trim().Split(',') .Select(s => Guid.Parse(s)) .ToList(); var unassignComTaxes = erpNodeDBContext.CommercialTaxes .Where(c => commercialsIdList.Contains(c.Id)) .ToList(); int assignCount = 0; unassignComTaxes.ForEach(comTax => { assignCount++; taxPeriod.AddCommercialTax(comTax, false); }); taxPeriod.ReCalculate(); erpNodeDBContext.SaveChanges(); return(assignCount); }