public InventoryMovementViewModel MapToViewModel(InventoryMovement model)
        {
            var viewModel = new InventoryMovementViewModel()
            {
                no               = model.No,
                date             = model.Date,
                referenceNo      = model.ReferenceNo,
                referenceType    = model.ReferenceType,
                productId        = model.ProductId,
                productCode      = model.ProductCode,
                productName      = model.ProductName,
                uomId            = model.UomId,
                uomUnit          = model.UomUnit,
                storageId        = model.StorageId,
                storageCode      = model.StorageCode,
                storageName      = model.StorageName,
                stockPlanning    = model.StockPlanning,
                before           = model.Before,
                quantity         = model.Quantity,
                after            = model.After,
                remark           = model.Remark,
                type             = model.Type,
                _LastModifiedUtc = model._LastModifiedUtc
            };

            PropertyCopier <InventoryMovement, InventoryMovementViewModel> .Copy(model, viewModel);

            return(viewModel);
        }
        public InventoryMovement MapToModel(InventoryMovementViewModel viewModel)
        {
            var model = new InventoryMovement()
            {
                No            = viewModel.no,
                Date          = viewModel.date,
                ReferenceNo   = viewModel.referenceNo,
                ReferenceType = viewModel.referenceType,
                ProductId     = viewModel.productId,
                ProductCode   = viewModel.productCode,
                ProductName   = viewModel.productName,
                UomId         = viewModel.uomId,
                UomUnit       = viewModel.uomUnit,
                StorageId     = viewModel.storageId,
                StorageCode   = viewModel.storageCode,
                StorageName   = viewModel.storageName,
                StockPlanning = viewModel.stockPlanning,
                Before        = viewModel.before,
                Quantity      = viewModel.quantity,
                After         = viewModel.after,
                Remark        = viewModel.remark,
                Type          = viewModel.type
            };

            PropertyCopier <InventoryMovementViewModel, InventoryMovement> .Copy(viewModel, model);

            return(model);
        }
Example #3
0
        /// <summary>
        /// Delete an entity.
        /// </summary>
        /// <param name="model"></param>
        public void Delete(InventoryMovementViewModel model)
        {
            var entity = model.ToEntity();

            this._InventoryMovementsRepository.Delete(entity);

            #region Commit Changes
            this._unitOfWork.Commit();
            #endregion
        }
Example #4
0
        /// <summary>
        /// Throw an exception if name is exist.
        /// </summary>
        /// <param name="model">InventoryMovement view model</param>
        public void ThrowExceptionIfExist(InventoryMovementViewModel model)
        {
            ConditionFilter <InventoryMovement, long> condition = new ConditionFilter <InventoryMovement, long>
            {
                Query = (entity =>
                         entity.Code == model.Code &&
                         entity.Id != model.Id)
            };
            var existEntity = this._InventoryMovementsRepository.Get(condition).FirstOrDefault();

            if (existEntity != null)
            {
                throw new ItemAlreadyExistException();
            }
        }
Example #5
0
        /// <summary>
        /// Update an entity.
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public InventoryMovementViewModel Update(InventoryMovementViewModel model)
        {
            this.ThrowExceptionIfExist(model);
            this._closedMonthsService.ValidateIfMonthIsClosed(model.Date.Value);

            var entity = model.ToEntity();

            entity = this._InventoryMovementsRepository.Update(entity);

            #region Commit Changes
            this._unitOfWork.Commit();
            #endregion

            model = entity.ToModel();
            return(model);
        }
Example #6
0
        /// <summary>
        /// Add an entity.
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public InventoryMovementViewModel Add(InventoryMovementViewModel model)
        {
            if (model.Journal == null)
            {
                this.ThrowExceptionIfExist(model);
                this._closedMonthsService.ValidateIfMonthIsClosed(model.Date.Value);

                var entity = model.ToEntity();
                entity = this._InventoryMovementsRepository.Add(entity);

                #region Commit Changes
                this._unitOfWork.Commit();
                #endregion

                model = entity.ToModel();

                if (model.InventoryMovementTypeId == (int)InventoryMovementTypeEnum.InventoryOut)
                {
                    model.Journal = this._journalPostingsService.Post(model.Id, MovementType.BankMovement);

                    model.Journal.Date = model.Date.Value;

                    foreach (var Journal in model.Journal.journalDetails)
                    {
                        Journal.AccountFullCode = this._accountChartsRepository.Get().FirstOrDefault(x => x.Id == Journal.AccountId).FullCode;
                    }
                    //model.Journal.DescriptionAr = model.DescriptionAr;
                    //model.Journal.DescriptionEn = model.DescriptionEn;
                }
                else
                {
                    this._journalPostingsService.TryPostAutomatic(entity.Id, MovementType.StoreMovement);
                }
            }
            else if (model.Journal.PostingStatus == PostingStatus.Approved)
            {
                model.Journal.PostingStatus = PostingStatus.NeedAprove;
                Journal journal = model.Journal.ToEntity();
                journal = this._journalsRepository.Add(journal);

                Journal journalAr = new Journal
                {
                    Description      = model.Journal.DescriptionAr,
                    Language         = Language.Arabic,
                    ParentKeyJournal = journal
                };
                journalAr = this._journalsRepository.Add(journalAr);
                journal.ChildTranslatedJournals.Add(journalAr);

                Journal journalEn = new Journal
                {
                    Description      = model.Journal.DescriptionEn,
                    Language         = Language.English,
                    ParentKeyJournal = journal
                };
                journalEn = this._journalsRepository.Add(journalEn);
                journal.ChildTranslatedJournals.Add(journalEn);
                var entity = this._InventoryMovementsRepository.Get(model.Id);
                entity.IsPosted       = false;
                entity.PostingDate    = DateTime.Now;
                entity.PostedByUserId = this._currentUserService.CurrentUserId;
                entity = this._InventoryMovementsRepository.Update(entity);
                this._unitOfWork.Commit();
            }
            else if (model.Journal.PostingStatus == PostingStatus.Rejected)
            {
            }
            return(model);
        }