using Kingdee.BOS.Orm.DataEntity;
|
using System.ComponentModel;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using Kingdee.BOS.ServiceHelper;
|
using Kingdee.BOS.Util;
|
using Kingdee.BOS.Core.List.PlugIn;
|
using Kingdee.BOS.Core.DynamicForm;
|
using Kingdee.BOS;
|
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
|
using Kingdee.BOS.Core.List;
|
using System.Data;
|
using System.Diagnostics;
|
using Demo.Model.Model;
|
using Demo.Model.Model.PODemandPlan;
|
using ZD.Share.Common;
|
using Newtonsoft.Json.Linq;
|
using ZD.Cloud.WebApi;
|
using Kingdee.BOS.Core;
|
using Kingdee.BOS.KDThread;
|
using Kingdee.BOS.Core.Bill;
|
using Kingdee.BOS.Core.Metadata;
|
using Kingdee.BOS.Core.CommonFilter;
|
|
namespace Demo.BillView.PRD
|
{
|
[Description("采购订单 列表插件")]
|
[HotUpdate]
|
|
public class Pur_OrderList : AbstractListPlugIn
|
{
|
public override void BarItemClick(BarItemClickEventArgs e)
|
{
|
base.BarItemClick(e);
|
//生成提料计划单
|
if (e.BarItemKey.ToUpper().Equals("BTNPUSH"))
|
{
|
btnPush();
|
}
|
|
}
|
/// <summary>
|
/// 生成送货单
|
/// </summary>
|
/// <returns></returns>
|
public void btnPush()
|
{
|
try
|
{
|
//获取选择记录
|
ListSelectedRowCollection selectRows = this.ListView.SelectedRowsInfo;
|
if (selectRows.Count == 0)
|
{
|
this.View.ShowMessage("请选择需要生成提料计划单的单据!", MessageBoxType.Notice);
|
return;
|
}
|
List<string> fidList = selectRows.GetEntryPrimaryKeyValues().ToList();
|
string fids = string.Join(",", fidList);
|
string sql = string.Format(@"/*dialect*/
|
select t1.FDOCUMENTSTATUS,FCLOSESTATUS,FCANCELSTATUS,FMRPCloseStatus,FMRPFreezeStatus,FMRPTerminateStatus,t4.FSTOCKINQTY,t4.FReceiveQty,t1.FID,t1.FBillNo,t2.FENTRYID,t1.FSUPPLIERID,t3.fnumber,t2.FMATERIALID,T9.FNUMBER as FMATERIALNUMBER,(t4.FREMAINRECEIVEQTY-t2.FPODemandPlanCount)FQTY
|
,FPurchaseOrgId FStockOrgId,t5.FNUMBER FORGNumber,FCloseStatus,FMRPCLOSESTATUS,FPURCHASEDEPTID,t7.FNUMBER as FPURCHASEDEPTNUMBER
|
,t1.FCREATORID,t8.FName ,t1.FDate,tD.FDeliveryDate,t2.FNOTE, t2.FSTOCKINQTY,t2.FReceiveQty,(t4.FReceiveQty - t4.FSTOCKINQTY) as FReceiveNotInQty,t2.FXQD,T2.FQTY AS FPURCHASEQTY,FJOINQTY,
|
isnull((select top 1 FLEADTIME + FLEADTTIME2 from T_PRD_TLPlanConfig a
|
join T_PRD_TLPlanConfigEntry b on a.FID =b.FID
|
where a.FORGID = t1.FPurchaseOrgId and b.FSUPPLIERID = t1.FSUPPLIERID), 0)FFIXLEADTIME
|
from t_PUR_POOrder t1
|
join t_PUR_POOrderEntry t2 on t1.FID = t2.FID
|
join t_BD_Supplier t3 on t1.FSUPPLIERID = t3.FSUPPLIERID
|
join T_PUR_POORDERENTRY_R t4 on t2.FENTRYID = t4.FENTRYID
|
join T_PUR_POORDERENTRY_D tD on t2.FENTRYID = tD.FENTRYID
|
join T_ORG_Organizations t5 on t1.FPurchaseOrgId = t5.FORGID
|
join T_SEC_user t8 on t1.FCREATORID = t8.FuserId
|
LEFT join T_BD_DEPARTMENT T7 ON t1.FPURCHASEDEPTID = T7.FDEPTID
|
join T_BD_MATERIAL T9 ON t2.FMATERIALID = T9.FMATERIALID
|
where t2.FentryId in ({0})
|
", fids);
|
DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
|
List<string> errList = new List<string>();
|
foreach (DataRow dr in dt.Rows)
|
{
|
if (dr["FDOCUMENTSTATUS"].ToString() == "C" && dr["FCLOSESTATUS"].ToString() == "A" && dr["FCANCELSTATUS"].ToString() == "A" && dr["FMRPCloseStatus"].ToString() == "A" && dr["FMRPFreezeStatus"].ToString() == "A" && dr["FMRPTerminateStatus"].ToString() == "A")
|
{
|
|
}
|
else
|
{
|
this.View.ShowMessage("请选择已审核,未关闭,未作废数据!");
|
return;
|
}
|
|
if (Convert.ToDecimal(dr["FPURCHASEQTY"]) <= Convert.ToDecimal(dr["FReceiveQty"]))
|
{
|
this.View.ShowMessage($"单据号:{dr["FBILLNO"].ToString()},物料:{dr["FMATERIALNUMBER"].ToString()},采购数量:{Convert.ToDecimal(dr["FPURCHASEQTY"])},收料单数量:{Convert.ToDecimal(dr["FReceiveQty"])};没有数量可以生成提料计划单,请检查!", MessageBoxType.Notice);
|
return;
|
}
|
if (errList.Contains(dr["FStockOrgId"].ToString() + dr["FSUPPLIERID"].ToString() + dr["FDate"].ToString()))
|
continue;
|
else
|
errList.Add(dr["FStockOrgId"].ToString() + dr["FSUPPLIERID"].ToString() + dr["FDate"].ToString());
|
}
|
if (errList.Count > 1)
|
{
|
this.View.ShowMessage("选中的数据存在供应商+采购日期不一致数据,请检查!", MessageBoxType.Notice);
|
return;
|
}
|
List<PurchaseInventory> PurchaseInventory = DBServiceHelper.ExecuteDataSet(Context, sql).ToModelList<PurchaseInventory>();
|
string PurchseFNUMBER = dt.Rows[0]["fnumber"].ToString(); //供应商
|
string FWorkshopNumber = dt.Rows[0]["FPURCHASEDEPTNUMBER"].ToString(); //采购部门
|
string FCreatorID = dt.Rows[0]["FCREATORID"].ToString();
|
string FORGNumber = dt.Rows[0]["FORGNumber"].ToString();
|
JObject model = new JObject();
|
model.Add("FHDate", dt.Rows[0]["FDate"].ToString());
|
model.Add("FSettleCurrId", new JObject() { ["Fnumber"] = "PRE001" });
|
model.Add("FSupplierID", new JObject() { ["Fnumber"] = PurchseFNUMBER });
|
model.Add("FHMaker", new JObject() { ["FUserID"] = Context.UserId });
|
model.Add("FHUpDater ", new JObject() { ["FUserID"] = Context.UserId }); //修改人
|
model.Add("FHPURCHASEORGID", new JObject() { ["Fnumber"] = FORGNumber });//组织
|
JArray Fentity = new JArray();
|
foreach (var _item in PurchaseInventory)
|
{
|
JObject FentityModel = new JObject();
|
FentityModel.Add("FHMaterID", new JObject() { ["Fnumber"] = _item.FMATERIALNUMBER });//物料
|
FentityModel.Add("FHQty", _item.FPURCHASEQTY- _item.FReceiveQty);//数量 =
|
FentityModel.Add("FPURCHASEORGID", new JObject() { ["Fnumber"] = _item.FORGNumber });//采购组织
|
FentityModel.Add("FHPOOrderInterID", _item.FID);// 采购订单内码:FHPOOrderInterID
|
FentityModel.Add("FHPOOrderEntryID", _item.FENTRYID); //采购订单子内码:FHPOOrderEntryID
|
FentityModel.Add("FHPOOrderBillNo", _item.FBillNo); //采购订单号:FHPOOrderBillNo
|
FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = "Pcs" }); //单位
|
|
FentityModel.Add("FSalOrderNo", _item.FXQD); //需求单号
|
FentityModel.Add("FCgddCreaterId", new JObject() { ["FUserID"] = _item.FCREATORID }); //采购员
|
FentityModel.Add("FCgDate", _item.FDate); //采购订单单据日期
|
FentityModel.Add("FCgDeliveryDate", _item.FDeliveryDate); //采购订单交货日期
|
FentityModel.Add("F_QIMB_NOTE", _item.F_QIMB_NOTE); //采购订单摘要
|
FentityModel.Add("FNOTE", _item.FNOTE); //采购订单表体备注
|
FentityModel.Add("FDAYPLANBILLNO", _item.FBillNo); //日计划工单号
|
FentityModel.Add("FPURCHASEDEPTID", new JObject() { ["Fnumber"] = FWorkshopNumber }); //采购部门
|
FentityModel.Add("FCgddQty", _item.FPURCHASEQTY); //采购订单数量
|
FentityModel.Add("FCGDDJOINQTY", _item.FJOINQTY); //采购订单关联数量
|
|
Fentity.Add(FentityModel);
|
}
|
model.Add("FEntity", Fentity);
|
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("paez_PODemandPlan", jsonRoot.ToString());
|
//LogService.Write("result"+ result);
|
JObject saveObj = JObject.Parse(result);
|
string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper();
|
if (saveIsSuc == "TRUE")
|
{
|
string pageId = Guid.NewGuid().ToString();
|
BillShowParameter showParameter = new BillShowParameter();
|
showParameter.FormId = "paez_PODemandPlan";
|
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());
|
return;
|
}
|
}
|
catch (Exception ex)
|
{
|
this.View.ShowMessage(ex.Message.ToString());
|
}
|
}
|
|
public void OpenPurOrder()
|
{
|
//获取选择记录
|
ListSelectedRowCollection selectRows = this.ListView.SelectedRowsInfo;
|
if (selectRows.Count == 0)
|
{
|
this.View.ShowMessage("请选择数据!", MessageBoxType.Notice);
|
return;
|
}
|
List<string> fidList = selectRows.GetEntryPrimaryKeyValues().ToList();
|
string fentryids = string.Join(",", fidList);
|
string sql = string.Format("/*dialect*/ select distinct FHPOORDERENTRYID from Cg_PODemandPlanBillSub where FentryId in ({0})", fentryids);
|
DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
|
string purfentryids = string.Empty;
|
foreach (DataRow dr in dt.Rows)
|
{
|
purfentryids += dr["FHPOORDERENTRYID"] + ",";
|
}
|
purfentryids = purfentryids.Substring(0, purfentryids.Length - 1);
|
// 采购订单
|
string billNo = Convert.ToString(this.Model.GetValue("FBillNo"));
|
string fldName = "t3.FEntryID";
|
IRegularFilterParameter filterParameter = new ListRegularFilterParameter();
|
filterParameter.Filter = string.Format(" {0} IN ({1}) ", fldName, purfentryids);
|
filterParameter.SelectEntitys = new List<string>() { "FPOOrderEntry" };
|
var listTrackParameter = new ListTrackBillShowParameter();
|
listTrackParameter.FormId = "PUR_PurchaseOrder";
|
listTrackParameter.PageId = Guid.NewGuid().ToString();
|
listTrackParameter.IsShowFilter = false;
|
listTrackParameter.ListFilterParameter = filterParameter;
|
this.View.ShowForm(listTrackParameter);
|
}
|
}
|
}
|