using System;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Data;
|
using System.Linq;
|
using Kingdee.BOS.Core.Bill;
|
using Kingdee.BOS.Core.Bill.PlugIn;
|
using Kingdee.BOS.Core.DbSchema;
|
using Kingdee.BOS.Core.DynamicForm;
|
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
|
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
|
using Kingdee.BOS.Core.List;
|
using Kingdee.BOS.Core.Metadata;
|
using Kingdee.BOS.Core.Metadata.EntityElement;
|
using Kingdee.BOS.Orm.DataEntity;
|
using Kingdee.BOS.ServiceHelper;
|
using Newtonsoft.Json.Linq;
|
|
using ZD.Cloud.WebApi;
|
using ZD.Share.Common;
|
using Demo.Model;
|
using Demo.Model.Model.PODemandPlan;
|
using Kingdee.BOS.Core.CommonFilter;
|
|
namespace Demo.BillView.PRD
|
{
|
[Description("提料计划单-表单插件")]
|
[Kingdee.BOS.Util.HotUpdate]
|
public class Pro_TlPush : AbstractBillPlugIn
|
{
|
|
public override void BarItemClick(BarItemClickEventArgs e)
|
{
|
try
|
{
|
string a;
|
CloudClient cloudClient = new CloudClient("http://localhost//k3cloud/");
|
if ((a = e.BarItemKey.ToUpperInvariant()) != null)
|
{
|
if (a == "TBPUSH")
|
{
|
string btnType = "生成送货单";
|
//验证用户权限
|
if (!IsHaveQX(btnType))
|
{
|
this.View.ShowErrMessage("未设置用户角色权限");
|
return;
|
}
|
|
//验证是否审核
|
if (this.View.Model.GetValue("FDOCUMENTSTATUS").ToString() != "C")
|
{
|
this.View.ShowErrMessage("单据未审核");
|
return;
|
}
|
//验证是否关闭
|
if (Convert.ToBoolean(this.View.Model.GetValue("FHCloseType")))
|
{
|
this.View.ShowErrMessage("单据已关闭");
|
return;
|
}
|
Entity entity = this.View.BillBusinessInfo.GetEntity("FEntity");//标识
|
DynamicObjectCollection entityRows = this.Model.GetEntityDataObject(entity);//获取父单据体行集合
|
int ret = entityRows.Where(x => Convert.ToDecimal(x["FHQty"])+ Convert.ToDecimal(x["FRMREALQTY"]) - Convert.ToDecimal(x["FReciveCount"]) > 0 && !Convert.ToBoolean(x["FCloseStatus"])).Count();
|
if (ret == 0)
|
{
|
this.View.ShowErrMessage("已全部生成送货单");
|
return;
|
}
|
//校验 送货控制天数
|
string sql = string.Format(@"
|
/*dialect*/
|
select t2.FBILLNO,t2.FHDATE,t3.FDELIVERYDAYSKZ,DATEDIFF(d,GETDATE(),t2.FHDATE) as FTQDATE,t4.fnumber from CG_PODEMANDPLANBILLSUB t1
|
join CG_PODEMANDPLANBILLMAIN T2 on t1.fid =t2.fid
|
join (
|
select distinct t1.FORGID,t2.FSUPPLIERID,t2.FMATERIALID,t2.FDELIVERYDAYSKZ from T_PRD_TLPlanConfig t1
|
join T_PRD_TLPlanConfigEntry t2 on t1.fid = t2.fid
|
)
|
t3 on t2.FHPURCHASEORGID = t3.FORGID and t2.FSUPPLIERID = t3.FSUPPLIERID and t1.FHMATERID = t3.FMATERIALID
|
join T_BD_MATERIAL t4 on t3.FMATERIALID = t4.FMATERIALID
|
--where DATEDIFF(d,t2.FHDATE,GETDATE()) < t3.FDELIVERYDAYSKZ and DATEDIFF(d,t2.FHDATE,GETDATE()) > 0
|
where t1.FID IN ({0})
|
", this.View.Model.GetPKValue().ToString());
|
DataTable yzDataTable = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
|
foreach (DataRow dr in yzDataTable.Rows)
|
{
|
if (Convert.ToInt32(dr["FTQDATE"]) > Convert.ToInt32(dr["FDELIVERYDAYSKZ"]))
|
{
|
this.View.ShowErrMessage($"物料:{dr["fnumber"].ToString()}已配置提前期为{Convert.ToInt32(dr["FDELIVERYDAYSKZ"])}天,不允许今天下推。");
|
return;
|
}
|
if (Convert.ToInt32(dr["FDELIVERYDAYSKZ"]) < 0)
|
{
|
this.View.ShowErrMessage($"提料日期为:{Convert.ToString(dr["FHDATE"])},不允许超出日期时下推。");
|
return;
|
}
|
}
|
sql = string.Format(@"
|
/*dialect*/
|
SELECT T3.FNAME AS FTYPENAME,M.FBILLNO HBILLNO,M.FDOCUMENTSTATUS,B.FID HID,B.FEntryID as HENTRYID,C.FID,C.FENTRYID, D.FBILLNO,B.FHQTY,B.FReciveCount,b.FRMREALQTY,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,C.FXQD
|
FROM Cg_PODemandPlanBillSub B
|
JOIN Cg_PODemandPlanBillMain M ON B.FID = M.FID
|
JOIN T_PUR_POORDERENTRY C ON B.FHPOORDERENTRYID = 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
|
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
|
where b.FID IN ({0}) AND B.FReciveCount < B.FHQTY + b.FRMREALQTY
|
", this.View.Model.GetPKValue().ToString()
|
);
|
DataTable dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0];
|
if (dt.Rows.Count == 0)
|
{
|
this.View.ShowMessage("已全部生成送货单,请检查!", MessageBoxType.Notice);
|
return;
|
}
|
JObject model = new JObject();
|
string fTypeName = "SLD01_SYS";//标准采购订单类型
|
string ywTypeName = "CG";//标准业务类型
|
if (dt.Rows[0]["FTYPENAME"].ToString().Contains("委外"))
|
{
|
fTypeName = "SLD03_SYS";
|
ywTypeName = "WW";
|
}
|
if (dt.Rows[0]["FTYPENAME"].ToString().Contains("资产"))
|
{
|
fTypeName = "SLD04_SYS";
|
ywTypeName = "ZCCG";
|
}
|
model.Add("FBILLTYPEID", new JObject() { ["Fnumber"] = fTypeName }); //单据类型
|
model.Add("FBusinessType", ywTypeName); //业务类型
|
model.Add("FIsInsideBill", "true");// 外部单据 FIsInsideBill = 1 时候 可以显示在协同平台
|
//model.Add("FBILLNO", dt.Rows[0]["HBillNo"].ToString()); //单据编号
|
model.Add("FDate", DateTime.Now.ToString("yyyy-MM-dd")); //通知日期
|
model.Add("FStockOrgId", new JObject() { ["Fnumber"] = dt.Rows[0]["FRECEIVENUMBER"].ToString() }); // 收料组织
|
model.Add("FPurOrgId", new JObject() { ["Fnumber"] = dt.Rows[0]["FPURCHASEORGNUMBER"].ToString() }); //采购组织
|
model.Add("FSupplierId", new JObject() { ["Fnumber"] = dt.Rows[0]["FSUPPLIERNUMBER"].ToString() }); //供应商
|
model.Add("FPURCHASERID", new JObject() { ["Fnumber"] = dt.Rows[0]["FPURCHASERNUMBER"].ToString() }); //采购员
|
model.Add("FOwnerTypeIdHead", "BD_Supplier");// 货主类型
|
model.Add("FOwnerIdHead", new JObject() { ["Fnumber"] = dt.Rows[0]["FSUPPLIERNUMBER"].ToString() });//货主 供应商
|
model.Add("FCreatorId ", new JObject() { ["FUserID"] = Context.UserId }); //创建人
|
|
JArray Fentity = new JArray();
|
foreach (DataRow item in dt.Rows)
|
{
|
JObject FentityModel = new JObject();
|
FentityModel.Add("FMaterialId", new JObject() { ["Fnumber"] = item["FMATERIALNUMBER"].ToString() }); // 物料编码
|
FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = item["FUNITNUMBER"].ToString() }); // 单位
|
FentityModel.Add("FPreDeliveryDate", DateTime.Now.ToString("yyyy-MM-dd")); //预计到货日期
|
FentityModel.Add("FPriceUnitId", new JObject() { ["Fnumber"] = item["FUNITNUMBER"].ToString() }); // 计价单位
|
FentityModel.Add("FStockUnitID", new JObject() { ["Fnumber"] = item["FUNITNUMBER"].ToString() }); // 库存单位
|
FentityModel.Add("FActReceiveQty", Convert.ToDecimal(item["FHQty"]) - Convert.ToDecimal(item["FReciveCount"]) + Convert.ToDecimal(item["FRMREALQTY"])); // 供应商送货数量(提料计划数量 - 已生成送货单数量)
|
FentityModel.Add("FOwnerTypeId", "BD_OwnerOrg");//货主类型
|
FentityModel.Add("FOwnerID", new JObject() { ["Fnumber"] = item["FPURCHASEORGNUMBER"].ToString() });//货主
|
FentityModel.Add("FSrcId", item["FID"].ToString());//源单内码
|
FentityModel.Add("FSRCFORMID", "PUR_PurchaseOrder");//源单类型
|
FentityModel.Add("FSrcBillNo", item["FBILLNO"].ToString());//源单单号
|
FentityModel.Add("FSRCENTRYID", item["FENTRYID"].ToString());//源单分录内码
|
FentityModel.Add("FORDERBILLNO", item["FBILLNO"].ToString());//源单单号
|
FentityModel.Add("FPOORDERENTRYID", item["FENTRYID"].ToString());//源单分录内码
|
FentityModel.Add("FTLId", item["HID"].ToString());//提料源单内码
|
FentityModel.Add("FTLentryId", item["HENTRYID"].ToString());//提料源单分录内码
|
FentityModel.Add("FTLOrderNo", item["HBILLNO"].ToString());//提料源单分录内码
|
FentityModel.Add("FPrice", item["FPRICE"].ToString());//单价
|
FentityModel.Add("FTaxPrice", item["FTAXPRICE"].ToString());//含税单价
|
FentityModel.Add("FEntryTaxRate", item["FTAXRATE"].ToString());//税率
|
FentityModel.Add("F_QIMB_Text", item["FXQD"].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", item["FID"].ToString());
|
FentityModel2.Add("FDetailEntity_Link_FSId", item["FEntryID"].ToString());
|
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"] = dt.Rows[0]["FSETTLEORGNUMBER"].ToString() }); // 结算组织
|
_FentityModel.Add("FSettleCurrId", new JObject() { ["Fnumber"] = dt.Rows[0]["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",
|
//["IsAutoSubmitAndAudit"] = true,//自动调用提交和审核功能
|
["Model"] = model
|
};
|
var result = cloudClient.Save("PUR_ReceiveBill", jsonRoot.ToString());//收料通知单api
|
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 = "SCP_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());
|
return;
|
}
|
}
|
else if (a == "TBDEMANDPLAN")
|
{
|
string btnType = "提料计划选单";
|
//验证用户权限
|
if (!IsHaveQX(btnType))
|
return;
|
DemandPlan();
|
}
|
else if (a == "TBPURCHASE")
|
{
|
string btnType = "采购订单选单";
|
//验证用户权限
|
if (!IsHaveQX(btnType))
|
return;
|
//选单选择采购订单
|
PurChasePlan();
|
}
|
else if (a == "BTNCLOSE")
|
{
|
var FID = this.View.Model.GetPKValue();
|
var fCloseStatus = Convert.ToBoolean(this.View.Model.GetValue("FHCloseType"));
|
if (fCloseStatus)
|
{
|
this.View.ShowMessage("单据已关闭");
|
}
|
string sql = string.Format(@"/*dialect*/
|
update Cg_PODemandPlanBillMain set
|
FHCloseMan = {0},
|
FHCloseDate = GETDATE(),
|
FHCloseType = 1
|
where fid IN ({1})", Context.UserId, FID);
|
DBServiceHelper.Execute(Context, sql);
|
sql = string.Format(@"/*dialect*/
|
UPDATE A SET
|
A.FPODemandPlanCount -= B.FHQTY
|
FROM t_PUR_POOrderEntry A
|
JOIN Cg_PODemandPlanBillSub B ON A.FENTRYID = B.FHPOOrderEntryID
|
where B.FID IN ({0}) AND B.FCLOSESTATUS = 0 ", FID);
|
this.View.Refresh();
|
this.View.ShowMessage("操作成功");
|
}
|
else if (a == "BTNOPENPURORDER")
|
{
|
OpenPurOrder();
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
throw ex;
|
}
|
}
|
|
//选择提料计划
|
public void DemandPlan()
|
{
|
try
|
{
|
//选单选择提料计划单
|
int[] selectedIndexsR = this.View.GetControl<EntryGrid>("FEntity").GetSelectedRows();//单据体数据
|
if (selectedIndexsR.Count() == 0)
|
{
|
this.View.ShowErrMessage("请选择需要变更的单据行");
|
return;
|
}
|
DynamicObjectCollection selectedRowsDy = this.Model.DataObject["FEntity"] as DynamicObjectCollection;//选中行数据
|
DynamicObject selectedRow;
|
List<int> FentryIdList = new List<int>();
|
foreach (var item in selectedIndexsR)
|
{
|
selectedRow = selectedRowsDy[item];
|
FentryIdList.Add(Convert.ToInt32(selectedRow["Id"]));
|
}
|
string FentryId = string.Join(",", FentryIdList);
|
string isCancleSql = string.Format(@"/*dialect*/
|
select FSEQ from Cg_PODemandPlanBillSub
|
where FCLOSESTATUS = 1 and fentryid in ({0})", FentryId);
|
DataTable isCancleTable = DBServiceHelper.ExecuteDataSet(Context, isCancleSql).Tables[0];
|
if (isCancleTable.Rows.Count > 0)
|
{
|
string errdt = "错误,";
|
foreach (DataRow dr in isCancleTable.Rows)
|
{
|
errdt += "序号 : " + dr["FSEQ"].ToString() + "已关闭";
|
}
|
this.View.ShowErrMessage(errdt);
|
return;
|
}
|
|
//跳转选单界面
|
List<string> FSelectIdList = new List<string>(); //记录选单的明细ID
|
string pageId = Guid.NewGuid().ToString();
|
ListShowParameter showParameter = new ListShowParameter();
|
showParameter.FormId = "paez_PODemandPlan";
|
showParameter.PageId = pageId;
|
showParameter.UseOrgId = this.Context.CurrentOrganizationInfo.ID;
|
showParameter.IsLookUp = true;
|
this.View.ShowForm(showParameter, delegate (FormResult result)
|
{
|
object returnData = result.ReturnData;
|
if (returnData == null)
|
return;
|
if (returnData is ListSelectedRowCollection)
|
{
|
ListSelectedRowCollection listSelectedRowCollection = returnData as ListSelectedRowCollection;
|
if (listSelectedRowCollection != null)
|
{
|
foreach (var listSelectedRow in listSelectedRowCollection)
|
{
|
FSelectIdList.Add(listSelectedRow.DataRow["t1_FENTRYID"].ToString());
|
}
|
}
|
}
|
//if (FentryIdList.Count != FSelectIdList.Count)
|
//{
|
// this.View.ShowErrMessage("选择行数量不一致");
|
// return;
|
//}
|
string FSelectId = string.Join(",", FSelectIdList);
|
//验证选单物料是否一致
|
string sql = string.Format(@"/*dialect*/
|
SELECT COUNT(*) ERRCOUNT FROM CG_PODEMANDPLANBILLSUB
|
WHERE FENTRYID IN({0})
|
AND FHMATERID NOT IN
|
(
|
SELECT FHMATERID FROM CG_PODEMANDPLANBILLSUB
|
WHERE FENTRYID IN({1})
|
)", FentryId, FSelectId);
|
int ErrCount = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
|
if (ErrCount > 0)
|
{
|
this.View.ShowErrMessage("选单数据物料不一致");
|
return;
|
}
|
|
//需要选择变更的数据 以及 选单选中的数据 判断数据合理性
|
//选单界面B选中行数据物料 需要一致 且B占用采购单数量需要满足A的需求量
|
sql = string.Format(@"/*dialect*/
|
SELECT count(*) errcount FROM
|
(
|
select FHMATERID,SUM(FHQTY)FHQTY from Cg_PODemandPlanBillSub
|
where FEntryID IN({0})
|
GROUP BY FHMATERID
|
)A
|
JOIN
|
(select FHMATERID,FHQTY from Cg_PODemandPlanBillSub
|
where FEntryID IN({1})
|
)
|
B
|
ON A.FHMATERID=B.FHMATERID
|
WHERE B.FHQTY < A.FHQTY", FentryId, FSelectId);
|
ErrCount = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
|
if (ErrCount > 0)
|
{
|
this.View.ShowErrMessage("选单数据占用的采购订单物料不一致 或者 数量不满足需要变更数量");
|
return;
|
}
|
//验证通过
|
//关闭A单据选择行 取消采购订单的占用提料数量
|
//生成一张新的提料计划单 提料日期,提料数量,生产工单信息 取A单据 ,采购信息 取B单据
|
string tlSql = string.Format(@"/*dialect*/
|
SELECT A.FID,C.FHDate,D.FSupplierID,E.FNUMBER AS FSupplierName,C.FSettleCurrId,A.FHMATERID,F.FNUMBER AS FMATERIALNAME,A.FHQty,A.FHSourceInterID,A.FHSourceEntryID,A.FHSourceBillNo,A.FDayPlanDate,A.FDayPlanDate,A.FHRelationQty,B.FHPOOrderInterID,B.FHPOOrderEntryID,B.FHPOOrderBillNo,B.FHPOOrderFseq,B.FErpClsID FROM
|
(
|
select * from Cg_PODemandPlanBillSub
|
where FEntryID IN({0})
|
)
|
A
|
JOIN
|
(select * from Cg_PODemandPlanBillSub
|
where FEntryID IN({1})
|
)
|
B
|
ON A.FHMATERID = B.FHMATERID
|
JOIN Cg_PODemandPlanBillMain C ON A.FID = C.FID
|
JOIN Cg_PODemandPlanBillMain D ON B.FID = D.FID
|
JOIN T_BD_SUPPLIER E ON D.FSupplierID = E.FSUPPLIERID
|
JOIN T_BD_MATERIAL F ON A.FHMATERID = F.FMATERIALID
|
|
", FentryId, FSelectId);
|
DynamicObjectCollection tlCollection = DBServiceHelper.ExecuteDynamicObject(Context, tlSql);
|
JObject model = new JObject();
|
JArray Fentity = new JArray();
|
foreach (var item in tlCollection)
|
{
|
if (!model.ToString().Contains("FHDate"))
|
{
|
model.Add("FHDate", item["FHDate"].ToString());
|
model.Add("FSettleCurrId", new JObject() { ["Fnumber"] = "PRE001" });
|
model.Add("FSupplierID", new JObject() { ["Fnumber"] = item["FSupplierName"].ToString() });
|
}
|
JObject FentityModel = new JObject();
|
FentityModel.Add("FHPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//采购组织
|
FentityModel.Add("FHMaterID", new JObject() { ["Fnumber"] = item["FMATERIALNAME"].ToString() });//物料
|
FentityModel.Add("FHQty", item["FHQty"].ToString());//数量
|
FentityModel.Add("FHSourceInterID", item["FHSourceInterID"].ToString());//日计划工单FID
|
FentityModel.Add("FHSourceEntryID", item["FHSourceEntryID"].ToString());//日计划工单FENTRYID
|
FentityModel.Add("FHSourceBillNo", item["FHSourceBillNo"].ToString());//日计划工单单号
|
FentityModel.Add("FDayPlanDate", item["FDayPlanDate"].ToString());//日计划日期
|
FentityModel.Add("FHRelationQty", item["FHRelationQty"].ToString());//关联数量
|
FentityModel.Add("FPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//采购组织
|
FentityModel.Add("FHPOOrderInterID", item["FHPOOrderInterID"].ToString());// 采购订单内码:FHPOOrderInterID
|
FentityModel.Add("FHPOOrderEntryID", item["FHPOOrderEntryID"].ToString()); //采购订单子内码:FHPOOrderEntryID
|
FentityModel.Add("FHPOOrderBillNo", item["FHPOOrderBillNo"].ToString()); //采购订单号:FHPOOrderBillNo
|
FentityModel.Add("FERPCLSID", item["FErpClsID"].ToString()); //
|
FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = "Pcs" }); //单位
|
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());
|
JObject saveObj = JObject.Parse(_result);
|
string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper();
|
if (saveIsSuc != "TRUE")
|
{
|
//LogHelper.Error("提料计划单选单新增异常:" + saveObj.ToString());
|
this.View.ShowMessage(saveObj["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString());
|
}
|
else
|
{
|
//关闭A单据体行 更新对应采购订单 提料计划数量
|
List<string> sqlList = new List<string>();
|
string updateSql = string.Format(@"/*dialect*/
|
update Cg_PODemandPlanBillSub set
|
FCLOSESTATUS = 1
|
where FEntryID in ({0})", FentryId);
|
sqlList.Add(updateSql);
|
updateSql = string.Format(@"/*dialect*/
|
UPDATE A SET
|
A.FPODemandPlanCount -= B.FHQTY
|
FROM t_PUR_POOrderEntry A
|
JOIN Cg_PODemandPlanBillSub B ON A.FENTRYID = B.FHPOOrderEntryID
|
where B.FEntryID in ({0})", FentryId);
|
sqlList.Add(updateSql);
|
//已经占用了B的采购订单数量 故不用更新B对应采购订单的提料计划数量
|
//查询出B订单被占用的数量 更新B订单的转移数量
|
updateSql = string.Format(@"/*dialect*/
|
update Cg_PODemandPlanBillSub set
|
FRemoveCount += T2.FHQTY
|
from Cg_PODemandPlanBillSub T1
|
join
|
(
|
SELECT A.FHQTY,FEntryID FROM
|
(
|
select FHMATERID,SUM(FHQTY)FHQTY from Cg_PODemandPlanBillSub
|
where FEntryID IN({0})
|
GROUP BY FHMATERID
|
)A
|
JOIN
|
(select FHMATERID,FHQTY,FEntryID from Cg_PODemandPlanBillSub
|
where FEntryID IN({1})
|
)
|
B
|
ON A.FHMATERID=B.FHMATERID
|
)T2 ON T1.FEntryID =T2.FEntryID", FentryId, FSelectId);
|
sqlList.Add(updateSql);
|
//执行sql
|
int resCount = DBServiceHelper.ExecuteBatch(Context, sqlList);
|
//重新为B订单分配采购订单
|
//优先分配相同供应商
|
|
string cgddSql = @"/*dialect*/
|
select t1.FID,t1.FBillNo,t2.FENTRYID,t1.FSUPPLIERID,t3.fnumber,t2.FMATERIALID,(t2.FQTY-t2.FPODemandPlanCount)FQTY,FPurchaseOrgId FStockOrgId,t5.FNUMBER FORGNumber,FSTOCKINQTY,FReceiveQty,FCloseStatus,FMRPCLOSESTATUS 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_ORG_Organizations t5 on t1.FPurchaseOrgId = t5.FORGID
|
where t2.FQTY-t2.FPODemandPlanCount>0
|
and FCloseStatus in (0) and FMRPCLOSESTATUS in('A')
|
and t1.FBillTypeID in('83d822ca3e374b4ab01e5dd46a0062bd','6d01d059713d42a28bb976c90a121142')
|
";
|
List<PurchaseInventory> PurchaseInventory = DBServiceHelper.ExecuteDataSet(Context, cgddSql).ToModelList<PurchaseInventory>();
|
string cxfpSql = string.Format(@"/*dialect*/
|
select A.FID,B.FHDate,FRemoveCount,A.FHMATERID,F.FNUMBER AS FMATERIALNAME,B.FSUPPLIERID,E.FNUMBER AS FSupplierName,FHSourceInterID,FHSourceEntryID,FHSourceBillNo,FDayPlanDate,FERPCLSID from Cg_PODemandPlanBillSub A
|
JOIN Cg_PODemandPlanBillMain B ON A.FID =B.FID
|
JOIN T_BD_MATERIAL F ON A.FHMATERID = F.FMATERIALID
|
JOIN T_BD_SUPPLIER E ON B.FSUPPLIERID=E.FSUPPLIERID
|
WHERE A.FEntryID IN ({0})", FSelectId);
|
DataTable DT = DBServiceHelper.ExecuteDataSet(Context, cxfpSql).Tables[0];
|
//批量执行
|
JArray FinalyResult = new JArray();
|
foreach (DataRow dr in DT.Rows)
|
{
|
decimal FRemoveCount = Convert.ToDecimal(dr["FRemoveCount"]);//需要拆分的数量
|
var _PurchaseInventory = PurchaseInventory.Where(x => x.FSUPPLIERID == Convert.ToInt32(dr["FSUPPLIERID"]) && x.FMATERIALID == dr["FHMATERID"].ToString() && x.FQTY > 0).OrderBy(x => x.FENTRYID).ToList();//优先该供应商
|
model = new JObject();
|
Fentity = new JArray();
|
if (_PurchaseInventory.Count > 0)
|
{
|
if (!model.ToString().Contains("FHDate"))
|
{
|
model.Add("FID", dr["FID"].ToString());
|
model.Add("FHDate", dr["FHDate"].ToString());
|
model.Add("FSettleCurrId", new JObject() { ["Fnumber"] = "PRE001" });
|
model.Add("FSupplierID", new JObject() { ["Fnumber"] = dr["FSupplierName"].ToString() });
|
}
|
foreach (var cgitem in _PurchaseInventory)
|
{
|
if (FRemoveCount == 0)
|
break;
|
if (cgitem.FQTY >= FRemoveCount)
|
{
|
//明细行信息Json
|
JObject FentityModel = new JObject();
|
FentityModel.Add("FHPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//采购组织
|
FentityModel.Add("FHMaterID", new JObject() { ["Fnumber"] = dr["FMATERIALNAME"].ToString() });//物料
|
FentityModel.Add("FHQty", FRemoveCount);//数量
|
FentityModel.Add("FHSourceInterID", dr["FHSourceInterID"].ToString());//日计划工单FID
|
FentityModel.Add("FHSourceEntryID", dr["FHSourceEntryID"].ToString());//日计划工单FENTRYID
|
FentityModel.Add("FHSourceBillNo", dr["FHSourceBillNo"].ToString());//日计划工单单号
|
FentityModel.Add("FDayPlanDate", dr["FDayPlanDate"].ToString());//日计划日期
|
FentityModel.Add("FPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//采购组织
|
FentityModel.Add("FHPOOrderInterID", cgitem.FID.ToString());// 采购订单内码:FHPOOrderInterID
|
FentityModel.Add("FHPOOrderEntryID", cgitem.FENTRYID.ToString()); //采购订单子内码:FHPOOrderEntryID
|
FentityModel.Add("FHPOOrderBillNo", cgitem.FBillNo.ToString()); //采购订单号:FHPOOrderBillNo
|
FentityModel.Add("FERPCLSID", dr["FErpClsID"].ToString()); //
|
FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = "Pcs" }); //单位
|
Fentity.Add(FentityModel);
|
FRemoveCount = 0;
|
PurchaseInventory.Where(c => c.FENTRYID == cgitem.FENTRYID).FirstOrDefault().FQTY -= FRemoveCount;
|
}
|
else
|
{
|
//明细行信息Json
|
JObject FentityModel = new JObject();
|
FentityModel.Add("FHPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//采购组织
|
FentityModel.Add("FHMaterID", new JObject() { ["Fnumber"] = dr["FMATERIALNAME"].ToString() });//物料
|
FentityModel.Add("FHQty", cgitem.FQTY);//数量
|
FentityModel.Add("FHSourceInterID", dr["FHSourceInterID"].ToString());//日计划工单FID
|
FentityModel.Add("FHSourceEntryID", dr["FHSourceEntryID"].ToString());//日计划工单FENTRYID
|
FentityModel.Add("FHSourceBillNo", dr["FHSourceBillNo"].ToString());//日计划工单单号
|
FentityModel.Add("FDayPlanDate", dr["FDayPlanDate"].ToString());//日计划日期
|
FentityModel.Add("FPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//采购组织
|
FentityModel.Add("FHPOOrderInterID", cgitem.FID.ToString());// 采购订单内码:FHPOOrderInterID
|
FentityModel.Add("FHPOOrderEntryID", cgitem.FENTRYID.ToString()); //采购订单子内码:FHPOOrderEntryID
|
FentityModel.Add("FHPOOrderBillNo", cgitem.FBillNo.ToString()); //采购订单号:FHPOOrderBillNo
|
FentityModel.Add("FERPCLSID", dr["FErpClsID"].ToString()); //
|
FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = "Pcs" }); //单位
|
Fentity.Add(FentityModel);
|
FRemoveCount -= cgitem.FQTY;
|
PurchaseInventory.Where(c => c.FENTRYID == cgitem.FENTRYID).FirstOrDefault().FQTY = 0;
|
}
|
}
|
model.Add("FEntity", Fentity);
|
}
|
FinalyResult.Add(model);
|
if (FRemoveCount == 0)
|
continue;
|
_PurchaseInventory = PurchaseInventory.Where(x => x.FMATERIALID == dr["FHMATERID"].ToString() && x.FQTY > 0).OrderBy(x => x.FENTRYID).ToList();//优先该供应商
|
if (_PurchaseInventory.Count > 0)
|
{
|
if (!model.ToString().Contains("FHDate"))
|
{
|
model.Add("FHDate", dr["FHDate"].ToString());
|
model.Add("FSettleCurrId", new JObject() { ["Fnumber"] = "PRE001" });
|
model.Add("FSupplierID", new JObject() { ["Fnumber"] = dr["FSupplierName"].ToString() });
|
}
|
foreach (var cgitem in _PurchaseInventory)
|
{
|
if (FRemoveCount == 0)
|
break;
|
if (cgitem.FQTY >= FRemoveCount)
|
{
|
//明细行信息Json
|
JObject FentityModel = new JObject();
|
FentityModel.Add("FHPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//采购组织
|
FentityModel.Add("FHMaterID", new JObject() { ["Fnumber"] = dr["FMATERIALNAME"].ToString() });//物料
|
FentityModel.Add("FHQty", FRemoveCount);//数量
|
FentityModel.Add("FHSourceInterID", dr["FHSourceInterID"].ToString());//日计划工单FID
|
FentityModel.Add("FHSourceEntryID", dr["FHSourceEntryID"].ToString());//日计划工单FENTRYID
|
FentityModel.Add("FHSourceBillNo", dr["FHSourceBillNo"].ToString());//日计划工单单号
|
FentityModel.Add("FDayPlanDate", dr["FDayPlanDate"].ToString());//日计划日期
|
FentityModel.Add("FPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//采购组织
|
FentityModel.Add("FHPOOrderInterID", cgitem.FID.ToString());// 采购订单内码:FHPOOrderInterID
|
FentityModel.Add("FHPOOrderEntryID", cgitem.FENTRYID.ToString()); //采购订单子内码:FHPOOrderEntryID
|
FentityModel.Add("FHPOOrderBillNo", cgitem.FBillNo.ToString()); //采购订单号:FHPOOrderBillNo
|
FentityModel.Add("FERPCLSID", dr["FErpClsID"].ToString()); //
|
FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = "Pcs" }); //单位
|
Fentity.Add(FentityModel);
|
FRemoveCount = 0;
|
PurchaseInventory.Where(c => c.FENTRYID == cgitem.FENTRYID).FirstOrDefault().FQTY -= FRemoveCount;
|
}
|
else
|
{
|
|
//明细行信息Json
|
JObject FentityModel = new JObject();
|
FentityModel.Add("FHPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//采购组织
|
FentityModel.Add("FHMaterID", new JObject() { ["Fnumber"] = dr["FMATERIALNAME"].ToString() });//物料
|
FentityModel.Add("FHQty", cgitem.FQTY);//数量
|
FentityModel.Add("FHSourceInterID", dr["FHSourceInterID"].ToString());//日计划工单FID
|
FentityModel.Add("FHSourceEntryID", dr["FHSourceEntryID"].ToString());//日计划工单FENTRYID
|
FentityModel.Add("FHSourceBillNo", dr["FHSourceBillNo"].ToString());//日计划工单单号
|
FentityModel.Add("FDayPlanDate", dr["FDayPlanDate"].ToString());//日计划日期
|
FentityModel.Add("FPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//采购组织
|
FentityModel.Add("FHPOOrderInterID", cgitem.FID.ToString());// 采购订单内码:FHPOOrderInterID
|
FentityModel.Add("FHPOOrderEntryID", cgitem.FENTRYID.ToString()); //采购订单子内码:FHPOOrderEntryID
|
FentityModel.Add("FHPOOrderBillNo", cgitem.FBillNo.ToString()); //采购订单号:FHPOOrderBillNo
|
FentityModel.Add("FERPCLSID", dr["FErpClsID"].ToString()); //
|
FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = "Pcs" }); //单位
|
Fentity.Add(FentityModel);
|
FRemoveCount -= cgitem.FQTY;
|
PurchaseInventory.Where(c => c.FENTRYID == cgitem.FENTRYID).FirstOrDefault().FQTY = 0;
|
}
|
}
|
model.Add("FEntity", Fentity);
|
}
|
FinalyResult.Add(model);
|
}
|
jsonRoot = new JObject()
|
{
|
["Creator"] = "",
|
["NeedUpDateFields"] = new JArray(),
|
["NeedReturnFields"] = new JArray(),
|
["IsDeleteEntry"] = "false",
|
["SubSystemId"] = "",
|
["IsVerifyBaseDataField"] = "false",
|
["Model"] = FinalyResult
|
};
|
|
_result = cloudClient.BatchSave("paez_PODemandPlan", jsonRoot.ToString());
|
var _saveObj = JObject.Parse(_result);
|
saveIsSuc = _saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper();
|
if (saveIsSuc != "TRUE")
|
{
|
//LogHelper.Error(saveObj.ToString());
|
}
|
|
|
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);
|
}
|
});
|
}
|
catch (Exception ex)
|
{
|
throw ex;
|
}
|
}
|
|
//选择采购订单
|
public void PurChasePlan()
|
{
|
try
|
{
|
//选单选择提料计划单
|
int[] selectedIndexsR = this.View.GetControl<EntryGrid>("FEntity").GetSelectedRows();//单据体数据
|
if (selectedIndexsR.Count() == 0)
|
{
|
this.View.ShowErrMessage("请选择需要变更的单据行");
|
return;
|
}
|
DynamicObjectCollection selectedRowsDy = this.Model.DataObject["FEntity"] as DynamicObjectCollection;//选中行数据
|
DynamicObject selectedRow;
|
List<int> FentryIdList = new List<int>();
|
foreach (var item in selectedIndexsR)
|
{
|
selectedRow = selectedRowsDy[item];
|
FentryIdList.Add(Convert.ToInt32(selectedRow["Id"]));
|
}
|
string FentryId = string.Join(",", FentryIdList);
|
string isCancleSql = string.Format(@"/*dialect*/
|
SELECT FSEQ FROM CG_PODEMANDPLANBILLSUB
|
WHERE FCLOSESTATUS = 1 AND FENTRYID IN ({0})", FentryId);
|
DataTable isCancleTable = DBServiceHelper.ExecuteDataSet(Context, isCancleSql).Tables[0];
|
if (isCancleTable.Rows.Count > 0)
|
{
|
string errdt = "错误,";
|
foreach (DataRow dr in isCancleTable.Rows)
|
{
|
errdt += "序号 : " + dr["FSEQ"].ToString() + "已关闭";
|
}
|
this.View.ShowErrMessage(errdt);
|
return;
|
}
|
//跳转选单界面
|
List<string> FSelectIdList = new List<string>(); //记录选单的明细ID
|
string pageId = Guid.NewGuid().ToString();
|
ListShowParameter showParameter = new ListShowParameter();
|
showParameter.FormId = "PUR_PurchaseOrder";
|
showParameter.PageId = pageId;
|
showParameter.UseOrgId = this.Context.CurrentOrganizationInfo.ID;
|
showParameter.IsLookUp = true;
|
this.View.ShowForm(showParameter, delegate (FormResult result)
|
{
|
object returnData = result.ReturnData;
|
if (returnData == null)
|
return;
|
if (returnData is ListSelectedRowCollection)
|
{
|
ListSelectedRowCollection listSelectedRowCollection = returnData as ListSelectedRowCollection;
|
if (listSelectedRowCollection != null)
|
{
|
foreach (var listSelectedRow in listSelectedRowCollection)
|
{
|
FSelectIdList.Add(listSelectedRow.DataRow["t3_FENTRYID"].ToString());
|
}
|
}
|
}
|
string FSelectId = string.Join(",", FSelectIdList);
|
//验证选单物料是否一致
|
string sql = string.Format(@"/*dialect*/
|
SELECT COUNT(*) ERRCOUNT FROM CG_PODEMANDPLANBILLSUB
|
WHERE FENTRYID IN({0})
|
AND FHMATERID NOT IN
|
(
|
SELECT FMATERIALID FROM T_PUR_POORDERENTRY
|
WHERE FENTRYID IN({1})
|
)", FentryId, FSelectId);
|
int ErrCount = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
|
if (ErrCount > 0)
|
{
|
this.View.ShowErrMessage("选单数据物料不一致");
|
return;
|
}
|
|
//验证所选采购订单物料数量 是否小于 提料计划物料数量 不满足给出提示 return
|
sql = string.Format(@"/*dialect*/
|
SELECT count(*) errcount FROM
|
(
|
select FHMATERID,SUM(FHQTY)FHQTY from Cg_PODemandPlanBillSub
|
where FEntryID IN({0})
|
GROUP BY FHMATERID
|
)A
|
JOIN
|
(select FMaterialId,FQty from t_PUR_POOrderEntry
|
where FEntryID IN({1})
|
)
|
B
|
ON A.FHMATERID=B.FMaterialId
|
WHERE B.FQTY < A.FHQTY", FentryId, FSelectId);
|
ErrCount = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
|
if (ErrCount > 0)
|
{
|
this.View.ShowErrMessage("选单数据占用的采购订单物料不一致 或者 数量不满足需要变更数量");
|
return;
|
}
|
//验证通过
|
//关闭A单据选择行 取消采购订单的占用提料数量
|
//生成一张新的提料计划单 提料日期,提料数量,生产工单信息 取A单据 ,采购信息 取B单据
|
string tlSql = string.Format(@"/*dialect*/
|
SELECT A.FID,C.FHDate,D.FSupplierID,E.FNUMBER AS FSupplierName,C.FSettleCurrId,A.FHMATERID,F.FNUMBER AS FMATERIALNAME,A.FHQty,A.FHSourceInterID,A.FHSourceEntryID,A.FHSourceBillNo,A.FDayPlanDate,A.FDayPlanDate,A.FHRelationQty,B.FID AS FHPOOrderInterID,B.FENTRYID AS FHPOOrderEntryID,C.FBILLNO AS FHPOOrderBillNo,B.FSEQ AS FHPOOrderFseq,A.FErpClsID FROM
|
(
|
select * from Cg_PODemandPlanBillSub
|
where FEntryID IN(109437)
|
)
|
A
|
JOIN
|
(select * from t_PUR_POOrderEntry
|
where FEntryID IN(100229)
|
)
|
B
|
ON A.FHMATERID = B.FMaterialId
|
JOIN t_PUR_POOrder PO ON B.FID = PO.FID
|
JOIN Cg_PODemandPlanBillMain C ON A.FID = C.FID
|
JOIN t_PUR_POOrder D ON B.FID = D.FID
|
JOIN T_BD_SUPPLIER E ON D.FSupplierID = E.FSUPPLIERID
|
JOIN T_BD_MATERIAL F ON A.FHMATERID = F.FMATERIALID
|
", FentryId, FSelectId);
|
DynamicObjectCollection tlCollection = DBServiceHelper.ExecuteDynamicObject(Context, tlSql);
|
JObject model = new JObject();
|
JArray Fentity = new JArray();
|
foreach (var item in tlCollection)
|
{
|
if (!model.ToString().Contains("FHDate"))
|
{
|
model.Add("FHDate", item["FHDate"].ToString());
|
model.Add("FSettleCurrId", new JObject() { ["Fnumber"] = "PRE001" });
|
model.Add("FSupplierID", new JObject() { ["Fnumber"] = item["FSupplierName"].ToString() });
|
}
|
JObject FentityModel = new JObject();
|
FentityModel.Add("FHPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//采购组织
|
FentityModel.Add("FHMaterID", new JObject() { ["Fnumber"] = item["FMATERIALNAME"].ToString() });//物料
|
FentityModel.Add("FHQty", item["FHQty"].ToString());//数量
|
FentityModel.Add("FHSourceInterID", item["FHSourceInterID"].ToString());//日计划工单FID
|
FentityModel.Add("FHSourceEntryID", item["FHSourceEntryID"].ToString());//日计划工单FENTRYID
|
FentityModel.Add("FHSourceBillNo", item["FHSourceBillNo"].ToString());//日计划工单单号
|
FentityModel.Add("FDayPlanDate", item["FDayPlanDate"].ToString());//日计划日期
|
FentityModel.Add("FHRelationQty", item["FHRelationQty"].ToString());//关联数量
|
FentityModel.Add("FPURCHASEORGID", new JObject() { ["Fnumber"] = "100" });//采购组织
|
FentityModel.Add("FHPOOrderInterID", item["FHPOOrderInterID"].ToString());// 采购订单内码:FHPOOrderInterID
|
FentityModel.Add("FHPOOrderEntryID", item["FHPOOrderEntryID"].ToString()); //采购订单子内码:FHPOOrderEntryID
|
FentityModel.Add("FHPOOrderBillNo", item["FHPOOrderBillNo"].ToString()); //采购订单号:FHPOOrderBillNo
|
FentityModel.Add("FERPCLSID", item["FErpClsID"].ToString()); //
|
FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = "Pcs" }); //单位
|
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());
|
JObject saveObj = JObject.Parse(_result);
|
string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper();
|
//LogService.Write("saveIsSuc:" + saveIsSuc);
|
if (saveIsSuc != "TRUE")
|
{
|
//LogHelper.Error("提料计划单选单新增异常:" + saveObj.ToString());
|
this.View.ShowMessage(saveObj["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString());
|
}
|
else
|
{
|
//关闭A单据体行 更新对应采购订单 提料计划数量
|
List<string> sqlList = new List<string>();
|
string updateSql = string.Format(@"/*dialect*/
|
update Cg_PODemandPlanBillSub set
|
FCLOSESTATUS = 1
|
where FEntryID in ({0})", FentryId);
|
sqlList.Add(updateSql);
|
updateSql = string.Format(@"/*dialect*/
|
UPDATE A SET
|
A.FPODemandPlanCount -= B.FHQTY
|
FROM t_PUR_POOrderEntry A
|
JOIN Cg_PODemandPlanBillSub B ON A.FENTRYID = B.FHPOOrderEntryID
|
where B.FEntryID in ({0})", FentryId);
|
sqlList.Add(updateSql);
|
//更新采购订单 提料计划数量
|
updateSql = string.Format(@"/*dialect*/
|
update t_PUR_POOrderEntry set
|
FPODEMANDPLANCOUNT += T2.FHQTY
|
from Cg_PODemandPlanBillSub T1
|
join
|
(
|
SELECT A.FHQTY,FEntryID FROM
|
(
|
select FHMATERID,SUM(FHQTY)FHQTY from Cg_PODemandPlanBillSub
|
where FEntryID IN({0})
|
GROUP BY FHMATERID
|
)A
|
JOIN
|
(select FMaterialId,FQTY,FEntryID from t_PUR_POOrderEntry
|
where FEntryID IN({1})
|
)
|
B
|
ON A.FHMATERID=B.FMaterialId
|
)T2 ON T1.FEntryID =T2.FEntryID", FentryId, FSelectId);
|
sqlList.Add(updateSql);
|
//执行sql
|
int resCount = DBServiceHelper.ExecuteBatch(Context, sqlList);
|
|
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);
|
}
|
});
|
}
|
catch (Exception ex)
|
{
|
throw ex;
|
}
|
}
|
|
public bool IsHaveQX(string btnType)
|
{
|
string sql = string.Format(@"/*dialect*/
|
SELECT count(*) mmm FROM (
|
SELECT A.FROLEID,B.FPERMISSIONSTATUS,C.FNUMBER,D.FNAME FROM
|
T_SEC_USERORG Z
|
JOIN T_SEC_USERROLEMAP X ON Z.FENTITYID = X.FENTITYID
|
JOIN T_SEC_FUNCPERMISSION A ON X.FROLEID =A.FROLEID
|
JOIN T_SEC_FUNCPERMISSIONENTRY B ON A.FITEMID =B.FITEMID
|
JOIN T_SEC_PERMISSIONITEM C ON B.FPERMISSIONITEMID = C.FITEMID
|
JOIN T_SEC_PERMISSIONITEM_L D ON C.FITEMID = D.FITEMID AND FLOCALEID = 2052
|
WHERE A.FOBJECTTYPEID = 'PAEZ_PODEMANDPLAN'
|
AND Z.FUSERID={0} AND FNAME = '{1}'
|
) T where FPERMISSIONSTATUS = 0
|
", Context.UserId, btnType);
|
int result = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0);
|
if (result > 0)
|
return true;
|
else
|
return false;
|
}
|
|
public void OpenPurOrder()
|
{
|
string sql = string.Format("/*dialect*/ select distinct FHPOORDERENTRYID from Cg_PODemandPlanBillSub where FId in ({0})", this.View.Model.GetPKValue().ToString());
|
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);
|
}
|
}
|
}
|