| | |
| | | foreach (var item in pur_ReceiveExcelEntry) |
| | | { |
| | | var FQty = item.FQTY; |
| | | //优先判断是否存在采购订单 |
| | | var _pur_PurchaseExcelEntryOrder = pur_PurchaseExcelEntry.Where(x => x.FMaterialId == item.FMaterialId && x.FSupplierId == item.FSUPPLIERID && x.FBzbsId == item.FBzbsId && x.FRemainReceiveQty > 0 && x.FBILLNO == item.FPOORDERNO).ToList(); |
| | | if (_pur_PurchaseExcelEntryOrder.Count > 0) |
| | | { |
| | | foreach (var _item in _pur_PurchaseExcelEntryOrder) |
| | | { |
| | | if (_item.FRemainReceiveQty >= FQty) |
| | | { |
| | | pur_PoOrderExcelEntry.Add(new pur_PoOrderExcelEntry |
| | | { |
| | | FID = item.FID, |
| | | FSUPPLIERID = item.FSUPPLIERID, |
| | | FMATERIALID = item.FMaterialId, |
| | | FEXCELIMPORTSEQ = item.FSEQ, |
| | | FPoStockId = item.FSTOCKID, |
| | | FPOBzbsId = item.FBzbsId, |
| | | |
| | | FPOORDERNO = _item.FBILLNO, |
| | | FACTQTY = FQty, |
| | | FPOCREATEDATE = _item.FCREATEDATE, |
| | | FDELIVERYDATE = _item.FDeliveryDate, |
| | | FPOORDERID = _item.FID, |
| | | FPOORDERENTRYID = _item.FENTRYID, |
| | | FPOORDERSEQ = _item.FSEQ, |
| | | FRECEIVABLEQTY = _item.FNeedQty |
| | | |
| | | }); |
| | | _item.FRemainReceiveQty -= FQty; |
| | | FQty = 0; |
| | | break; |
| | | } |
| | | else |
| | | { |
| | | pur_PoOrderExcelEntry.Add(new pur_PoOrderExcelEntry |
| | | { |
| | | FID = item.FID, |
| | | FSUPPLIERID = item.FSUPPLIERID, |
| | | FMATERIALID = item.FMaterialId, |
| | | FEXCELIMPORTSEQ = item.FSEQ, |
| | | FPoStockId = item.FSTOCKID, |
| | | FPOBzbsId = item.FBzbsId, |
| | | |
| | | FPOORDERNO = _item.FBILLNO, |
| | | FACTQTY = _item.FRemainReceiveQty, |
| | | FPOCREATEDATE = _item.FCREATEDATE, |
| | | FDELIVERYDATE = _item.FDeliveryDate, |
| | | FPOORDERID = _item.FID, |
| | | FPOORDERENTRYID = _item.FENTRYID, |
| | | FPOORDERSEQ = _item.FSEQ, |
| | | FRECEIVABLEQTY = _item.FNeedQty |
| | | }); |
| | | FQty -= _item.FRemainReceiveQty; |
| | | _item.FRemainReceiveQty = 0; |
| | | } |
| | | } |
| | | } |
| | | //已满足需求 循环下一个物料 |
| | | if (FQty == 0) |
| | | continue; |
| | | var _pur_PurchaseExcelEntry = pur_PurchaseExcelEntry.Where(x => x.FMaterialId == item.FMaterialId && x.FSupplierId == item.FSUPPLIERID && x.FBzbsId == item.FBzbsId && x.FRemainReceiveQty > 0).ToList(); |
| | | foreach (var _item in _pur_PurchaseExcelEntry) |
| | | { |
| | |
| | | this.View.ShowErrMessage(ex.Message.ToString()); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 生成送货单 |
| | | /// 生成收料通知单(一对一) |
| | | /// </summary> |
| | | public void btnPush() |
| | | { |
| | | try |
| | | { |
| | | var FID = this.View.Model.GetPKValue(); |
| | | string sql = string.Format(@" |
| | | /*dialect*/ |
| | | SELECT T3.FNAME AS FTYPENAME,M.FBILLNO HBILLNO,B.FID HINTERID,B.FENTRYID HENTRYID,C.FID,C.FENTRYID, D.FBILLNO,B.FACTQTY HQTY,CD.FRECEIVEORGID,CDOO.FNUMBER AS FRECEIVENUMBER |
| | | ,D.FSUPPLIERID,DS.FNUMBER AS FSUPPLIERNUMBER,D.FPURCHASEORGID,DOO.FNUMBER AS FPURCHASEORGNUMBER,CROO.FNUMBER AS FSETTLEORGNUMBER, |
| | | E.FPRICETIMEPOINT,E.FSETTLECURRID,EC.FNUMBER AS FSETTLECURRNUMBER,C.FMATERIALID,CM.FNUMBER AS FMATERIALNUMBER ,C.FUNITID |
| | | ,CU.FNUMBER AS FUNITNUMBER,CR.FPRICE,CR.FTAXPRICE,CR.FTAXRATE,D.FPURCHASERID,isnull(T4.FNUMBER,'') AS FPURCHASERNUMBER,B.FSTOCKID,tst.FNUMBER AS FStockNumber,b.FBZBSID ,isnull(tpr.FNUMBER,'') as FBZNUMBER |
| | | FROM jit_pur_PoOrderExcelEntry B |
| | | JOIN jit_pur_ReceiveExcel M ON B.FID = M.FID |
| | | JOIN T_PUR_POORDERENTRY C ON B.FPOORDERENTRYID = C.FENTRYID |
| | | LEFT JOIN T_BD_MATERIAL CM ON C.FMATERIALID =CM.FMATERIALID |
| | | LEFT JOIN T_BD_UNIT CU ON C.FUNITID =CU.FUNITID |
| | | JOIN T_PUR_POORDERENTRY_D CD ON C.FENTRYID = CD.FENTRYID |
| | | LEFT JOIN T_ORG_ORGANIZATIONS CDOO ON CD.FRECEIVEORGID = CDOO.FORGID |
| | | JOIN T_PUR_POORDERENTRY_F CR ON C.FENTRYID = CR.FENTRYID |
| | | LEFT JOIN T_ORG_ORGANIZATIONS CROO ON CR.FSETTLEORGID = CROO.FORGID |
| | | LEFT JOIN T_PUR_POORDER D ON C.FID =D.FID |
| | | LEFT JOIN T_BAS_BILLTYPE T2 ON D.FBILLTYPEID = T2.FBILLTYPEID |
| | | LEFT JOIN T_BAS_BILLTYPE_L T3 ON T2.FBILLTYPEID = T3.FBILLTYPEID and FLOCALEID = 2052 |
| | | LEFT JOIN V_BD_BUYER T4 ON D.FPURCHASERID =T4.FID |
| | | LEFT JOIN T_BD_SUPPLIER DS ON D.FSUPPLIERID = DS.FSUPPLIERID |
| | | LEFT JOIN T_ORG_ORGANIZATIONS DOO ON D.FPURCHASEORGID = DOO.FORGID |
| | | JOIN T_PUR_POORDERFIN E ON C.FID =E.FID |
| | | LEFT JOIN T_BD_CURRENCY EC ON E. FSETTLECURRID =EC.FCURRENCYID |
| | | join T_BD_STOCK tst on B.FSTOCKID =tst.FStockId |
| | | left join T_BAS_PREBDONE tpr on B.FBZBSID = tpr.FID |
| | | where b.fid = {0} |
| | | ", FID); |
| | | DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; |
| | | if (dt.Rows.Count == 0) |
| | | { |
| | | LogService.Write("sql:" + sql); |
| | | this.View.ShowErrMessage("未匹配数据或数据异常,请联系管理员"); |
| | | return; |
| | | } |
| | | List<string> fmaterialIdList = new List<string>(); |
| | | if (dt.Rows.Count > 0) |
| | | { |
| | | DataRow dr = dt.Rows[0]; |
| | | JObject model = new JObject(); |
| | | string fTypeName = "SLD01_SYS";//标准采购订单类型 |
| | | string ywTypeName = "CG";//标准业务类型 |
| | | if (dr["FTYPENAME"].ToString().Contains("委外")) |
| | | { |
| | | fTypeName = "SLD03_SYS"; |
| | | ywTypeName = "WW"; |
| | | } |
| | | if (dr["FTYPENAME"].ToString().Contains("资产")) |
| | | { |
| | | fTypeName = "SLD04_SYS"; |
| | | ywTypeName = "ZCCG"; |
| | | } |
| | | model.Add("FBILLTYPEID", new JObject() { ["Fnumber"] = fTypeName }); //单据类型 |
| | | model.Add("FBusinessType", ywTypeName); //业务类型 |
| | | model.Add("FBILLNO", dr["HBillNo"].ToString()); //单据编号 |
| | | model.Add("FDate", DateTime.Now.ToString("yyyy-MM-dd")); //通知日期 |
| | | model.Add("FStockOrgId", new JObject() { ["Fnumber"] = dr["FRECEIVENUMBER"].ToString() }); // 收料组织 |
| | | model.Add("FPurOrgId", new JObject() { ["Fnumber"] = dr["FPURCHASEORGNUMBER"].ToString() }); //采购组织 |
| | | model.Add("FSupplierId", new JObject() { ["Fnumber"] = dr["FSUPPLIERNUMBER"].ToString() }); //供应商 |
| | | model.Add("FPURCHASERID", new JObject() { ["Fnumber"] = dr["FPURCHASERNUMBER"].ToString() }); //采购员 |
| | | model.Add("FOwnerTypeIdHead", "BD_Supplier");//货主类型 |
| | | model.Add("FOwnerIdHead", new JObject() { ["Fnumber"] = dr["FSUPPLIERNUMBER"].ToString() });//货主 供应商 |
| | | JArray Fentity = new JArray(); |
| | | foreach (DataRow _dr in dt.Rows) |
| | | { |
| | | JObject FentityModel = new JObject(); |
| | | FentityModel.Add("FMaterialId", new JObject() { ["Fnumber"] = _dr["FMATERIALNUMBER"].ToString() }); // 物料编码 |
| | | FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = _dr["FUNITNUMBER"].ToString() }); // 单位 |
| | | FentityModel.Add("FStockID", new JObject() { ["Fnumber"] = _dr["FStockNumber"].ToString() }); // 仓库 FStockID |
| | | FentityModel.Add("FPreDeliveryDate", DateTime.Now.ToString("yyyy-MM-dd")); //预计到货日期 |
| | | FentityModel.Add("FPriceUnitId", new JObject() { ["Fnumber"] = _dr["FUNITNUMBER"].ToString() }); // 计价单位 |
| | | FentityModel.Add("FStockUnitID", new JObject() { ["Fnumber"] = _dr["FUNITNUMBER"].ToString() }); // 库存单位 |
| | | FentityModel.Add("F_TEZV_Base", new JObject() { ["Fnumber"] = _dr["FBZNUMBER"].ToString() }); // 包装标识 |
| | | |
| | | FentityModel.Add("FActReceiveQty", Convert.ToDecimal(_dr["HQTY"])); // 供应商送货数量(提料计划数量 - 已生成送货单数量) |
| | | FentityModel.Add("FOwnerTypeId", "BD_OwnerOrg");//货主类型 |
| | | FentityModel.Add("FOwnerID", new JObject() { ["Fnumber"] = dr["FPURCHASEORGNUMBER"].ToString() });//货主 |
| | | FentityModel.Add("FSrcId", _dr["FID"].ToString());//源单内码 |
| | | FentityModel.Add("FSRCFORMID", "PUR_PurchaseOrder");//源单类型 |
| | | FentityModel.Add("FSrcBillNo", _dr["FBILLNO"].ToString());//源单单号 |
| | | FentityModel.Add("FSRCENTRYID", _dr["FENTRYID"].ToString());//源单分录内码 |
| | | FentityModel.Add("FORDERBILLNO", _dr["FBILLNO"].ToString());//源单单号 |
| | | FentityModel.Add("FPOORDERENTRYID", _dr["FENTRYID"].ToString());//源单分录内码 |
| | | FentityModel.Add("FSRMENTRYID", _dr["HENTRYID"].ToString());//SRM hentryid |
| | | FentityModel.Add("FPrice", _dr["FPRICE"].ToString());//单价 |
| | | FentityModel.Add("FTaxPrice", _dr["FTAXPRICE"].ToString());//含税单价 |
| | | FentityModel.Add("FEntryTaxRate", _dr["FTAXRATE"].ToString());//税率 |
| | | |
| | | JArray Fentity2 = new JArray(); |
| | | JObject FentityModel2 = new JObject(); |
| | | FentityModel2.Add("FDetailEntity_Link_FRULEID", "PUR_PurchaseOrder-PUR_ReceiveBill"); |
| | | FentityModel2.Add("FDetailEntity_Link_FSTableName", "t_PUR_POOrderEntry"); |
| | | FentityModel2.Add("FDetailEntity_Link_FSBillId", _dr["FID"].ToString()); |
| | | FentityModel2.Add("FDetailEntity_Link_FSId", _dr["FEntryID"].ToString()); |
| | | FentityModel2.Add("FDetailEntity_Link_FBaseUnitQtyOld", Convert.ToDecimal(_dr["HQTY"])); |
| | | FentityModel2.Add("FDetailEntity_Link_FBaseUnitQty", Convert.ToDecimal(_dr["HQTY"])); |
| | | FentityModel2.Add("FDetailEntity_Link_FStockBaseQtyOld", Convert.ToDecimal(_dr["HQTY"])); |
| | | FentityModel2.Add("FDetailEntity_Link_FStockBaseQty", Convert.ToDecimal(_dr["HQTY"])); |
| | | Fentity2.Add(FentityModel2); |
| | | FentityModel.Add("FDetailEntity_Link", Fentity2); |
| | | Fentity.Add(FentityModel); |
| | | } |
| | | model.Add("FDetailEntity", Fentity); //明细信息 |
| | | JObject _FentityModel = new JObject(); |
| | | _FentityModel.Add("FSettleOrgId", new JObject() { ["Fnumber"] = dr["FSETTLEORGNUMBER"].ToString() }); // 结算组织 |
| | | _FentityModel.Add("FSettleCurrId", new JObject() { ["Fnumber"] = dr["FSETTLECURRNUMBER"].ToString() }); // 结算币别 |
| | | _FentityModel.Add("FPricePoint", 0); // 定价时点 |
| | | model.Add("FinanceEntity ", _FentityModel);//财务信息 |
| | | JObject jsonRoot = new JObject() |
| | | { |
| | | ["Creator"] = "", |
| | | ["NeedUpDateFields"] = new JArray(), |
| | | ["NeedReturnFields"] = new JArray(), |
| | | ["IsDeleteEntry"] = "false", |
| | | ["SubSystemId"] = "", |
| | | ["IsVerifyBaseDataField"] = "false", |
| | | ["Model"] = model |
| | | }; |
| | | CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/"); |
| | | var result = cloudClient.Save("PUR_ReceiveBill", jsonRoot.ToString()); |
| | | JObject saveObj = JObject.Parse(result); |
| | | string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper(); |
| | | if (saveIsSuc == "TRUE") |
| | | { |
| | | //this.View.ShowErrMessage(jsonRoot.ToString()); |
| | | // 打开单据维护界面:以打开销售订单100001为例 |
| | | // using Kingdee.BOS.Core.Bill; |
| | | string pageId = Guid.NewGuid().ToString(); |
| | | BillShowParameter showParameter = new BillShowParameter(); |
| | | showParameter.FormId = "PUR_ReceiveBill"; |
| | | showParameter.OpenStyle.ShowType = ShowType.MainNewTabPage; |
| | | showParameter.PageId = pageId; |
| | | showParameter.Status = OperationStatus.EDIT; |
| | | // 传入需要修改的销售订单内码,演示代码直接固定写死为100001 |
| | | showParameter.PKey = saveObj["Result"]["Id"].ToString(); |
| | | this.View.ShowForm(showParameter); |
| | | } |
| | | else |
| | | { |
| | | this.View.ShowMessage(saveObj["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString()); |
| | | this.View.ShowMessage("收料通知单生成失败:" + saveObj["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString()); |
| | | LogService.Write(jsonRoot.ToString()); |
| | | return; |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | this.View.ShowMessage(ex.Message.ToString()); |
| | | } |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 生成送货单(相同物料合并) 22-9-15 胡晶让更改为不合并 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public void btnPush() |
| | | public void btnPushold() |
| | | { |
| | | try |
| | | { |