public bool ValidUpdateObject(RollerBuilder rollerBuilder, IRollerBuilderService _rollerBuilderService, IMachineService _machineService, IUoMService _uomService,
                               IItemService _itemService, ICoreBuilderService _coreBuilderService, IRollerTypeService _rollerTypeService)
 {
     rollerBuilder.Errors.Clear();
     VUpdateObject(rollerBuilder, _rollerBuilderService, _machineService, _uomService, _itemService, _coreBuilderService, _rollerTypeService);
     return(isValid(rollerBuilder));
 }
        public RollerBuilder SoftDeleteObject(RollerBuilder rollerBuilder, IItemService _itemService, IRecoveryOrderDetailService _recoveryOrderDetailService,
                                              ICoreBuilderService _coreBuilderService, IWarehouseItemService _warehouseItemService, IStockMutationService _stockMutationService,
                                              IItemTypeService _itemTypeService)
        {
            Item RollerUsedCore = _itemService.GetObjectById(rollerBuilder.RollerUsedCoreItemId);
            Item RollerNewCore  = _itemService.GetObjectById(rollerBuilder.RollerNewCoreItemId);

            if (_itemService.GetValidator().ValidDeleteLegacyObject(RollerUsedCore, _stockMutationService, _itemTypeService, _warehouseItemService) &&
                _itemService.GetValidator().ValidDeleteLegacyObject(RollerUsedCore, _stockMutationService, _itemTypeService, _warehouseItemService))
            {
                if (_validator.ValidDeleteObject(rollerBuilder, _recoveryOrderDetailService))
                {
                    _itemService.GetRepository().SoftDeleteObject(RollerUsedCore);
                    _itemService.GetRepository().SoftDeleteObject(RollerNewCore);
                    _repository.SoftDeleteObject(rollerBuilder);
                }
            }
            else
            {
                if (RollerUsedCore.Errors.Count() > 0)
                {
                    rollerBuilder.Errors.Add(RollerUsedCore.Errors.First().Key, RollerUsedCore.Errors.First().Value);
                }
                else if (RollerNewCore.Errors.Count() > 0)
                {
                    rollerBuilder.Errors.Add(RollerNewCore.Errors.First().Key, RollerNewCore.Errors.First().Value);
                }
                else
                {
                    rollerBuilder.Errors.Add("Generic", "Item tidak dapat di hapus");
                }
            }
            return(rollerBuilder);
        }
 public RollerBuilder VNameNotEmpty(RollerBuilder rollerBuilder)
 {
     if (String.IsNullOrEmpty(rollerBuilder.Name) || rollerBuilder.Name.Trim() == "")
     {
         rollerBuilder.Errors.Add("Name", "Tidak boleh kosong");
     }
     return(rollerBuilder);
 }
        public RollerBuilder VHasCompound(RollerBuilder rollerBuilder, IItemService _itemService)
        {
            Item item = _itemService.GetObjectById(rollerBuilder.CompoundId);

            if (item == null)
            {
                rollerBuilder.Errors.Add("CompoundId", "Tidak terasosiasi dengan compound");
            }
            return(rollerBuilder);
        }
        public RollerBuilder VHasCoreBuilder(RollerBuilder rollerBuilder, ICoreBuilderService _coreBuilderService)
        {
            CoreBuilder coreBuilder = _coreBuilderService.GetObjectById(rollerBuilder.CoreBuilderId);

            if (coreBuilder == null)
            {
                rollerBuilder.Errors.Add("CoreBuilderId", "Tidak terasosiasi dengan coreBuilder");
            }
            return(rollerBuilder);
        }
        public RollerBuilder VHasRollerType(RollerBuilder rollerBuilder, IRollerTypeService _rollerTypeService)
        {
            RollerType rollerType = _rollerTypeService.GetObjectById(rollerBuilder.RollerTypeId);

            if (rollerType == null)
            {
                rollerBuilder.Errors.Add("RollerTypeId", "Tidak terasosiasi dengan rollerType");
            }
            return(rollerBuilder);
        }
        public RollerBuilder VHasRollerNewCoreItem(RollerBuilder rollerBuilder, IItemService _itemService)
        {
            Item RollerNewCoreItem = _itemService.GetObjectById(rollerBuilder.RollerNewCoreItemId);

            if (RollerNewCoreItem == null)
            {
                rollerBuilder.Errors.Add("RollerNewCoreItemId", "Tidak terasosiasi dengan Item");
            }
            return(rollerBuilder);
        }
        public RollerBuilder VIsInRecoveryOrderDetails(RollerBuilder rollerBuilder, IRecoveryOrderDetailService _recoveryOrderDetailService)
        {
            IList <RecoveryOrderDetail> details = _recoveryOrderDetailService.GetObjectsByRollerBuilderId(rollerBuilder.Id);

            if (details.Any())
            {
                rollerBuilder.Errors.Add("Generic", "Tidak boleh memiliki asosiasi Recovery Order Detail");
            }
            return(rollerBuilder);
        }
        public RollerBuilder VHasUoM(RollerBuilder rollerBuilder, IUoMService _uomService)
        {
            UoM uom = _uomService.GetObjectById(rollerBuilder.UoMId);

            if (uom == null)
            {
                rollerBuilder.Errors.Add("UoMId", "Tidak terasosiasi dengan unit of measurement");
            }
            return(rollerBuilder);
        }
        public RecoveryOrderDetail VHasRollerBuilder(RecoveryOrderDetail recoveryOrderDetail, IRollerBuilderService _rollerBuilderService)
        {
            RollerBuilder rollerBuilder = _rollerBuilderService.GetObjectById(recoveryOrderDetail.RollerBuilderId);

            if (rollerBuilder == null)
            {
                recoveryOrderDetail.Errors.Add("RollerBuilderId", "Tidak terasosiasi dengan Roller Builder");
            }
            return(recoveryOrderDetail);
        }
        public RollerBuilder VHasMachine(RollerBuilder rollerBuilder, IMachineService _machineService)
        {
            Machine machine = _machineService.GetObjectById(rollerBuilder.MachineId);

            if (machine == null)
            {
                rollerBuilder.Errors.Add("MachineId", "Tidak terasosiasi dengan machine");
            }
            return(rollerBuilder);
        }
 public RollerBuilder VHasUniqueBaseSku(RollerBuilder rollerBuilder, IRollerBuilderService _rollerBuilderService)
 {
     if (String.IsNullOrEmpty(rollerBuilder.BaseSku) || rollerBuilder.BaseSku.Trim() == "")
     {
         rollerBuilder.Errors.Add("BaseSku", "Tidak boleh kosong");
     }
     if (_rollerBuilderService.IsBaseSkuDuplicated(rollerBuilder))
     {
         rollerBuilder.Errors.Add("BaseSku", "Tidak boleh diduplikasi");
     }
     return(rollerBuilder);
 }
        public string PrintError(RollerBuilder obj)
        {
            string erroroutput = "";
            KeyValuePair <string, string> first = obj.Errors.ElementAt(0);

            erroroutput += first.Key + "," + first.Value;
            foreach (KeyValuePair <string, string> pair in obj.Errors.Skip(1))
            {
                erroroutput += Environment.NewLine;
                erroroutput += pair.Key + "," + pair.Value;
            }
            return(erroroutput);
        }
 public RollerBuilder VUpdateObject(RollerBuilder rollerBuilder, IRollerBuilderService _rollerBuilderService, IMachineService _machineService, IUoMService _uomService,
                                    IItemService _itemService, ICoreBuilderService _coreBuilderService, IRollerTypeService _rollerTypeService)
 {
     VCreateObject(rollerBuilder, _rollerBuilderService, _machineService, _uomService, _itemService, _coreBuilderService, _rollerTypeService);
     if (!isValid(rollerBuilder))
     {
         return(rollerBuilder);
     }
     VHasRollerUsedCoreItem(rollerBuilder, _itemService);
     if (!isValid(rollerBuilder))
     {
         return(rollerBuilder);
     }
     VHasRollerNewCoreItem(rollerBuilder, _itemService);
     return(rollerBuilder);
 }
Exemple #15
0
        public dynamic Insert(RollerBuilder model)
        {
            try
            {
                model = _rollerBuilderService.CreateObject(model, _machineService, _uomService, _itemService, _itemTypeService, _coreBuilderService, _rollerTypeService, _warehouseItemService, _warehouseService);
            }
            catch (Exception ex)
            {
                LOG.Error("Insert Failed", ex);
                model.Errors.Add("Generic", "Error : " + ex);
            }

            return(Json(new
            {
                model.Errors
            }));
        }
Exemple #16
0
        public dynamic Delete(RollerBuilder model)
        {
            try
            {
                var data = _rollerBuilderService.GetObjectById(model.Id);
                model = _rollerBuilderService.SoftDeleteObject(data, _itemService, _recoveryOrderDetailService, _coreBuilderService, _warehouseItemService, _stockMutationService, _itemTypeService);
            }
            catch (Exception ex)
            {
                LOG.Error("Delete Failed", ex);
                model.Errors.Add("Generic", "Error : " + ex);
            }

            return(Json(new
            {
                model.Errors
            }));
        }
Exemple #17
0
        public RollerBuilder UpdateObject(RollerBuilder rollerBuilder, IMachineService _machineService, IUoMService _uomService,
                                          IItemService _itemService, IItemTypeService _itemTypeService, ICoreBuilderService _coreBuilderService,
                                          IRollerTypeService _rollerTypeService, IWarehouseItemService _warehouseItemService, IWarehouseService _warehouseService,
                                          IBarringService _barringService, IContactService _contactService, IPriceMutationService _priceMutationService,
                                          IContactGroupService _contactGroupService)
        {
            Item RollerUsedCore = _itemService.GetObjectById(rollerBuilder.RollerUsedCoreItemId);

            RollerUsedCore.Name     = rollerBuilder.Name;
            RollerUsedCore.Category = rollerBuilder.Category;
            Item RollerNewCore = _itemService.GetObjectById(rollerBuilder.RollerNewCoreItemId);

            RollerNewCore.Name     = rollerBuilder.Name;
            RollerNewCore.Category = rollerBuilder.Category;

            if (_itemService.GetValidator().ValidUpdateLegacyObject(RollerUsedCore, _uomService, _itemService, _itemTypeService) &&
                _itemService.GetValidator().ValidUpdateLegacyObject(RollerNewCore, _uomService, _itemService, _itemTypeService))
            {
                if (_validator.ValidUpdateObject(rollerBuilder, this, _machineService, _uomService, _itemService, _coreBuilderService, _rollerTypeService))
                {
                    _itemService.UpdateLegacyObject(RollerUsedCore, _uomService, _itemTypeService, _warehouseItemService, _warehouseService, _barringService,
                                                    _contactService, _machineService, _priceMutationService, _contactGroupService);
                    _itemService.UpdateLegacyObject(RollerNewCore, _uomService, _itemTypeService, _warehouseItemService, _warehouseService, _barringService,
                                                    _contactService, _machineService, _priceMutationService, _contactGroupService);
                    rollerBuilder = _repository.UpdateObject(rollerBuilder);
                }
            }
            else
            {
                if (RollerUsedCore.Errors.Count() > 0)
                {
                    rollerBuilder.Errors.Add(RollerUsedCore.Errors.First().Key, RollerUsedCore.Errors.First().Value);
                }
                else if (RollerNewCore.Errors.Count() > 0)
                {
                    rollerBuilder.Errors.Add(RollerNewCore.Errors.First().Key, RollerNewCore.Errors.First().Value);
                }
                else
                {
                    rollerBuilder.Errors.Add("Generic", "Item tidak dapat di update");
                }
            }
            return(rollerBuilder);
        }
        public RecoveryOrderDetail RejectObject(RecoveryOrderDetail recoveryOrderDetail, DateTime RejectedDate, ICoreIdentificationService _coreIdentificationService, ICoreIdentificationDetailService _coreIdentificationDetailService,
                                                IRecoveryOrderService _recoveryOrderService, IRecoveryAccessoryDetailService _recoveryAccessoryDetailService, ICoreBuilderService _coreBuilderService, IRollerBuilderService _rollerBuilderService,
                                                IItemService _itemService, IWarehouseItemService _warehouseItemService, IBarringService _barringService, IStockMutationService _stockMutationService)
        {
            recoveryOrderDetail.RejectedDate = RejectedDate;
            if (_validator.ValidRejectObject(recoveryOrderDetail, _recoveryOrderService))
            {
                _repository.RejectObject(recoveryOrderDetail);

                // add recovery order quantity reject
                // if valid, complete recovery order = true
                RecoveryOrder recoveryOrder = _recoveryOrderService.GetObjectById(recoveryOrderDetail.RecoveryOrderId);
                recoveryOrder.QuantityRejected += 1;
                _recoveryOrderService.AdjustQuantity(recoveryOrder);
                if (_recoveryOrderService.GetValidator().ValidCompleteObject(recoveryOrder, this, _recoveryAccessoryDetailService))
                {
                    _recoveryOrderService.CompleteObject(recoveryOrder, _coreIdentificationDetailService, this, _recoveryAccessoryDetailService);
                }

                bool CaseAddition = false;

                // deduce compound
                RollerBuilder rollerBuilder         = _rollerBuilderService.GetObjectById(recoveryOrderDetail.RollerBuilderId);
                Item          compound              = _itemService.GetObjectById(rollerBuilder.CompoundId);
                WarehouseItem warehouseCompound     = _warehouseItemService.FindOrCreateObject(recoveryOrder.WarehouseId, compound.Id);
                StockMutation stockMutationCompound = _stockMutationService.CreateStockMutationForRecoveryOrderCompound(recoveryOrderDetail, warehouseCompound, CaseAddition);
                _stockMutationService.StockMutateObject(stockMutationCompound, _itemService, _barringService, _warehouseItemService);

                // deduce core
                CoreIdentificationDetail coreIdentificationDetail = _coreIdentificationDetailService.GetObjectById(recoveryOrderDetail.CoreIdentificationDetailId);
                _coreIdentificationDetailService.UnsetJobScheduled(coreIdentificationDetail, _recoveryOrderService, this);

                CoreBuilder coreBuilder = _coreBuilderService.GetObjectById(coreIdentificationDetail.CoreBuilderId);
                Item        core        = (coreIdentificationDetail.MaterialCase == Core.Constants.Constant.MaterialCase.New) ?
                                          _coreBuilderService.GetNewCore(coreBuilder.Id) : _coreBuilderService.GetUsedCore(coreBuilder.Id);
                WarehouseItem warehouseCore     = _warehouseItemService.FindOrCreateObject(recoveryOrder.WarehouseId, core.Id);
                StockMutation stockMutationCore = _stockMutationService.CreateStockMutationForRecoveryOrder(recoveryOrderDetail, warehouseCore, CaseAddition);
                _stockMutationService.StockMutateObject(stockMutationCore, _itemService, _barringService, _warehouseItemService);


                // accesories uncounted
            }
            return(recoveryOrderDetail);
        }
