Exemplo n.º 1
0
        public IResult <string> CreateInventoryTreatmentOrder(ICreateTreatmentOrderParameters parameters)
        {
            if (parameters == null)
            {
                throw new ArgumentNullException("parameters");
            }

            var parsedParameters = new CreateTreatmentOrderConductorParameters <ICreateTreatmentOrderParameters>(parameters);

            if (!parsedParameters.Result.Success)
            {
                return(parsedParameters.Result.ConvertTo <string>());
            }

            var createResult = new CreateTreatmentOrderConductor(_inventoryShipmentOrderUnitOfWork).CreateTreatmentOrder(_timeStamper.CurrentTimeStamp, parsedParameters);

            if (!createResult.Success)
            {
                return(createResult.ConvertTo <string>());
            }

            _inventoryShipmentOrderUnitOfWork.Commit();

            var key = createResult.ResultingObject.ToInventoryShipmentOrderKey();

            return(SyncParameters.Using(new SuccessResult <string>(key), new SyncInventoryShipmentOrderParameters
            {
                InventoryShipmentOrderKey = key,
                New = true
            }));
        }
        internal IResult <TreatmentOrder> Update <TParams>(TreatmentOrder treatmentOrder, DateTime timeStamp, CreateTreatmentOrderConductorParameters <TParams> parameters)
            where TParams : ICreateTreatmentOrderParameters
        {
            if (parameters.TreatmentKey != null)
            {
                treatmentOrder.InventoryTreatmentId = parameters.TreatmentKey.InventoryTreatmentKey_Id;
            }

            return(SetOrder(treatmentOrder.InventoryShipmentOrder, timeStamp, parameters).ConvertTo(treatmentOrder));
        }
Exemplo n.º 3
0
        public IResult <TreatmentOrder> CreateTreatmentOrder <TParams>(DateTime timestamp, CreateTreatmentOrderConductorParameters <TParams> parameters)
            where TParams : ICreateTreatmentOrderParameters
        {
            if (parameters == null)
            {
                throw new ArgumentNullException("parameters");
            }

            var employeeResult = new GetEmployeeCommand(_treatmentOrderUnitOfWork).GetEmployee(parameters.Params);

            if (!employeeResult.Success)
            {
                return(employeeResult.ConvertTo <TreatmentOrder>());
            }

            var dateCreated           = timestamp.Date;
            var pickedInventoryResult = new CreatePickedInventoryCommand(_treatmentOrderUnitOfWork).Execute(new CreatePickedInventoryCommandParameters
            {
                EmployeeKey  = new EmployeeKey(employeeResult.ResultingObject),
                TimeStamp    = dateCreated,
                PickedReason = PickedReason.TreatmentOrder
            });

            if (!pickedInventoryResult.Success)
            {
                return(pickedInventoryResult.ConvertTo <TreatmentOrder>());
            }

            var pickedOrderResult = new CreateInventoryPickOrderCommand(_treatmentOrderUnitOfWork).Execute(pickedInventoryResult.ResultingObject);

            if (!pickedOrderResult.Success)
            {
                return(pickedOrderResult.ConvertTo <TreatmentOrder>());
            }

            var shipmentInfoResult = new CreateShipmentInformationCommand(_treatmentOrderUnitOfWork).Execute(dateCreated);

            if (!shipmentInfoResult.Success)
            {
                return(shipmentInfoResult.ConvertTo <TreatmentOrder>());
            }

            var treatmentOrder = _treatmentOrderUnitOfWork.TreatmentOrderRepository.Add(new TreatmentOrder
            {
                DateCreated          = pickedInventoryResult.ResultingObject.DateCreated,
                Sequence             = pickedInventoryResult.ResultingObject.Sequence,
                InventoryTreatmentId = parameters.TreatmentKey.InventoryTreatmentKey_Id,

                InventoryShipmentOrder = new InventoryShipmentOrder
                {
                    DateCreated = pickedInventoryResult.ResultingObject.DateCreated,
                    Sequence    = pickedInventoryResult.ResultingObject.Sequence,

                    OrderType   = InventoryShipmentOrderTypeEnum.TreatmentOrder,
                    OrderStatus = OrderStatus.Scheduled,

                    ShipmentInfoDateCreated = shipmentInfoResult.ResultingObject.DateCreated,
                    ShipmentInfoSequence    = shipmentInfoResult.ResultingObject.Sequence,
                    ShipmentInformation     = shipmentInfoResult.ResultingObject,

                    InventoryPickOrder = pickedOrderResult.ResultingObject,
                    PickedInventory    = pickedInventoryResult.ResultingObject,
                    MoveNum            = new GetMoveNum(_treatmentOrderUnitOfWork.InventoryShipmentOrderRepository).Get(pickedInventoryResult.ResultingObject.DateCreated.Year)
                }
            });

            return(new UpdateTreatmentOrderConductor(_treatmentOrderUnitOfWork).Update(treatmentOrder, timestamp, parameters));
        }