Example #1
0
        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);
        }
Example #2
0
        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();
        }
Example #3
0
        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);
        }