Пример #1
0
        public void ClearCOGS(FiscalYear fiscalYear)
        {
            var periodCost = fiscalYear.PeriodItemsCOGS.ToList();

            periodCost.ForEach(pc =>
            {
                if (pc.PostStatus == LedgerPostStatus.Posted)
                {
                    UnPostLedger(pc);
                }
                erpNodeDBContext.PeriodItemsCOGS.Remove(pc);
            });

            this.SaveChanges();

            organization.Items.GetInventories.ToList()
            .ForEach(item =>
            {
                var periodItemCOGS = new PeriodItemCOGS()
                {
                    Id                = Guid.NewGuid(),
                    FiscalYear        = fiscalYear,
                    ItemGuid          = item.Id,
                    LastCalculateDate = DateTime.Today
                };
                fiscalYear.PeriodItemsCOGS.Add(periodItemCOGS);
            });

            this.SaveChanges();
        }
Пример #2
0
        public bool PostLedger(PeriodItemCOGS tr, bool SaveImmediately = true)
        {
            if (tr.PostStatus == LedgerPostStatus.Posted)
            {
                return(false);
            }

            var trLedger = new Models.Accounting.LedgerGroup()
            {
                Id = tr.Id,
                TransactionDate = tr.TransactionDate,
                TransactionName = tr.Name,
                TransactionNo   = tr.No,
                TransactionType = transactionType
            };

            erpNodeDBContext.LedgerGroups.Add(trLedger);

            trLedger.AddCredit(tr.Item.PurchaseAccount, tr.OutputCost);
            trLedger.AddDebit(tr.Item.COGSAccount, tr.OutputCost);

            tr.PostStatus = LedgerPostStatus.Posted;

            if (SaveImmediately)
            {
                erpNodeDBContext.SaveChanges();
            }

            return(true);
        }
Пример #3
0
        public List <PeriodItemCOGS> GetInventory(DateTime?endDate)
        {
            if (endDate == null)
            {
                endDate = DateTime.Today;
            }

            var AverageItemsCOGSLines = erpNodeDBContext.CommercialItems
                                        .Where(ci => ci.Item.ItemType == Models.Items.Enums.ItemTypes.Inventory)
                                        .Where(ci => ci.Commercial.TransactionDate <= endDate)
                                        .Include(ci => ci.Item)
                                        .GroupBy(ci => ci.ItemGuid)
                                        .ToList()
                                        .Select(ci => new
            {
                ItemGuid = ci.Key,
                ci.First().Item,
                OutputAmount = ci.Sum(i => i.OutputAmount),
                InputAmount  = ci.Sum(i => i.InputAmount),
                InputCost    = ci.Sum(i => i.InputValue),
            }).ToList();

            var PeriodItemCOGSList = new List <PeriodItemCOGS>();

            AverageItemsCOGSLines.ForEach(a =>
            {
                var averageItemCOGS = new PeriodItemCOGS()
                {
                    Id                = Guid.NewGuid(),
                    ItemGuid          = a.ItemGuid,
                    Item              = a.Item,
                    InputAmount       = a.InputAmount,
                    InputValue        = a.InputCost,
                    OutputAmount      = a.OutputAmount,
                    LastCalculateDate = DateTime.Today
                };

                PeriodItemCOGSList.Add(averageItemCOGS);
            });

            return(PeriodItemCOGSList);
        }
Пример #4
0
 public void UnPostLedger(PeriodItemCOGS averageItemCOGS)
 {
     organization.LedgersDal.RemoveTransaction(averageItemCOGS.Id);
     averageItemCOGS.PostStatus = LedgerPostStatus.ReadyToPost;;
 }