Beispiel #1
0
        protected override void GetDetail(Resolver resolver)
        {
            InProcessLocation inProcessLocation = null;

            //订单发货
            if (resolver.CodePrefix == BusinessConstants.CODE_PREFIX_ORDER)
            {
                if (resolver.Transformers != null && resolver.Transformers.Count > 0)
                {
                    foreach (Transformer transformer in resolver.Transformers)
                    {
                        if (resolver.Input.Trim().ToUpper() == transformer.OrderNo.Trim().ToUpper())
                        {
                            throw new BusinessErrorException("Common.Business.Error.ReScan", resolver.Code);
                        }
                    }
                    //校验订单配置选项
                    this.CheckOrderConfigValid(resolver.Input, resolver.Transformers[0].OrderNo);
                }
                else
                {
                    resolver.Transformers = new List <Transformer>();
                }
                inProcessLocation = orderMgr.ConvertOrderToInProcessLocation(resolver.Input);

                if (inProcessLocation == null || inProcessLocation.InProcessLocationDetails == null || inProcessLocation.InProcessLocationDetails.Count == 0)
                {
                    throw new BusinessErrorException("Common.Business.Error.NoDetailToShip");
                }
                if (resolver.IsScanHu && resolver.CodePrefix != BusinessConstants.CODE_PREFIX_PICKLIST)
                {
                    OrderHelper.ClearShippedQty(inProcessLocation);//清空发货数
                }
                List <Transformer> newTransformerList = TransformerHelper.ConvertInProcessLocationDetailsToTransformers(inProcessLocation.InProcessLocationDetails);
                resolver.Transformers = resolver.Transformers == null ? new List <Transformer>() : resolver.Transformers;
                resolver.Transformers.AddRange(newTransformerList);
            }
            //拣货单发货
            else if (resolver.CodePrefix == BusinessConstants.CODE_PREFIX_PICKLIST)
            {
                //inProcessLocation = orderMgr.ConvertPickListToInProcessLocation(resolver.Input);
                IList <PickListResult> pickListResultList = pickListResultMgr.GetPickListResult(resolver.Input);
                resolver.Transformers = Utility.TransformerHelper.ConvertPickListResultToTransformer(pickListResultList);
            }
            resolver.Command = BusinessConstants.CS_BIND_VALUE_TRANSFORMER;
        }