Ejemplo n.º 1
0
 public abstract ERPOrderResponse ImportERPOrder(ERPOrderRequest ERPOrderInfo);
Ejemplo n.º 2
0
        public override ERPOrderResponse ImportERPOrder(ERPOrderRequest ERPOrderInfo)
        {
            var uafConnector = new UAFConnector();

            ImportERPOrder input = new ImportERPOrder(new Engineering.DAB.AppDAB.AppDAB.DPPOMModel.Types.ERPOrderRequest()
            {
                ERPId                 = ERPOrderInfo.ERPId,
                FinalMaterialCode     = ERPOrderInfo.FinalMaterialCode,
                FinalMaterialRevision = ERPOrderInfo.FinalMaterialRevision,
                Orders                = new List <ERPOrderPhase> {
                },
                Priority              = ERPOrderInfo.Priority,
                Quantity              = ERPOrderInfo.Quantity,
                Warehouse             = ERPOrderInfo.Warehouse
            });


            foreach (var order in ERPOrderInfo.Orders)
            {
                if (!string.IsNullOrEmpty(order.CycleTime))
                {
                    input.ERPOrderInfo.CycleTime = XmlConvert.ToTimeSpan(order.CycleTime);
                }
                if (!string.IsNullOrEmpty(order.SetupTime))
                {
                    input.ERPOrderInfo.SetupTime = XmlConvert.ToTimeSpan(order.SetupTime);
                }
                DateTime estimatedStart = order.EstimatedStartTime.Year > 1900 ? order.EstimatedStartTime : DateTime.UtcNow.AddMinutes(3);
                DateTime estimatedEnd   = order.EstimatedEndTime.Year > 1900 ? order.EstimatedEndTime : order.EstimatedStartTime.AddMinutes(input.ERPOrderInfo.CycleTime.TotalMinutes * input.ERPOrderInfo.Quantity);


                input.ERPOrderInfo.EstimatedEndTime   = estimatedEnd;
                input.ERPOrderInfo.EstimatedStartTime = estimatedStart;
                input.ERPOrderInfo.Operators          = order.Operators;
                var orderPhase = new ERPOrderPhase
                {
                    Name                  = order.Name,
                    NextOrder             = order.NextOrder,
                    Sequence              = order.Sequence,
                    ToBeConsumedMaterials = new List <ERPConsumedMaterial>(),
                    WorkArea              = order.WorkArea
                };
                foreach (var mat in order.ToBeConsumedMaterials)
                {
                    orderPhase.ToBeConsumedMaterials.Add(new ERPConsumedMaterial
                    {
                        MaterialCode     = mat.MaterialCode,
                        MaterialRevision = mat.MaterialRevision,
                        Quantity         = mat.Quantity,
                        Sequence         = mat.Sequence,
                        UoM = mat.UoM
                    });
                }
                input.ERPOrderInfo.Orders.Add(orderPhase);
            }

            var response = uafConnector.CallCommand <ImportERPOrder, ImportERPOrder.Response>(input);

            if (!response.Succeeded)
            {
                throw new Exception($"Error {response.Error.ErrorCode}: {response.Error.ErrorMessage}");
            }
            return(new ERPOrderResponse {
                WorkOrderId = response.WorkOrderIds.First(), WorkOrderNId = ERPOrderInfo.ERPId
            });
        }