/// <summary> /// Update an entity. /// </summary> /// <param name="model"></param> /// <returns></returns> public AddJournalEntriesViewModel Update(AddJournalEntriesViewModel model) { //this.ThrowExceptionIfExist(model); var entity = this._JournalsRepository.Get().FirstOrDefault(x => x.Id == model.Id); var entityAr = entity.ChildTranslatedJournals.FirstOrDefault(x => x.Language == Language.Arabic); entityAr.Description = model.DescriptionAr; var entityEn = entity.ChildTranslatedJournals.FirstOrDefault(x => x.Language == Language.English); entityEn.Description = model.DescriptionEn; this._JournalsRepository.Update(entityAr); this._JournalsRepository.Update(entityEn); for (int i = 0; i < entity.Transactions.Count; i++) { var id = entity.Transactions.ToArray()[i].Id; var tran = this._transactionsRepository.Get().FirstOrDefault(x => x.Id == id); tran.AccountChartId = model.journalDetails.ToArray()[i].AccountId; tran.CostCenterId = model.journalDetails.ToArray()[i].CostCenterId; tran.DescriptionAR = model.journalDetails.ToArray()[i].DescriptionAr; tran.DescriptionEN = model.journalDetails.ToArray()[i].DescriptionEn; this._transactionsRepository.Update(tran); } entity = this._JournalsRepository.Update(entity); #region Commit Changes this._unitOfWork.Commit(); #endregion model = entity.ToAddModel(); return(model); }
public AddJournalEntriesViewModel Approve(AddJournalEntriesViewModel model) { var entity = this._JournalsRepository.Get(model.DocId); bool needCommit = false; if (entity.PostingStatus != PostingStatus.Approved) { entity.PostingStatus = PostingStatus.Approved; this._JournalsRepository.Update(entity); if (needCommit == false) { needCommit = true; } } //throw new GeneralException((int)ErrorCodeEnum.NotPurchaseInvoiceOrRebate); List <Transaction> transactionsList = new List <Transaction>(); foreach (var item in model.journalDetails) { var trans = entity.Transactions.FirstOrDefault(x => x.Id == item.Id); if (item.AccountId > 0 && item.AccountId != trans.AccountChartId) { trans.AccountChartId = item.AccountId; if (needCommit == false) { needCommit = true; } } transactionsList.Add(trans); } this.UpdateCurrentValueOfAccountChartTreeByJournal( journalId: entity.Id, transactionList: transactionsList); if (needCommit) { this._unitOfWork.Commit(); } return(model); }
public AddJournalEntriesViewModel AddJournal(AddJournalEntriesViewModel model, PostingStatus postingStatus = PostingStatus.Approved) { var journalDetails = model.journalDetails; //if (journalDetails.Count % 2 == 0) //{ var credit = journalDetails.Where(z => z.IsCreditor == true).Select(x => x.CreditorValue).Sum(); var debt = journalDetails.Where(z => z.IsCreditor == false).Select(x => x.DebtorValue).Sum(); if ((credit - debt) != 0) { throw new GeneralException((int)ErrorCodeEnum.JournalNotbalanced); } //} //else //{ //throw new GeneralException((int)ErrorCodeEnum.JournalNotbalanced); //} foreach (var item in model.journalDetails) { if (item.IsCreditor) { item.Amount = item.CreditorValue; } else { item.Amount = item.DebtorValue; } } DateTime CurrentDate = DateTime.Now; var entity = model.ToEntity(); entity.PostingStatus = postingStatus; #region translation entity.Description = ""; entity.CreationDate = CurrentDate; entity.Code = model.DocumentNumber; entity.Date = model.Date; entity.Language = Language.None; Journal JournalAr = new Journal(); JournalAr.Description = model.DescriptionAr; JournalAr.Language = Language.Arabic; JournalAr.CreationDate = CurrentDate; JournalAr.Date = model.Date; JournalAr.FirstModificationDate = model.Date; JournalAr.LastModificationDate = model.Date; Journal JournalEn = new Journal(); JournalEn.Description = model.DescriptionEn; JournalEn.Language = Language.English; JournalEn.CreationDate = CurrentDate; JournalEn.Date = model.Date; JournalEn.FirstModificationDate = model.Date; JournalEn.LastModificationDate = model.Date; entity.ChildTranslatedJournals.Add(JournalAr); entity.ChildTranslatedJournals.Add(JournalEn); #endregion entity = this._JournalsRepository.Add(entity); //#region Commit Changes //this._unitOfWork.Commit(); //#endregion #region Generate New Code long newCode = 1; try { ConditionFilter <Journal, long> condition = new ConditionFilter <Journal, long> { Query = (entityItem => entityItem.ParentKeyJournalId == null && string.IsNullOrEmpty(entityItem.Code) == false), Order = Order.Descending }; var z = this._JournalsRepository.Get(condition); var lastEntity = z.FirstOrDefault(); if (lastEntity != null) { try { newCode = long.Parse(lastEntity.Code) + 1; } catch { newCode = entity.Id; } } } catch { //entity.Code = entity.Id.ToString(); } entity.Code = newCode.ToString(); //entity = this._JournalsRepository.Update(entity); //this._unitOfWork.Commit(); #endregion #region Commit Changes this._unitOfWork.Commit(); #endregion //model.DocumentNumber = entity.Id.ToString(); model.DocumentNumber = entity.Code; if (entity.ReversedFromId.HasValue) { var existEntity = this._JournalsRepository.Get(entity.ReversedFromId.Value); existEntity.IsReversed = true; existEntity.ReversedToId = entity.Id; this._JournalsRepository.Update(existEntity); this._unitOfWork.Commit(); } //model = entity.ToModel(); return(model); }