Exemple #19
0
        public dynamic Update(RollerBuilder model)
        {
            try
            {
                var data = _rollerBuilderService.GetObjectById(model.Id);
                data.Name = model.Name;
                model     = _rollerBuilderService.UpdateObject(data, _machineService, _uomService, _itemService, _itemTypeService, _coreBuilderService, _rollerTypeService);
            }
            catch (Exception ex)
            {
                LOG.Error("Update Failed", ex);
                model.Errors.Add("Generic", "Error : " + ex);
            }

            return(Json(new
            {
                model.Errors
            }));
        }
        public RecoveryOrderDetail UndoRejectObject(RecoveryOrderDetail recoveryOrderDetail, ICoreIdentificationService _coreIdentificationService, ICoreIdentificationDetailService _coreIdentificationDetailService,
                                                    IRecoveryOrderService _recoveryOrderService, IRecoveryAccessoryDetailService _recoveryAccessoryDetailService, ICoreBuilderService _coreBuilderService, IRollerBuilderService _rollerBuilderService,
                                                    IItemService _itemService, IWarehouseItemService _warehouseItemService, IBarringService _barringService, IStockMutationService _stockMutationService)
        {
            if (_validator.ValidUndoRejectObject(recoveryOrderDetail, _recoveryOrderService))
            {
                _repository.UndoRejectObject(recoveryOrderDetail);

                // add recovery order quantity reject
                // if valid, complete recovery order = true
                RecoveryOrder recoveryOrder = _recoveryOrderService.GetObjectById(recoveryOrderDetail.RecoveryOrderId);
                recoveryOrder.QuantityRejected -= 1;
                _recoveryOrderService.AdjustQuantity(recoveryOrder);

                // reverse stock mutate compound
                RollerBuilder         rollerBuilder          = _rollerBuilderService.GetObjectById(recoveryOrderDetail.RollerBuilderId);
                Item                  compound               = _itemService.GetObjectById(rollerBuilder.CompoundId);
                WarehouseItem         warehouseCompound      = _warehouseItemService.FindOrCreateObject(recoveryOrder.WarehouseId, compound.Id);
                IList <StockMutation> stockMutationCompounds = _stockMutationService.SoftDeleteStockMutationForRecoveryOrder(recoveryOrderDetail, warehouseCompound);
                foreach (var stockMutationCompound in stockMutationCompounds)
                {
                    _stockMutationService.ReverseStockMutateObject(stockMutationCompound, _itemService, _barringService, _warehouseItemService);
                }

                // reverse stock mutate core
                CoreIdentificationDetail coreIdentificationDetail = _coreIdentificationDetailService.GetObjectById(recoveryOrderDetail.CoreIdentificationDetailId);
                _coreIdentificationDetailService.SetJobScheduled(coreIdentificationDetail, _recoveryOrderService, this);

                CoreBuilder coreBuilder = _coreBuilderService.GetObjectById(coreIdentificationDetail.CoreBuilderId);
                Item        core        = (coreIdentificationDetail.MaterialCase == Core.Constants.Constant.MaterialCase.New) ?
                                          _coreBuilderService.GetNewCore(coreBuilder.Id) : _coreBuilderService.GetUsedCore(coreBuilder.Id);
                WarehouseItem warehouseCore = _warehouseItemService.FindOrCreateObject(recoveryOrder.WarehouseId, core.Id);

                IList <StockMutation> stockMutationCores = _stockMutationService.SoftDeleteStockMutationForRecoveryOrder(recoveryOrderDetail, warehouseCore);
                foreach (var stockMutationCore in stockMutationCores)
                {
                    _stockMutationService.ReverseStockMutateObject(stockMutationCore, _itemService, _barringService, _warehouseItemService);
                }

                // accesories uncounted
            }
            return(recoveryOrderDetail);
        }
Exemple #21
0
        public dynamic GetInfo(int Id)
        {
            RollerBuilder model = new RollerBuilder();

            try
            {
                model = _rollerBuilderService.GetObjectById(Id);
            }
            catch (Exception ex)
            {
                LOG.Error("GetInfo", ex);
                model.Errors.Add("Generic", "Error : " + ex);
            }

            return(Json(new
            {
                model.Id,
                model.Name,
                model.Category,
                model.UoMId,
                UoM = _uomService.GetObjectById(model.UoMId).Name,
                model.BaseSku,
                model.SkuRollerUsedCore,
                model.SkuRollerNewCore,
                model.MachineId,
                Machine = _machineService.GetObjectById(model.MachineId).Name,
                model.RollerTypeId,
                RollerType = _rollerTypeService.GetObjectById(model.RollerTypeId).Name,
                model.CompoundId,
                Compound = _itemTypeService.GetObjectById(model.CompoundId).Name,
                model.CoreBuilderId,
                CoreBuilder = _coreBuilderService.GetObjectById(model.CoreBuilderId).Name,
                model.RD,
                model.CD,
                model.RL,
                model.WL,
                model.TL,
                RollerUsedCoreQuantity = _itemService.GetObjectById(model.RollerUsedCoreItemId).Quantity,
                RollerNewCoreQuantity = _itemService.GetObjectById(model.RollerNewCoreItemId).Quantity,

                model.Errors
            }, JsonRequestBehavior.AllowGet));
        }
 public RollerBuilder VCreateObject(RollerBuilder rollerBuilder, IRollerBuilderService _rollerBuilderService, IMachineService _machineService, IUoMService _uomService,
                                    IItemService _itemService, ICoreBuilderService _coreBuilderService, IRollerTypeService _rollerTypeService)
 {
     VHasUniqueBaseSku(rollerBuilder, _rollerBuilderService);
     if (!isValid(rollerBuilder))
     {
         return(rollerBuilder);
     }
     VNameNotEmpty(rollerBuilder);
     if (!isValid(rollerBuilder))
     {
         return(rollerBuilder);
     }
     VHasCompound(rollerBuilder, _itemService);
     if (!isValid(rollerBuilder))
     {
         return(rollerBuilder);
     }
     VHasCoreBuilder(rollerBuilder, _coreBuilderService);
     if (!isValid(rollerBuilder))
     {
         return(rollerBuilder);
     }
     VHasRollerType(rollerBuilder, _rollerTypeService);
     if (!isValid(rollerBuilder))
     {
         return(rollerBuilder);
     }
     VHasMachine(rollerBuilder, _machineService);
     if (!isValid(rollerBuilder))
     {
         return(rollerBuilder);
     }
     VHasMeasurement(rollerBuilder);
     if (!isValid(rollerBuilder))
     {
         return(rollerBuilder);
     }
     VHasUoM(rollerBuilder, _uomService);
     return(rollerBuilder);
 }
        public RollerBuilder CreateObject(string BaseSku, string SkuRollerNewCore, string SkuRollerUsedCore, string Name, string Category,
                                          int CD, int RD, int RL, int WL, int TL,
                                          IMachineService _machineService, IUoMService _uomService, IItemService _itemService, IItemTypeService _itemTypeService,
                                          ICoreBuilderService _coreBuilderService, IRollerTypeService _rollerTypeService,
                                          IWarehouseItemService _warehouseItemService, IWarehouseService _warehouseService)
        {
            RollerBuilder rollerBuilder = new RollerBuilder
            {
                BaseSku           = BaseSku,
                SkuRollerNewCore  = SkuRollerNewCore,
                SkuRollerUsedCore = SkuRollerUsedCore,
                Name     = Name,
                Category = Category,
                CD       = CD,
                RD       = RD,
                RL       = RL,
                WL       = WL,
                TL       = TL
            };

            return(this.CreateObject(rollerBuilder, _machineService, _uomService, _itemService, _itemTypeService, _coreBuilderService, _rollerTypeService,
                                     _warehouseItemService, _warehouseService));
        }
 public RollerBuilder VHasMeasurement(RollerBuilder rollerBuilder)
 {
     if (rollerBuilder.CD <= 0)
     {
         rollerBuilder.Errors.Add("CD", "Tidak boleh 0 atau negatif"); return(rollerBuilder);
     }
     if (rollerBuilder.RD <= 0)
     {
         rollerBuilder.Errors.Add("RD", "Tidak boleh 0 atau negatif"); return(rollerBuilder);
     }
     if (rollerBuilder.RL <= 0)
     {
         rollerBuilder.Errors.Add("RL", "Tidak boleh 0 atau negatif"); return(rollerBuilder);
     }
     if (rollerBuilder.WL <= 0)
     {
         rollerBuilder.Errors.Add("WL", "Tidak boleh 0 atau negatif"); return(rollerBuilder);
     }
     if (rollerBuilder.TL <= 0)
     {
         rollerBuilder.Errors.Add("TL", "Tidak boleh 0 atau negatif"); return(rollerBuilder);
     }
     return(rollerBuilder);
 }
        public bool IsBaseSkuDuplicated(RollerBuilder rollerBuilder)
        {
            IQueryable <RollerBuilder> builders = _repository.FindAll(x => x.BaseSku == rollerBuilder.BaseSku && !x.IsDeleted && x.Id != rollerBuilder.Id);

            return(builders.Count() > 0 ? true : false);
        }
        public RollerBuilder CreateObject(RollerBuilder rollerBuilder, IMachineService _machineService, IUoMService _uomService,
                                          IItemService _itemService, IItemTypeService _itemTypeService, ICoreBuilderService _coreBuilderService,
                                          IRollerTypeService _rollerTypeService, IWarehouseItemService _warehouseItemService, IWarehouseService _warehouseService)
        {
            rollerBuilder.Errors = new Dictionary <String, String>();
            ItemType typeRoller = _itemTypeService.GetObjectByName(Core.Constants.Constant.ItemTypeCase.Roller);

            if (typeRoller == null)
            {
                rollerBuilder.Errors.Add("Generic", "ItemType [Roller] Legacy harus dibuat terlebih dahulu");
            }

            Item RollerUsedCore = new Item()
            {
                Name       = rollerBuilder.Name,
                Category   = rollerBuilder.Category,
                UoMId      = rollerBuilder.UoMId,
                Quantity   = 0,
                ItemTypeId = _itemTypeService.GetObjectByName(Core.Constants.Constant.ItemTypeCase.Roller).Id,
                Sku        = rollerBuilder.SkuRollerUsedCore
            };

            RollerUsedCore.Errors = new Dictionary <string, string>();

            Item RollerNewCore = new Item()
            {
                Name       = rollerBuilder.Name,
                Category   = rollerBuilder.Category,
                UoMId      = rollerBuilder.UoMId,
                Quantity   = 0,
                ItemTypeId = _itemTypeService.GetObjectByName(Core.Constants.Constant.ItemTypeCase.Roller).Id,
                Sku        = rollerBuilder.SkuRollerNewCore
            };

            RollerNewCore.Errors = new Dictionary <string, string>();

            if (_itemService.GetValidator().ValidCreateLegacyObject(RollerUsedCore, _uomService, _itemService, _itemTypeService) &&
                _itemService.GetValidator().ValidCreateLegacyObject(RollerNewCore, _uomService, _itemService, _itemTypeService))
            {
                if (_validator.ValidCreateObject(rollerBuilder, this, _machineService, _uomService, _itemService, _coreBuilderService, _rollerTypeService))
                {
                    RollerUsedCore    = _itemService.CreateLegacyObject(RollerUsedCore, _uomService, _itemTypeService, _warehouseItemService, _warehouseService);
                    RollerUsedCore.Id = RollerUsedCore.Id;
                    RollerNewCore     = _itemService.CreateLegacyObject(RollerNewCore, _uomService, _itemTypeService, _warehouseItemService, _warehouseService);
                    RollerNewCore.Id  = RollerNewCore.Id;
                    rollerBuilder.RollerUsedCoreItemId = RollerUsedCore.Id;
                    rollerBuilder.RollerNewCoreItemId  = RollerNewCore.Id;
                    rollerBuilder = _repository.CreateObject(rollerBuilder);
                }
            }
            else
            {
                if (RollerUsedCore.Errors.Count() > 0)
                {
                    rollerBuilder.Errors.Add(RollerUsedCore.Errors.First().Key, RollerUsedCore.Errors.First().Value);
                }
                else if (RollerNewCore.Errors.Count() > 0)
                {
                    rollerBuilder.Errors.Add(RollerNewCore.Errors.First().Key, RollerNewCore.Errors.First().Value);
                }
                else
                {
                    rollerBuilder.Errors.Add("Generic", "Item tidak dapat di update");
                }
            }
            return(rollerBuilder);
        }
        public RecoveryOrderDetail UnfinishObject(RecoveryOrderDetail recoveryOrderDetail, ICoreIdentificationService _coreIdentificationService, ICoreIdentificationDetailService _coreIdentificationDetailService,
                                                  IRecoveryOrderService _recoveryOrderService, IRecoveryAccessoryDetailService _recoveryAccessoryDetailService, ICoreBuilderService _coreBuilderService, IRollerBuilderService _rollerBuilderService,
                                                  IItemService _itemService, IWarehouseItemService _warehouseItemService, IBarringService _barringService, IStockMutationService _stockMutationService)
        {
            if (_validator.ValidUnfinishObject(recoveryOrderDetail, _recoveryOrderService, _recoveryAccessoryDetailService))
            {
                // unfinish object
                _repository.UnfinishObject(recoveryOrderDetail);

                // add recovery order quantity final
                RecoveryOrder recoveryOrder = _recoveryOrderService.GetObjectById(recoveryOrderDetail.RecoveryOrderId);
                recoveryOrder.QuantityFinal += 1;
                _recoveryOrderService.AdjustQuantity(recoveryOrder);

                // reverse stock mutate compound
                RollerBuilder         rollerBuilder          = _rollerBuilderService.GetObjectById(recoveryOrderDetail.RollerBuilderId);
                Item                  compound               = _itemService.GetObjectById(rollerBuilder.CompoundId);
                WarehouseItem         warehouseCompound      = _warehouseItemService.FindOrCreateObject(recoveryOrder.WarehouseId, compound.Id);
                IList <StockMutation> stockMutationCompounds = _stockMutationService.SoftDeleteStockMutationForRecoveryOrder(recoveryOrderDetail, warehouseCompound);
                foreach (var stockMutationCompound in stockMutationCompounds)
                {
                    _stockMutationService.ReverseStockMutateObject(stockMutationCompound, _itemService, _barringService, _warehouseItemService);
                }

                // reverse stock mutate core
                CoreIdentificationDetail coreIdentificationDetail = _coreIdentificationDetailService.GetObjectById(recoveryOrderDetail.CoreIdentificationDetailId);
                _coreIdentificationDetailService.SetJobScheduled(coreIdentificationDetail, _recoveryOrderService, this);

                CoreBuilder coreBuilder = _coreBuilderService.GetObjectById(coreIdentificationDetail.CoreBuilderId);
                Item        core        = (coreIdentificationDetail.MaterialCase == Core.Constants.Constant.MaterialCase.New) ?
                                          _coreBuilderService.GetNewCore(coreBuilder.Id) : _coreBuilderService.GetUsedCore(coreBuilder.Id);
                WarehouseItem         warehouseCore      = _warehouseItemService.FindOrCreateObject(recoveryOrder.WarehouseId, core.Id);
                IList <StockMutation> stockMutationCores = _stockMutationService.SoftDeleteStockMutationForRecoveryOrder(recoveryOrderDetail, warehouseCore);
                foreach (var stockMutationCore in stockMutationCores)
                {
                    _stockMutationService.ReverseStockMutateObject(stockMutationCore, _itemService, _barringService, _warehouseItemService);
                }

                // reverse stock mutate roller
                Item roller = (coreIdentificationDetail.MaterialCase == Core.Constants.Constant.MaterialCase.New) ?
                              _rollerBuilderService.GetRollerNewCore(rollerBuilder.Id) : _rollerBuilderService.GetRollerUsedCore(rollerBuilder.Id);
                WarehouseItem         warehouseRoller      = _warehouseItemService.FindOrCreateObject(recoveryOrder.WarehouseId, roller.Id);
                IList <StockMutation> stockMutationRollers = _stockMutationService.SoftDeleteStockMutationForRecoveryOrder(recoveryOrderDetail, warehouseRoller);
                foreach (var stockMutationRoller in stockMutationRollers)
                {
                    _stockMutationService.ReverseStockMutateObject(stockMutationRoller, _itemService, _barringService, _warehouseItemService);
                }

                // reverse stock mutate accessories
                IList <RecoveryAccessoryDetail> recoveryAccessoryDetails = _recoveryAccessoryDetailService.GetObjectsByRecoveryOrderDetailId(recoveryOrderDetail.Id);
                if (recoveryAccessoryDetails.Any())
                {
                    foreach (var recoveryAccessoryDetail in recoveryAccessoryDetails)
                    {
                        Item                  accessory                = _itemService.GetObjectById(recoveryAccessoryDetail.ItemId);
                        WarehouseItem         warehouseAccessory       = _warehouseItemService.FindOrCreateObject(recoveryOrder.WarehouseId, accessory.Id);
                        IList <StockMutation> stockMutationAccessories = _stockMutationService.SoftDeleteStockMutationForRecoveryAccessory(recoveryAccessoryDetail, warehouseAccessory);
                        foreach (var stockMutationAccessory in stockMutationAccessories)
                        {
                            _stockMutationService.ReverseStockMutateObject(stockMutationAccessory, _itemService, _barringService, _warehouseItemService);
                        }
                    }
                }
            }
            return(recoveryOrderDetail);
        }
        public RecoveryOrderDetail FinishObject(RecoveryOrderDetail recoveryOrderDetail, DateTime FinishedDate, ICoreIdentificationService _coreIdentificationService, ICoreIdentificationDetailService _coreIdentificationDetailService,
                                                IRecoveryOrderService _recoveryOrderService, IRecoveryAccessoryDetailService _recoveryAccessoryDetailService, ICoreBuilderService _coreBuilderService, IRollerBuilderService _rollerBuilderService,
                                                IItemService _itemService, IWarehouseItemService _warehouseItemService, IBarringService _barringService, IStockMutationService _stockMutationService)
        {
            recoveryOrderDetail.FinishedDate = FinishedDate;
            if (_validator.ValidFinishObject(recoveryOrderDetail, _recoveryOrderService, _recoveryAccessoryDetailService))
            {
                // set object to finish
                _repository.FinishObject(recoveryOrderDetail);

                // add recovery order quantity final
                // if valid, complete recovery order = true
                RecoveryOrder recoveryOrder = _recoveryOrderService.GetObjectById(recoveryOrderDetail.RecoveryOrderId);
                recoveryOrder.QuantityFinal += 1;
                _recoveryOrderService.AdjustQuantity(recoveryOrder);
                if (_recoveryOrderService.GetValidator().ValidCompleteObject(recoveryOrder, this, _recoveryAccessoryDetailService))
                {
                    _recoveryOrderService.CompleteObject(recoveryOrder, _coreIdentificationDetailService, this, _recoveryAccessoryDetailService);
                }

                bool CaseAdditionCompound = false;
                bool CaseAdditionCore     = false;
                bool CaseAdditionRoller   = true;

                // deduce compound
                RollerBuilder rollerBuilder         = _rollerBuilderService.GetObjectById(recoveryOrderDetail.RollerBuilderId);
                Item          compound              = _itemService.GetObjectById(rollerBuilder.CompoundId);
                WarehouseItem warehouseCompound     = _warehouseItemService.FindOrCreateObject(recoveryOrder.WarehouseId, compound.Id);
                StockMutation stockMutationCompound = _stockMutationService.CreateStockMutationForRecoveryOrderCompound(recoveryOrderDetail, warehouseCompound, CaseAdditionCompound);
                _stockMutationService.StockMutateObject(stockMutationCompound, _itemService, _barringService, _warehouseItemService);

                CoreIdentificationDetail coreIdentificationDetail = _coreIdentificationDetailService.GetObjectById(recoveryOrderDetail.CoreIdentificationDetailId);
                _coreIdentificationDetailService.UnsetJobScheduled(coreIdentificationDetail, _recoveryOrderService, this);
                _coreIdentificationDetailService.BuildRoller(coreIdentificationDetail);

                // deduce core
                CoreBuilder coreBuilder = _coreBuilderService.GetObjectById(coreIdentificationDetail.CoreBuilderId);
                Item        core        = (coreIdentificationDetail.MaterialCase == Core.Constants.Constant.MaterialCase.New) ?
                                          _coreBuilderService.GetNewCore(coreBuilder.Id) : _coreBuilderService.GetUsedCore(coreBuilder.Id);
                WarehouseItem warehouseCore     = _warehouseItemService.FindOrCreateObject(recoveryOrder.WarehouseId, core.Id);
                StockMutation stockMutationCore = _stockMutationService.CreateStockMutationForRecoveryOrder(recoveryOrderDetail, warehouseCore, CaseAdditionCore);
                _stockMutationService.StockMutateObject(stockMutationCore, _itemService, _barringService, _warehouseItemService);

                // add roller
                Item roller = (coreIdentificationDetail.MaterialCase == Core.Constants.Constant.MaterialCase.New) ?
                              _rollerBuilderService.GetRollerNewCore(rollerBuilder.Id) : _rollerBuilderService.GetRollerUsedCore(rollerBuilder.Id);
                WarehouseItem warehouseRoller     = _warehouseItemService.FindOrCreateObject(recoveryOrder.WarehouseId, roller.Id);
                StockMutation stockMutationRoller = _stockMutationService.CreateStockMutationForRecoveryOrder(recoveryOrderDetail, warehouseRoller, CaseAdditionRoller);
                _stockMutationService.StockMutateObject(stockMutationRoller, _itemService, _barringService, _warehouseItemService);

                // deduce accessories
                IList <RecoveryAccessoryDetail> recoveryAccessoryDetails = _recoveryAccessoryDetailService.GetObjectsByRecoveryOrderDetailId(recoveryOrderDetail.Id);
                if (recoveryAccessoryDetails.Any())
                {
                    foreach (var recoveryAccessoryDetail in recoveryAccessoryDetails)
                    {
                        Item          accessory              = _itemService.GetObjectById(recoveryAccessoryDetail.ItemId);
                        WarehouseItem warehouseAccessory     = _warehouseItemService.FindOrCreateObject(recoveryOrder.WarehouseId, accessory.Id);
                        StockMutation stockMutationAccessory = _stockMutationService.CreateStockMutationForRecoveryAccessory(recoveryAccessoryDetail, warehouseAccessory);
                        _stockMutationService.StockMutateObject(stockMutationAccessory, _itemService, _barringService, _warehouseItemService);
                    }
                }
            }
            return(recoveryOrderDetail);
        }
 public bool ValidDeleteObject(RollerBuilder rollerBuilder, IRecoveryOrderDetailService _recoveryOrderDetailService)
 {
     rollerBuilder.Errors.Clear();
     VDeleteObject(rollerBuilder, _recoveryOrderDetailService);
     return(isValid(rollerBuilder));
 }
        public bool isValid(RollerBuilder obj)
        {
            bool isValid = !obj.Errors.Any();

            return(isValid);
        }