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(); }
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); }
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); }
public void UnPostLedger(PeriodItemCOGS averageItemCOGS) { organization.LedgersDal.RemoveTransaction(averageItemCOGS.Id); averageItemCOGS.PostStatus = LedgerPostStatus.ReadyToPost;; }