示例#1
0
        /// <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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }