public void DeleteJournal(JournalMasterViewModel journal) { JournalMaster entity = _journalMasterRepository.GetById(journal.Id); _journalMasterRepository.Delete(entity); _unitOfWork.SaveChanges(); }
public JournalMasterViewModel RetrieveJournalByCode(string code) { JournalMaster result = _journalMasterRepository.GetMany(jm => jm.Code == code).FirstOrDefault(); JournalMasterViewModel mappedResult = new JournalMasterViewModel(); return(Map(result, mappedResult)); }
public void InsertJournal(JournalMasterViewModel journal) { JournalMaster entity = new JournalMaster(); Map(journal, entity); _journalMasterRepository.AttachNavigation<JournalMaster>(entity.Parent); _journalMasterRepository.Add(entity); _unitOfWork.SaveChanges(); }
public void UpdateJournal(JournalMasterViewModel journal) { JournalMaster entity = _journalMasterRepository.GetById(journal.Id); Map(journal, entity); _journalMasterRepository.AttachNavigation<JournalMaster>(entity.Parent); _journalMasterRepository.Update(entity); _unitOfWork.SaveChanges(); }
private void Properties_EditValueChanged(object sender, EventArgs e) { JournalMasterViewModel selectedJournal = lookUpJournal.GetSelectedDataRow() as JournalMasterViewModel; this.Code = "REF_CAT_JOURNAL_" + selectedJournal.Code; this.CategoryName = this.SelectedChildren == null ? selectedJournal.Name : this.CategoryName; this.CategoryDescription = this.SelectedChildren == null ? selectedJournal.Name : this.CategoryDescription; }
public void UpdateJournal(JournalMasterViewModel journal) { JournalMaster entity = _journalMasterRepository.GetById(journal.Id); Map(journal, entity); _journalMasterRepository.AttachNavigation <JournalMaster>(entity.Parent); _journalMasterRepository.Update(entity); _unitOfWork.SaveChanges(); }
public void InsertJournal(JournalMasterViewModel journal) { JournalMaster entity = new JournalMaster(); Map(journal, entity); _journalMasterRepository.AttachNavigation <JournalMaster>(entity.Parent); _journalMasterRepository.Add(entity); _unitOfWork.SaveChanges(); }
public override void RefreshDataView() { if (!bgwMain.IsBusy) { MethodBase.GetCurrentMethod().Info("Fecthing journal data..."); _selectedJournalMaster = null; FormHelpers.CurrentMainForm.UpdateStatusInformation("Memuat data jurnal...", false); bgwMain.RunWorkerAsync(); } }
private void lookUpFilterJournal_EditValueChanged(object sender, EventArgs e) { gvBalanceHelper.ViewCaption = "-"; JournalMasterViewModel selectedJournal = lookUpFilterJournal.GetSelectedDataRow() as JournalMasterViewModel; if (selectedJournal != null) { gvBalanceHelper.ViewCaption = string.Format(ViewCaptionFormat, selectedJournal.Name); } }
private void bgwMain_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (e.Result is Exception) { this.ShowError("Proses memuat data gagal!"); } if (gvJournalMaster.RowCount > 0) { SelectedJournalMaster = gvJournalMaster.GetRow(0) as JournalMasterViewModel; } FormHelpers.CurrentMainForm.UpdateStatusInformation("Memuat data jurnal selesai", true); }
protected bool IsCurrentJournalValid(JournalMasterViewModel currentJournal, string codeToCompare) { if (currentJournal.Code == codeToCompare) { return(true); } if (currentJournal.Parent != null) { return(IsCurrentJournalValid(currentJournal.Parent, codeToCompare)); } return(false); }
public void RecalculateBalanceJournal(int month, int year, int userId) { // harus pake using, dibiarin aja gak usah try catch commit rollback, kata nya sih udah otomatis using (var trans = _unitOfWork.BeginTransaction()) { try { BalanceJournalViewModel prevCalculated = RetrieveBalanceJournalHeader(month, year); if (prevCalculated != null) { DeleteBalanceJournal(prevCalculated.Id, userId); } DateTime firstDay = new DateTime(year, month, 1); DateTime lastDay = firstDay.AddMonths(1).AddSeconds(-1); DateTime prevMonth = firstDay.AddDays(-1); List <JournalMaster> listAllJournal = _journalMasterRepository.GetAll().ToList(); List <JournalMasterViewModel> mappedListAllJournal = new List <JournalMasterViewModel>(); Map(listAllJournal, mappedListAllJournal); Reference catJournalService = _referenceRepository.GetMany(r => r.Code == DbConstant.REF_CAT_JOURNAL_SERVICE).FirstOrDefault(); Reference catJournalCost = _referenceRepository.GetMany(r => r.Code == DbConstant.REF_CAT_JOURNAL_COST).FirstOrDefault(); Reference catJournalIncome = _referenceRepository.GetMany(r => r.Code == DbConstant.REF_CAT_JOURNAL_INCOME).FirstOrDefault(); List <string> catJournalServiceCodeList = _referenceRepository.GetMany(r => r.ParentId == catJournalService.Id).Select(r => r.Value).ToList(); List <string> catJournalCostCodeList = _referenceRepository.GetMany(r => r.ParentId == catJournalCost.Id).Select(r => r.Value).ToList(); List <string> catJournalIncomeCodeList = _referenceRepository.GetMany(r => r.ParentId == catJournalIncome.Id).Select(r => r.Value).ToList(); // calculate neraca // ------------------------------------------------------------------------------ // List semua akun jurnal dari tabel transaksi List <TransactionDetail> listTransaction = _transactionDetailRepository.GetMany(t => t.Parent.TransactionDate >= firstDay && t.Parent.TransactionDate <= lastDay && t.Parent.Status == (int)DbConstant.DefaultDataStatus.Active).ToList(); var journalTransactionList = listTransaction.DistinctBy(t => t.JournalId).Select(t => t.JournalId); List <BalanceJournalDetailViewModel> tempListBalanceDetailViewModel = new List <BalanceJournalDetailViewModel>(); foreach (var item in journalTransactionList) { BalanceJournalDetailViewModel detailViewModel = new BalanceJournalDetailViewModel(); detailViewModel.JournalId = item; tempListBalanceDetailViewModel.Add(detailViewModel); } // end init semua akun // 1. Ambil Saldo Awal dari Saldo Akhir Bulan Sebelumnya BalanceJournal lastJournal = _balanceJournalRepository.GetMany(bj => bj.Month == prevMonth.Month && bj.Year == prevMonth.Year && bj.Status == (int)DbConstant.DefaultDataStatus.Active).FirstOrDefault(); if (lastJournal != null) { // check apakah semua jurnal di last journal ada di temp list List <BalanceJournalDetail> lastJournalDetail = _balanceJournalDetailRepository.GetMany(bjd => bjd.ParentId == lastJournal.Id).ToList(); foreach (var item in lastJournalDetail) { if (tempListBalanceDetailViewModel.Where(temp => temp.JournalId == item.JournalId).Count() == 0) { JournalMasterViewModel mappedJournal = new JournalMasterViewModel(); tempListBalanceDetailViewModel.Add(new BalanceJournalDetailViewModel { Journal = Map(item.Journal, mappedJournal), JournalId = item.JournalId }); } } // update temp list untuk saldo awal foreach (var item in tempListBalanceDetailViewModel) { BalanceJournalDetail entityDetail = lastJournalDetail.Where(i => i.JournalId == item.JournalId).FirstOrDefault(); if (entityDetail == null) { continue; } item.FirstDebit = entityDetail.LastDebit; item.FirstCredit = entityDetail.LastCredit; } } // 2. Ambil mutasi Debet Kredit dari transaksi bulan berjalan foreach (var item in listTransaction) { if (tempListBalanceDetailViewModel.Where(t => t.JournalId == item.JournalId).Count() == 0) { tempListBalanceDetailViewModel.Add(new BalanceJournalDetailViewModel { JournalId = item.JournalId }); } BalanceJournalDetailViewModel currentViewModel = tempListBalanceDetailViewModel.Where(t => t.JournalId == item.JournalId).FirstOrDefault(); int currentIndex = tempListBalanceDetailViewModel.IndexOf(currentViewModel); currentViewModel.MutationDebit = (currentViewModel.MutationDebit ?? 0); currentViewModel.MutationCredit = (currentViewModel.MutationCredit ?? 0); currentViewModel.ReconciliationDebit = (currentViewModel.ReconciliationDebit ?? 0); currentViewModel.ReconciliationCredit = (currentViewModel.ReconciliationCredit ?? 0); if (!item.Parent.IsReconciliation) { currentViewModel.MutationCredit += (item.Credit ?? 0); currentViewModel.MutationDebit += (item.Debit ?? 0); } else { currentViewModel.ReconciliationDebit += (item.Debit ?? 0); currentViewModel.ReconciliationCredit += (item.Credit ?? 0); } tempListBalanceDetailViewModel[currentIndex] = currentViewModel; } // 4. Hitung Saldo Akhir decimal? incomeAmount = 0; decimal? serviceAmount = 0; decimal? costAmount = 0; List <string> cachedCode = new List <string>(); foreach (var item in tempListBalanceDetailViewModel) { // update saldo awal (saldo akhir + mutasi) item.BalanceAfterMutationDebit = (item.MutationDebit ?? 0); item.BalanceAfterMutationCredit = (item.MutationCredit ?? 0); decimal totalAfterReconciliation = ((item.BalanceAfterMutationDebit ?? 0) + (item.ReconciliationDebit ?? 0)) - ((item.BalanceAfterMutationCredit ?? 0) + (item.ReconciliationCredit ?? 0)); if (totalAfterReconciliation > 0) { item.BalanceAfterReconciliationDebit = totalAfterReconciliation; item.BalanceAfterReconciliationCredit = 0; } else { item.BalanceAfterReconciliationDebit = 0; item.BalanceAfterReconciliationCredit = Math.Abs(totalAfterReconciliation); } item.LastDebit = (item.FirstDebit ?? 0) + item.BalanceAfterReconciliationDebit; item.LastCredit = (item.FirstCredit ?? 0) + item.BalanceAfterReconciliationCredit; } // 5. Insert Keb Balance Header & Balance Detail BalanceJournal newBalanceHeader = new BalanceJournal(); newBalanceHeader.Month = month; newBalanceHeader.Year = year; newBalanceHeader.Status = (int)DbConstant.DefaultDataStatus.Active; newBalanceHeader.CreateDate = newBalanceHeader.ModifyDate = DateTime.Now; newBalanceHeader.CreateUserId = newBalanceHeader.ModifyUserId = userId; _balanceJournalRepository.AttachNavigation <User>(newBalanceHeader.CreateUser); _balanceJournalRepository.AttachNavigation <User>(newBalanceHeader.ModifyUser); newBalanceHeader = _balanceJournalRepository.Add(newBalanceHeader); _unitOfWork.SaveChanges(); foreach (var item in tempListBalanceDetailViewModel) { item.Journal = null; BalanceJournalDetail newBalanceDetail = new BalanceJournalDetail(); Map(item, newBalanceDetail); newBalanceDetail.ParentId = newBalanceHeader.Id; _balanceJournalDetailRepository.AttachNavigation <BalanceJournal>(newBalanceDetail.Parent); _balanceJournalDetailRepository.AttachNavigation <JournalMaster>(newBalanceDetail.Journal); _balanceJournalDetailRepository.Add(newBalanceDetail); } _unitOfWork.SaveChanges(); List <BalanceJournalDetailViewModel> mappedResult = RetrieveBalanceJournalDetailsByHeaderId(newBalanceHeader.Id); foreach (var item in tempListBalanceDetailViewModel) { foreach (var journalIncomeCode in catJournalIncomeCodeList) { List <int> cachedItems = new List <int>(); foreach (var itemBalance in mappedResult.Where(m => !m.IsChecked)) { if (IsCurrentJournalValid(itemBalance.Journal, journalIncomeCode)) { decimal currentAmount = (itemBalance.LastCredit ?? 0) - (itemBalance.LastDebit ?? 0); incomeAmount += currentAmount; cachedItems.Add(itemBalance.Id); } } foreach (var iCache in cachedItems) { BalanceJournalDetailViewModel current = mappedResult.Where(m => m.Id == iCache).FirstOrDefault(); int iCacheIndex = mappedResult.IndexOf(current); current.IsChecked = true; mappedResult[iCacheIndex] = current; } } foreach (var journalServiceCode in catJournalServiceCodeList) { List <int> cachedItems = new List <int>(); foreach (var itemBalance in mappedResult.Where(m => !m.IsChecked)) { if (IsCurrentJournalValid(itemBalance.Journal, journalServiceCode)) { decimal currentAmount = (itemBalance.LastCredit ?? 0) - (itemBalance.LastDebit ?? 0); serviceAmount += currentAmount; cachedItems.Add(itemBalance.Id); } } foreach (var iCache in cachedItems) { BalanceJournalDetailViewModel current = mappedResult.Where(m => m.Id == iCache).FirstOrDefault(); int iCacheIndex = mappedResult.IndexOf(current); current.IsChecked = true; mappedResult[iCacheIndex] = current; } } foreach (var journalCostCode in catJournalCostCodeList) { List <int> cachedItems = new List <int>(); foreach (var itemBalance in mappedResult.Where(m => !m.IsChecked)) { if (IsCurrentJournalValid(itemBalance.Journal, journalCostCode)) { decimal currentAmount = (itemBalance.LastCredit ?? 0) - (itemBalance.LastDebit ?? 0); costAmount += currentAmount; cachedItems.Add(itemBalance.Id); } } foreach (var iCache in cachedItems) { BalanceJournalDetailViewModel current = mappedResult.Where(m => m.Id == iCache).FirstOrDefault(); int iCacheIndex = mappedResult.IndexOf(current); current.IsChecked = true; mappedResult[iCacheIndex] = current; } } } //profitloss decimal?profitLossAmount = incomeAmount + serviceAmount + costAmount; BalanceJournalDetail profitDetail = new BalanceJournalDetail(); profitDetail.ParentId = newBalanceHeader.Id; JournalMasterViewModel profitLossCurrentMonthJournal = mappedListAllJournal.Where(j => j.Code == "2.03.05").FirstOrDefault(); profitDetail.JournalId = profitLossCurrentMonthJournal.Id; if (profitLossAmount > 0) { profitDetail.LastDebit = profitLossAmount; } else { profitDetail.LastCredit = Math.Abs(profitLossAmount.Value); } _balanceJournalDetailRepository.AttachNavigation <BalanceJournal>(profitDetail.Parent); _balanceJournalDetailRepository.AttachNavigation <JournalMaster>(profitDetail.Journal); _balanceJournalDetailRepository.Add(profitDetail); _unitOfWork.SaveChanges(); trans.Commit(); } catch (Exception ex) { trans.Rollback(); throw ex; } } }
public void RecalculateBalanceJournal(int month, int year, int userId) { // harus pake using, dibiarin aja gak usah try catch commit rollback, kata nya sih udah otomatis using (var trans = _unitOfWork.BeginTransaction()) { try { BalanceJournalViewModel prevCalculated = RetrieveBalanceJournalHeader(month, year); if (prevCalculated != null) { DeleteBalanceJournal(prevCalculated.Id, userId); } DateTime firstDay = new DateTime(year, month, 1); DateTime lastDay = firstDay.AddMonths(1).AddSeconds(-1); DateTime prevMonth = firstDay.AddDays(-1); List<JournalMaster> listAllJournal = _journalMasterRepository.GetAll().ToList(); List<JournalMasterViewModel> mappedListAllJournal = new List<JournalMasterViewModel>(); Map(listAllJournal, mappedListAllJournal); Reference catJournalService = _referenceRepository.GetMany(r => r.Code == DbConstant.REF_CAT_JOURNAL_SERVICE).FirstOrDefault(); Reference catJournalCost = _referenceRepository.GetMany(r => r.Code == DbConstant.REF_CAT_JOURNAL_COST).FirstOrDefault(); Reference catJournalIncome = _referenceRepository.GetMany(r => r.Code == DbConstant.REF_CAT_JOURNAL_INCOME).FirstOrDefault(); List<string> catJournalServiceCodeList = _referenceRepository.GetMany(r => r.ParentId == catJournalService.Id).Select(r => r.Value).ToList(); List<string> catJournalCostCodeList = _referenceRepository.GetMany(r => r.ParentId == catJournalCost.Id).Select(r => r.Value).ToList(); List<string> catJournalIncomeCodeList = _referenceRepository.GetMany(r => r.ParentId == catJournalIncome.Id).Select(r => r.Value).ToList(); // calculate neraca // ------------------------------------------------------------------------------ // List semua akun jurnal dari tabel transaksi List<TransactionDetail> listTransaction = _transactionDetailRepository.GetMany(t => t.Parent.TransactionDate >= firstDay && t.Parent.TransactionDate <= lastDay && t.Parent.Status == (int)DbConstant.DefaultDataStatus.Active).ToList(); var journalTransactionList = listTransaction.DistinctBy(t => t.JournalId).Select(t => t.JournalId); List<BalanceJournalDetailViewModel> tempListBalanceDetailViewModel = new List<BalanceJournalDetailViewModel>(); foreach (var item in journalTransactionList) { BalanceJournalDetailViewModel detailViewModel = new BalanceJournalDetailViewModel(); detailViewModel.JournalId = item; tempListBalanceDetailViewModel.Add(detailViewModel); } // end init semua akun // 1. Ambil Saldo Awal dari Saldo Akhir Bulan Sebelumnya BalanceJournal lastJournal = _balanceJournalRepository.GetMany(bj => bj.Month == prevMonth.Month && bj.Year == prevMonth.Year && bj.Status == (int)DbConstant.DefaultDataStatus.Active).FirstOrDefault(); if (lastJournal != null) { // check apakah semua jurnal di last journal ada di temp list List<BalanceJournalDetail> lastJournalDetail = _balanceJournalDetailRepository.GetMany(bjd => bjd.ParentId == lastJournal.Id).ToList(); foreach (var item in lastJournalDetail) { if (tempListBalanceDetailViewModel.Where(temp => temp.JournalId == item.JournalId).Count() == 0) { JournalMasterViewModel mappedJournal = new JournalMasterViewModel(); tempListBalanceDetailViewModel.Add(new BalanceJournalDetailViewModel { Journal = Map(item.Journal, mappedJournal), JournalId = item.JournalId }); } } // update temp list untuk saldo awal foreach (var item in tempListBalanceDetailViewModel) { BalanceJournalDetail entityDetail = lastJournalDetail.Where(i => i.JournalId == item.JournalId).FirstOrDefault(); if (entityDetail == null) continue; item.FirstDebit = entityDetail.LastDebit; item.FirstCredit = entityDetail.LastCredit; } } // 2. Ambil mutasi Debet Kredit dari transaksi bulan berjalan foreach (var item in listTransaction) { if (tempListBalanceDetailViewModel.Where(t => t.JournalId == item.JournalId).Count() == 0) { tempListBalanceDetailViewModel.Add(new BalanceJournalDetailViewModel { JournalId = item.JournalId }); } BalanceJournalDetailViewModel currentViewModel = tempListBalanceDetailViewModel.Where(t => t.JournalId == item.JournalId).FirstOrDefault(); int currentIndex = tempListBalanceDetailViewModel.IndexOf(currentViewModel); currentViewModel.MutationDebit = (currentViewModel.MutationDebit ?? 0); currentViewModel.MutationCredit = (currentViewModel.MutationCredit ?? 0); currentViewModel.ReconciliationDebit = (currentViewModel.ReconciliationDebit ?? 0); currentViewModel.ReconciliationCredit = (currentViewModel.ReconciliationCredit ?? 0); if (!item.Parent.IsReconciliation) { currentViewModel.MutationCredit += (item.Credit ?? 0); currentViewModel.MutationDebit += (item.Debit ?? 0); } else { currentViewModel.ReconciliationDebit += (item.Debit ?? 0); currentViewModel.ReconciliationCredit += (item.Credit ?? 0); } tempListBalanceDetailViewModel[currentIndex] = currentViewModel; } // 4. Hitung Saldo Akhir decimal? incomeAmount = 0; decimal? serviceAmount = 0; decimal? costAmount = 0; List<string> cachedCode = new List<string>(); foreach (var item in tempListBalanceDetailViewModel) { // update saldo awal (saldo akhir + mutasi) item.BalanceAfterMutationDebit = (item.MutationDebit ?? 0); item.BalanceAfterMutationCredit = (item.MutationCredit ?? 0); decimal totalAfterReconciliation = ((item.BalanceAfterMutationDebit ?? 0) + (item.ReconciliationDebit ?? 0)) - ((item.BalanceAfterMutationCredit ?? 0) + (item.ReconciliationCredit ?? 0)); if (totalAfterReconciliation > 0) { item.BalanceAfterReconciliationDebit = totalAfterReconciliation; item.BalanceAfterReconciliationCredit = 0; } else { item.BalanceAfterReconciliationDebit = 0; item.BalanceAfterReconciliationCredit = Math.Abs(totalAfterReconciliation); } item.LastDebit = (item.FirstDebit ?? 0) + item.BalanceAfterReconciliationDebit; item.LastCredit = (item.FirstCredit ?? 0) + item.BalanceAfterReconciliationCredit; } // 5. Insert Keb Balance Header & Balance Detail BalanceJournal newBalanceHeader = new BalanceJournal(); newBalanceHeader.Month = month; newBalanceHeader.Year = year; newBalanceHeader.Status = (int)DbConstant.DefaultDataStatus.Active; newBalanceHeader.CreateDate = newBalanceHeader.ModifyDate = DateTime.Now; newBalanceHeader.CreateUserId = newBalanceHeader.ModifyUserId = userId; _balanceJournalRepository.AttachNavigation<User>(newBalanceHeader.CreateUser); _balanceJournalRepository.AttachNavigation<User>(newBalanceHeader.ModifyUser); newBalanceHeader = _balanceJournalRepository.Add(newBalanceHeader); _unitOfWork.SaveChanges(); foreach (var item in tempListBalanceDetailViewModel) { item.Journal = null; BalanceJournalDetail newBalanceDetail = new BalanceJournalDetail(); Map(item, newBalanceDetail); newBalanceDetail.ParentId = newBalanceHeader.Id; _balanceJournalDetailRepository.AttachNavigation<BalanceJournal>(newBalanceDetail.Parent); _balanceJournalDetailRepository.AttachNavigation<JournalMaster>(newBalanceDetail.Journal); _balanceJournalDetailRepository.Add(newBalanceDetail); } _unitOfWork.SaveChanges(); List<BalanceJournalDetailViewModel> mappedResult = RetrieveBalanceJournalDetailsByHeaderId(newBalanceHeader.Id); foreach (var item in tempListBalanceDetailViewModel) { foreach (var journalIncomeCode in catJournalIncomeCodeList) { List<int> cachedItems = new List<int>(); foreach (var itemBalance in mappedResult.Where(m => !m.IsChecked)) { if (IsCurrentJournalValid(itemBalance.Journal, journalIncomeCode)) { decimal currentAmount = (itemBalance.LastCredit ?? 0) - (itemBalance.LastDebit ?? 0); incomeAmount += currentAmount; cachedItems.Add(itemBalance.Id); } } foreach (var iCache in cachedItems) { BalanceJournalDetailViewModel current = mappedResult.Where(m => m.Id == iCache).FirstOrDefault(); int iCacheIndex = mappedResult.IndexOf(current); current.IsChecked = true; mappedResult[iCacheIndex] = current; } } foreach (var journalServiceCode in catJournalServiceCodeList) { List<int> cachedItems = new List<int>(); foreach (var itemBalance in mappedResult.Where(m => !m.IsChecked)) { if (IsCurrentJournalValid(itemBalance.Journal, journalServiceCode)) { decimal currentAmount = (itemBalance.LastCredit ?? 0) - (itemBalance.LastDebit ?? 0); serviceAmount += currentAmount; cachedItems.Add(itemBalance.Id); } } foreach (var iCache in cachedItems) { BalanceJournalDetailViewModel current = mappedResult.Where(m => m.Id == iCache).FirstOrDefault(); int iCacheIndex = mappedResult.IndexOf(current); current.IsChecked = true; mappedResult[iCacheIndex] = current; } } foreach (var journalCostCode in catJournalCostCodeList) { List<int> cachedItems = new List<int>(); foreach (var itemBalance in mappedResult.Where(m => !m.IsChecked)) { if (IsCurrentJournalValid(itemBalance.Journal, journalCostCode)) { decimal currentAmount = (itemBalance.LastCredit ?? 0) - (itemBalance.LastDebit ?? 0); costAmount += currentAmount; cachedItems.Add(itemBalance.Id); } } foreach (var iCache in cachedItems) { BalanceJournalDetailViewModel current = mappedResult.Where(m => m.Id == iCache).FirstOrDefault(); int iCacheIndex = mappedResult.IndexOf(current); current.IsChecked = true; mappedResult[iCacheIndex] = current; } } } //profitloss decimal? profitLossAmount = incomeAmount + serviceAmount + costAmount; BalanceJournalDetail profitDetail = new BalanceJournalDetail(); profitDetail.ParentId = newBalanceHeader.Id; JournalMasterViewModel profitLossCurrentMonthJournal = mappedListAllJournal.Where(j => j.Code == "2.03.05").FirstOrDefault(); profitDetail.JournalId = profitLossCurrentMonthJournal.Id; if (profitLossAmount > 0) { profitDetail.LastDebit = profitLossAmount; } else { profitDetail.LastCredit = Math.Abs(profitLossAmount.Value); } _balanceJournalDetailRepository.AttachNavigation<BalanceJournal>(profitDetail.Parent); _balanceJournalDetailRepository.AttachNavigation<JournalMaster>(profitDetail.Journal); _balanceJournalDetailRepository.Add(profitDetail); _unitOfWork.SaveChanges(); trans.Commit(); } catch (Exception ex) { trans.Rollback(); throw ex; } } }
protected bool IsCurrentJournalValid(JournalMasterViewModel currentJournal, string codeToCompare) { if (currentJournal.Code == codeToCompare) return true; if (currentJournal.Parent != null) { return IsCurrentJournalValid(currentJournal.Parent, codeToCompare); } return false; }
public JournalMasterViewModel RetrieveJournalByCode(string code) { JournalMaster result = _journalMasterRepository.GetMany(jm => jm.Code == code).FirstOrDefault(); JournalMasterViewModel mappedResult = new JournalMasterViewModel(); return Map(result, mappedResult); }
private void gvJournalMaster_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e) { _selectedJournalMaster = gvJournalMaster.GetFocusedRow() as JournalMasterViewModel; }
public List <BalanceJournalDetailViewModel> RetrieveFormattedBalanceJournalDetailsByHeaderId(int headerId) { List <BalanceJournalDetailViewModel> mappedResult = base.RetrieveBalanceJournalDetailsByHeaderId(headerId); List <BalanceJournalDetailViewModel> formattedResult = new List <BalanceJournalDetailViewModel>(); Reference catBalanceSheetJournal = _referenceRepository.GetMany(r => r.Code == DbConstant.REF_CAT_JOURNAL_BALANCESHEET).FirstOrDefault(); List <Reference> listBalanceSheetJournal = _referenceRepository.GetMany(r => r.ParentId == catBalanceSheetJournal.Id).ToList(); foreach (var itemJournal in listBalanceSheetJournal) { BalanceJournalDetailViewModel itemResult = new BalanceJournalDetailViewModel(); itemResult.Parent = base.RetrieveBalanceJournalHeaderById(headerId); itemResult.ParentId = headerId; JournalMasterViewModel selectedJournal = base.RetrieveJournalByCode(itemJournal.Value); itemResult.Journal = selectedJournal; itemResult.JournalId = selectedJournal.Id; itemResult.FirstDebit = 0; itemResult.FirstCredit = 0; itemResult.MutationDebit = 0; itemResult.MutationCredit = 0; itemResult.BalanceAfterMutationDebit = 0; itemResult.BalanceAfterMutationCredit = 0; itemResult.ReconciliationDebit = 0; itemResult.ReconciliationCredit = 0; itemResult.BalanceAfterReconciliationDebit = 0; itemResult.BalanceAfterReconciliationCredit = 0; itemResult.ProfitLossDebit = 0; itemResult.ProfitLossCredit = 0; itemResult.LastDebit = 0; itemResult.LastCredit = 0; List <int> cachedItems = new List <int>(); foreach (var itemBalance in mappedResult.Where(m => !m.IsChecked)) { if (base.IsCurrentJournalValid(itemBalance.Journal, itemJournal.Value)) { itemResult.FirstDebit += (itemBalance.FirstDebit ?? 0); itemResult.FirstCredit += (itemBalance.FirstCredit ?? 0); itemResult.MutationDebit += (itemBalance.MutationDebit ?? 0); itemResult.MutationCredit += (itemBalance.MutationCredit ?? 0); itemResult.BalanceAfterMutationDebit += (itemBalance.BalanceAfterMutationDebit ?? 0); itemResult.BalanceAfterMutationCredit += (itemBalance.BalanceAfterMutationCredit ?? 0); itemResult.ReconciliationDebit += (itemBalance.ReconciliationDebit ?? 0); itemResult.ReconciliationCredit += (itemBalance.ReconciliationCredit ?? 0); itemResult.BalanceAfterReconciliationDebit += (itemBalance.BalanceAfterReconciliationDebit ?? 0); itemResult.BalanceAfterReconciliationCredit += (itemBalance.BalanceAfterReconciliationCredit ?? 0); itemResult.ProfitLossDebit += (itemBalance.ProfitLossDebit ?? 0); itemResult.ProfitLossCredit += (itemBalance.ProfitLossCredit ?? 0); itemResult.LastDebit += (itemBalance.LastDebit ?? 0); itemResult.LastCredit += (itemBalance.LastCredit ?? 0); cachedItems.Add(itemBalance.Id); } } formattedResult.Add(itemResult); foreach (var iCache in cachedItems) { BalanceJournalDetailViewModel current = mappedResult.Where(m => m.Id == iCache).FirstOrDefault(); int iCacheIndex = mappedResult.IndexOf(current); current.IsChecked = true; mappedResult[iCacheIndex] = current; } } return(formattedResult); }
public List<BalanceHelperItemViewModel> RetrieveBalanceHelper(int year, int month, int journalId) { List<BalanceHelperItemViewModel> result = new List<BalanceHelperItemViewModel>(); JournalMaster currentJournal = _journalMasterRepository.GetById(journalId); JournalMasterViewModel mappedCurrentJournal = new JournalMasterViewModel(); Map(currentJournal, mappedCurrentJournal); DateTime firstDay = new DateTime(year, month, 1); DateTime lastDay = new DateTime(year, month, DateTime.DaysInMonth(year, month)); DateTime prevMonth = firstDay.AddDays(-1); List<TransactionDetail> listTransaction = _transactionDetailRepository.GetMany(t => t.Parent.TransactionDate >= firstDay && t.Parent.TransactionDate <= lastDay && t.Parent.Status == (int)DbConstant.DefaultDataStatus.Active).ToList(); List<TransactionDetailViewModel> mappedListTransaction = new List<TransactionDetailViewModel>(); Map(listTransaction, mappedListTransaction); mappedListTransaction = mappedListTransaction.Where(mt => IsCurrentJournalValid(mt.Journal, mappedCurrentJournal.Code)).ToList(); BalanceJournal lastJournal = _balanceJournalRepository.GetMany(bj => bj.Month == prevMonth.Month && bj.Year == prevMonth.Year && bj.Status == (int)DbConstant.DefaultDataStatus.Active).FirstOrDefault(); if (lastJournal != null) { List<BalanceJournalDetail> lastJournalDetail = _balanceJournalDetailRepository.GetMany(bjd => bjd.ParentId == lastJournal.Id).ToList(); List<BalanceJournalDetailViewModel> mappedLastJournalDetail = new List<BalanceJournalDetailViewModel>(); Map(lastJournalDetail, mappedLastJournalDetail); mappedLastJournalDetail = mappedLastJournalDetail.Where(jDet => IsCurrentJournalValid(jDet.Journal, mappedCurrentJournal.Code)).ToList(); foreach (var item in mappedLastJournalDetail) { BalanceHelperItemViewModel firstBalanceItem = new BalanceHelperItemViewModel(); firstBalanceItem.TransactionDate = prevMonth; firstBalanceItem.JournalCode = item.Journal.Code; firstBalanceItem.JournalName = item.Journal.Name; firstBalanceItem.Balance = (item.LastDebit ?? 0) - (item.LastCredit ?? 0); result.Add(firstBalanceItem); } } foreach (var transItem in mappedListTransaction) { decimal prevBalance = 0; if(result.Count > 0) { prevBalance = result[result.Count - 1].Balance; } BalanceHelperItemViewModel transBalanceItem = new BalanceHelperItemViewModel(); transBalanceItem.TransactionDate = transItem.Parent.TransactionDate; transBalanceItem.JournalCode = transItem.Journal.Code; transBalanceItem.JournalName = transItem.Journal.Name; transBalanceItem.MutationDebit = (transItem.Debit ?? 0); transBalanceItem.MutationCredit = (transItem.Credit ?? 0); transBalanceItem.Balance = (transBalanceItem.MutationDebit - transBalanceItem.MutationCredit) + prevBalance; result.Add(transBalanceItem); //if (IsCurrentJournalValid(transItem.Journal, mappedCurrentJournal.Code)) //{ // BalanceHelperItemViewModel transBalanceItem = new BalanceHelperItemViewModel(); // transBalanceItem.TransactionDate = transItem.Parent.TransactionDate; // transBalanceItem.JournalCode = transItem.Journal.Code; // transBalanceItem.JournalName = transItem.Journal.Name; // transBalanceItem.MutationDebit = (transItem.Debit ?? 0); // transBalanceItem.MutationCredit = (transItem.Credit ?? 0); // transBalanceItem.Balance = (transBalanceItem.MutationDebit - transBalanceItem.MutationCredit) + prevBalance; // result.Add(transBalanceItem); //} } return result; }
public List <BalanceHelperItemViewModel> RetrieveBalanceHelper(int year, int month, int journalId) { List <BalanceHelperItemViewModel> result = new List <BalanceHelperItemViewModel>(); JournalMaster currentJournal = _journalMasterRepository.GetById(journalId); JournalMasterViewModel mappedCurrentJournal = new JournalMasterViewModel(); Map(currentJournal, mappedCurrentJournal); DateTime firstDay = new DateTime(year, month, 1); DateTime lastDay = new DateTime(year, month, DateTime.DaysInMonth(year, month)); DateTime prevMonth = firstDay.AddDays(-1); List <TransactionDetail> listTransaction = _transactionDetailRepository.GetMany(t => t.Parent.TransactionDate >= firstDay && t.Parent.TransactionDate <= lastDay && t.Parent.Status == (int)DbConstant.DefaultDataStatus.Active).ToList(); List <TransactionDetailViewModel> mappedListTransaction = new List <TransactionDetailViewModel>(); Map(listTransaction, mappedListTransaction); mappedListTransaction = mappedListTransaction.Where(mt => IsCurrentJournalValid(mt.Journal, mappedCurrentJournal.Code)).ToList(); BalanceJournal lastJournal = _balanceJournalRepository.GetMany(bj => bj.Month == prevMonth.Month && bj.Year == prevMonth.Year && bj.Status == (int)DbConstant.DefaultDataStatus.Active).FirstOrDefault(); if (lastJournal != null) { List <BalanceJournalDetail> lastJournalDetail = _balanceJournalDetailRepository.GetMany(bjd => bjd.ParentId == lastJournal.Id).ToList(); List <BalanceJournalDetailViewModel> mappedLastJournalDetail = new List <BalanceJournalDetailViewModel>(); Map(lastJournalDetail, mappedLastJournalDetail); mappedLastJournalDetail = mappedLastJournalDetail.Where(jDet => IsCurrentJournalValid(jDet.Journal, mappedCurrentJournal.Code)).ToList(); foreach (var item in mappedLastJournalDetail) { BalanceHelperItemViewModel firstBalanceItem = new BalanceHelperItemViewModel(); firstBalanceItem.TransactionDate = prevMonth; firstBalanceItem.JournalCode = item.Journal.Code; firstBalanceItem.JournalName = item.Journal.Name; firstBalanceItem.Balance = (item.LastDebit ?? 0) - (item.LastCredit ?? 0); result.Add(firstBalanceItem); } } foreach (var transItem in mappedListTransaction) { decimal prevBalance = 0; if (result.Count > 0) { prevBalance = result[result.Count - 1].Balance; } BalanceHelperItemViewModel transBalanceItem = new BalanceHelperItemViewModel(); transBalanceItem.TransactionDate = transItem.Parent.TransactionDate; transBalanceItem.JournalCode = transItem.Journal.Code; transBalanceItem.JournalName = transItem.Journal.Name; transBalanceItem.MutationDebit = (transItem.Debit ?? 0); transBalanceItem.MutationCredit = (transItem.Credit ?? 0); transBalanceItem.Balance = (transBalanceItem.MutationDebit - transBalanceItem.MutationCredit) + prevBalance; result.Add(transBalanceItem); //if (IsCurrentJournalValid(transItem.Journal, mappedCurrentJournal.Code)) //{ // BalanceHelperItemViewModel transBalanceItem = new BalanceHelperItemViewModel(); // transBalanceItem.TransactionDate = transItem.Parent.TransactionDate; // transBalanceItem.JournalCode = transItem.Journal.Code; // transBalanceItem.JournalName = transItem.Journal.Name; // transBalanceItem.MutationDebit = (transItem.Debit ?? 0); // transBalanceItem.MutationCredit = (transItem.Credit ?? 0); // transBalanceItem.Balance = (transBalanceItem.MutationDebit - transBalanceItem.MutationCredit) + prevBalance; // result.Add(transBalanceItem); //} } return(result); }
public void DeleteJournal(JournalMasterViewModel journal) { JournalMaster entity = _journalMasterRepository.GetById(journal.Id); _journalMasterRepository.Delete(entity); _unitOfWork.SaveChanges(); }