示例#1
0
 /// <summary>
 /// 关联到货通知新增收货明细。
 /// </summary>
 /// <param name="ctx">上下文对象。</param>
 /// <param name="data">收货明细关联到货通知数据实体。</param>
 /// <returns>返回新建保存事务结果。</returns>s
 public IOperationResult CreateNewBillFromInNoticeEntry(Context ctx, InDetailLinkInNoticeDto.InDetailEntryLinkInNotice data)
 {
     return(this.CreateNewBillsFromInNoticeEntities(ctx, new InDetailLinkInNoticeDto.InDetailEntryLinkInNotice[] { data }));
 }
示例#2
0
        public ServiceResult ExecuteService(string data)
        {
            ServiceResult result = new ServiceResult();

            if (data.IsNullOrEmptyOrWhiteSpace())
            {
                return(result);
            }
            String EnableCapacity;
            var    ctx = this.KDContext.Session.AppContext;

            // 检查传入字符串数据
            if (this.IsContextExpired(result))
            {
                return(result);
            }
            // 检查传入参数
            if (string.IsNullOrWhiteSpace(data))
            {
                result.Code    = (int)ResultCode.Fail;
                result.Message = "传入表单数据不能为空!";
                return(result);
            }
            try
            {
                //序列化
                JavaScriptSerializer Serializer = new JavaScriptSerializer();
                //List<InputData> input = JsonConvert.DeserializeObject<List<InputData>>(data);
                List <FinalInputData> FinalInput = new List <FinalInputData>();
                List <InputData>      Input      = Serializer.Deserialize <List <InputData> >(data);
                FinalInput = Input.GroupBy(x => x.FCONTACTID).Select(x => new FinalInputData {
                    FCONTACTID = x.Key, FinalInputDataGroupByContactId = x.ToList()
                }).ToList();

                foreach (var items in FinalInput)
                {
                    var formId      = "BAH_WMS_InNotice";
                    var metadata    = FormMetaDataCache.GetCachedFormMetaData(ctx, formId);
                    var billView    = metadata.CreateBillView(ctx);
                    var billService = billView.AsDynamicFormViewService();
                    billView.AddNew();
                    billService.SetItemValueByNumber("FBillTypeId", "DHTZ04_PHMX", -1);
                    billService.SetItemValueByID("FBatchWHId", items.FinalInputDataGroupByContactId.FirstOrDefault().FWHID, -1);
                    billService.SetItemValueByID("FBatchOwnerId", items.FinalInputDataGroupByContactId.FirstOrDefault().FOWNERID, -1);
                    billService.SetItemValueByID("FContactId", items.FCONTACTID, -1);
                    billService.SetItemValueByID("FPHMXTargetFormId", "SP_ReturnMtrl", -1); //

                    billService.SetItemValueByNumber("FPHMXConvertRuleId", "BAH_PI_InNoticeToReturnMtrl", -1);
                    billService.SetItemValueByNumber("FPHMXProduceId", items.FinalInputDataGroupByContactId.FirstOrDefault().FPHMXProduceId, -1);
                    billView.Model.BatchCreateNewEntryRow("FEntity", items.FinalInputDataGroupByContactId.Count());
                    for (int i = 0; i < items.FinalInputDataGroupByContactId.Count(); i++)
                    {
                        JSONObject datas = new JSONObject();
                        billView.Model.SetItemValueByID("FMaterialId", items.FinalInputDataGroupByContactId[i].FMaterialId, i);
                        billView.Model.SetItemValueByID("FLocId", items.FinalInputDataGroupByContactId[i].FLocId, i);
                        billView.Model.SetItemValueByID("FTrackNo", items.FinalInputDataGroupByContactId[i].FTrackNo, i);
                        DynamicObject           FMaterialId  = billView.Model.GetValue("FMaterialId", i) as DynamicObject;
                        DynamicObjectCollection WarehouseSub = FMaterialId["WarehouseSub"] as DynamicObjectCollection;
                        EnableCapacity = WarehouseSub.FirstOrDefault()["EnableCapacity"].ToString();
                        billView.Model.SetItemValueByID("FPackageId", items.FinalInputDataGroupByContactId[i].FPackageId, i);
                        //billView.Model.SetValue("FDirectionForQty", input[i].FDirectionForQty, i);
                        if (EnableCapacity == "False")
                        {
                            billView.Model.SetValue("FQty", items.FinalInputDataGroupByContactId[i].FQty, i);
                            billView.Model.SetItemValueByID("FUnitId", items.FinalInputDataGroupByContactId[i].FUnitId, i);
                        }
                        else
                        {
                            if (items.FinalInputDataGroupByContactId[i].FAvgCty == 0)
                            {
                                billView.Model.SetValue("FAvgCty", items.FinalInputDataGroupByContactId[i].FAvgCty, i);
                                billView.Model.SetValue("FCty", items.FinalInputDataGroupByContactId[i].FCty, i);
                            }
                            else
                            {
                                billView.Model.SetValue("FAvgCty", items.FinalInputDataGroupByContactId[i].FAvgCty, i);
                                billView.Model.SetValue("FQty", items.FinalInputDataGroupByContactId[i].FQty, i);
                                billView.Model.SetItemValueByID("FUnitId", items.FinalInputDataGroupByContactId[i].FUnitId, i);
                            }
                        }
                    } //
                    billView.Model.ClearNoDataRow();
                    //var op = billView.Model.DataObject.DoNothing(ctx, billView.BillBusinessInfo, "Upload");
                    bool op  = billView.InvokeFormOperation("Save");
                    bool op1 = billView.InvokeFormOperation("Submit");
                    bool op2 = billView.InvokeFormOperation("Audit");
                    List <InDetailLinkInNoticeDto.InDetailEntryLinkInNotice> pushdatas = new List <InDetailLinkInNoticeDto.InDetailEntryLinkInNotice>();

                    for (int i = 0; i < items.FinalInputDataGroupByContactId.Count(); i++)
                    {
                        InDetailLinkInNoticeDto.InDetailEntryLinkInNotice pushdata = new InDetailLinkInNoticeDto.InDetailEntryLinkInNotice();
                        pushdata.SourceEntryId = (long)billView.Model.GetEntryPKValue("FEntity", i);
                        pushdata.SourceBillId  = (long)billView.Model.GetPKValue();
                        pushdata.PHMXWgt       = items.FinalInputDataGroupByContactId[i].FPHMXWgt;
                        pushdatas.Add(pushdata);
                    }
                    var back = CreateNewBillsFromInNoticeEntities(ctx, pushdatas);
                    //foreach (var entry in billView.Model.)
                    //{

                    //}
                    result.Code    = op2 == true ? 1 : 0;
                    result.Message = op2 == true ? "成功生成" : "生成失败";
                    billView.Close();
                }
            }
            catch (Exception ex)
            {
                result.Code    = (int)ResultCode.Fail;
                result.Message = ex.Message;
                Logger.Error(this.GetType().AssemblyQualifiedName, ex.Message, ex);
            }
            return(result);
        }