public ActionResult SaveJournalEntry(Models.ViewModels.Financials.AddJournalEntry model)
        {
            if (model.AddJournalEntryLines.Count < 2)
            {
                return(View(model));
            }
            var journalEntry = new JournalEntryHeader()
            {
                Date        = model.Date,
                Memo        = model.Memo,
                ReferenceNo = model.ReferenceNo,
                CreatedBy   = User.Identity.Name,
                CreatedOn   = DateTime.Now,
                ModifiedBy  = User.Identity.Name,
                ModifiedOn  = DateTime.Now,
            };

            foreach (var line in model.AddJournalEntryLines)
            {
                journalEntry.JournalEntryLines.Add(new JournalEntryLine()
                {
                    AccountId = line.AccountId,
                    DrCr      = line.DrCr,
                    Amount    = line.Amount,
                    Memo      = line.Memo
                });
            }
            _financialService.AddJournalEntry(journalEntry);
            return(RedirectToAction("JournalEntries"));
        }
        public ActionResult EditJournalEntry(int id, bool fromGL = false)
        {
            // for now, use the same view model as add journal entry. nothing different
            var je = _financialService.GetJournalEntry(id, fromGL);

            var model = new Models.ViewModels.Financials.AddJournalEntry();

            model.Date           = je.Date;
            model.Memo           = je.Memo;
            model.ReferenceNo    = je.ReferenceNo;
            model.Id             = je.Id;
            model.JournalEntryId = je.Id;

            foreach (var line in je.JournalEntryLines)
            {
                model.AddJournalEntryLines.Add(new Models.ViewModels.Financials.AddJournalEntryLine()
                {
                    RowId       = line.Id.ToString(),
                    AccountId   = line.AccountId,
                    AccountName = line.Account.AccountName,
                    DrCr        = line.DrCr,
                    Amount      = line.Amount,
                    Memo        = line.Memo
                });
            }

            return(View(model));
        }
        public ActionResult SaveJournalEntry(Models.ViewModels.Financials.AddJournalEntry model)
        {
            if (model.AddJournalEntryLines.Count < 2)
            {
                return(View(model));
            }
            var journalEntry = new JournalEntryHeader()
            {
                Date        = model.Date,
                Memo        = model.Memo,
                ReferenceNo = model.ReferenceNo,
                VoucherType = model.JournalVoucherType
            };

            foreach (var line in model.AddJournalEntryLines)
            {
                journalEntry.JournalEntryLines.Add(new JournalEntryLine()
                {
                    AccountId = line.AccountId,
                    DrCr      = line.DrCr,
                    Amount    = line.Amount,
                    Memo      = line.Memo
                });
            }
            _financialService.AddJournalEntry(journalEntry);
            return(RedirectToAction("JournalEntries"));
        }
        public ActionResult UpdateJournalEntryLine(Models.ViewModels.Financials.AddJournalEntry model)
        {
            var request     = HttpContext.Request;
            var deletedItem = request.Form["DeletedLineItem"];

            model.AddJournalEntryLines.Remove(model.AddJournalEntryLines.Where(i => i.RowId.ToString() == deletedItem.ToString()).FirstOrDefault());
            return(View(model));
        }
 public ActionResult AddJournalEntryLine(Models.ViewModels.Financials.AddJournalEntry model)
 {
     if (model.AccountId != -1 && model.Amount > 0)
     {
         var rowId = Guid.NewGuid().ToString();
         model.AddJournalEntryLines.Add(new Models.ViewModels.Financials.AddJournalEntryLine()
         {
             RowId       = rowId,
             AccountId   = model.AccountId,
             AccountName = _financialService.GetAccounts().Where(a => a.Id == model.AccountId).FirstOrDefault().AccountName,
             DrCr        = model.DrCr,
             Amount      = model.Amount,
             Memo        = model.MemoLine
         });
     }
     return(View(model));
 }
        public ActionResult EditJournalEntry(Models.ViewModels.Financials.AddJournalEntry model)
        {
            if (model.AddJournalEntryLines.Count < 2)
            {
                return(View(model));
            }

            var journalEntry = _financialService.GetJournalEntry(model.JournalEntryId);

            journalEntry.Date        = model.Date;
            journalEntry.Memo        = model.Memo;
            journalEntry.ReferenceNo = model.ReferenceNo;
            journalEntry.ModifiedBy  = User.Identity.Name;
            journalEntry.ModifiedOn  = DateTime.Now;

            foreach (var line in model.AddJournalEntryLines)
            {
                if (journalEntry.JournalEntryLines.Any(l => l.AccountId == line.AccountId))
                {
                    var existingLine = journalEntry.JournalEntryLines.Where(l => l.AccountId == line.AccountId).FirstOrDefault();
                    existingLine.DrCr   = line.DrCr;
                    existingLine.Amount = line.Amount;
                    existingLine.Memo   = line.Memo;
                }
                else
                {
                    journalEntry.JournalEntryLines.Add(new JournalEntryLine()
                    {
                        AccountId = line.AccountId,
                        DrCr      = line.DrCr,
                        Amount    = line.Amount,
                        Memo      = line.Memo
                    });
                }
            }

            _financialService.UpdateJournalEntry(journalEntry);

            return(RedirectToAction("JournalEntries"));
        }
 public ActionResult AddJournalEntry()
 {
     var model = new Models.ViewModels.Financials.AddJournalEntry();
     return View(model);
 }
        public ActionResult AddJournalEntry()
        {
            var model = new Models.ViewModels.Financials.AddJournalEntry();

            return(View(model));
        }
        public ActionResult EditJournalEntry(int id, bool fromGL = false)
        {
            // for now, use the same view model as add journal entry. nothing different
            var je = _financialService.GetJournalEntry(id, fromGL);

            var model = new Models.ViewModels.Financials.AddJournalEntry();
            model.Date = je.Date;
            model.Memo = je.Memo;
            model.ReferenceNo = je.ReferenceNo;
            model.Id = je.Id;
            model.JournalEntryId = je.Id;

            foreach (var line in je.JournalEntryLines)
            {
                model.AddJournalEntryLines.Add(new Models.ViewModels.Financials.AddJournalEntryLine()
                {
                    RowId = line.Id.ToString(),
                    AccountId = line.AccountId,
                    AccountName = line.Account.AccountName,
                    DrCr = line.DrCr,
                    Amount = line.Amount,
                    Memo = line.Memo
                });
            }

            return View(model);
        }