| | |
| | | <Compile Include="PRD\ProTardinessDetails.cs" /> |
| | | <Compile Include="PRD\ProCompleteAnalysisMateriel.cs" /> |
| | | <Compile Include="PRD\ProCompleteAnalysisDetails.cs" /> |
| | | <Compile Include="PRD\Pro_MaterialRequisitionAuditDayPlan.cs" /> |
| | | <Compile Include="PRD\Pro_MaterialRequisitionAudit.cs" /> |
| | | <Compile Include="PRD\Pro_ScDayImport.cs" /> |
| | | <Compile Include="PRD\Pro_TlPlanConfigure.cs" /> |
| | | <Compile Include="PRD\Pro_WorkBillPlatform.cs" /> |
New file |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using Kingdee.BOS.Util; |
| | | using Kingdee.BOS.Core.Metadata; |
| | | using Kingdee.BOS.Core.Metadata.EntityElement; |
| | | using Kingdee.BOS.Core.DynamicForm.PlugIn; |
| | | using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; |
| | | using Kingdee.BOS.Orm.DataEntity; |
| | | using Kingdee.BOS.Contracts; |
| | | using Kingdee.BOS.App; |
| | | using Kingdee.BOS.Core.Metadata.FieldElement; |
| | | using System.ComponentModel; |
| | | using Kingdee.BOS.ServiceHelper; |
| | | |
| | | namespace Demo.DynamicForm.PRD |
| | | { |
| | | /// <summary> |
| | | /// 插件示例:引入销售出库单,建立与销售订单的关联 |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// 要求: |
| | | /// 1. 需要引入单据体的源单类型、源单编号字段 |
| | | /// 2. 本插件挂在销售出库单的保存操作上 |
| | | /// 出库关联销售订单 |
| | | /// </remarks> |
| | | [Description("引入生产领料单,建立与生产订单的关联")] |
| | | [HotUpdate] |
| | | public class Pro_MaterialRequisitionAudit : AbstractOperationServicePlugIn |
| | | { |
| | | public override void OnPreparePropertys(PreparePropertysEventArgs e) |
| | | { |
| | | base.OnPreparePropertys(e); |
| | | e.FieldKeys.Add("FSrcBillType"); |
| | | e.FieldKeys.Add("FSrcBillNo"); |
| | | e.FieldKeys.Add("FID"); |
| | | e.FieldKeys.Add("FTreeEntity_FEntryID"); |
| | | e.FieldKeys.Add("FBillNo"); |
| | | e.FieldKeys.Add("FBFLowId"); |
| | | e.FieldKeys.Add("FMaterialId"); |
| | | e.FieldKeys.Add("FBaseUnitQty"); |
| | | e.FieldKeys.Add("FBaseJoinQty"); |
| | | } |
| | | private const string POFormId = "PRD_PPBOM"; |
| | | public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) |
| | | { |
| | | base.BeforeExecuteOperationTransaction(e); |
| | | HashSet<string> poBillNos = new HashSet<string>(); |
| | | Entity entity = this.BusinessInfo.GetEntity("FEntity");//获取明细信息 |
| | | Entity linkEntry = this.BusinessInfo.GetEntity("FEntity_Link"); |
| | | Field fldSrcFormId = this.BusinessInfo.GetField("FSrcBillType"); |
| | | Field fldSrcBillNo = this.BusinessInfo.GetField("FSrcBillNo"); |
| | | // 对单据体进行循环,取关联的源单编号 |
| | | foreach (var billObj in e.SelectedRows) |
| | | { |
| | | DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(billObj.DataEntity) |
| | | as DynamicObjectCollection; |
| | | foreach (var entryRow in entryRows) |
| | | { |
| | | string srcFormId = ""; |
| | | string srcSrcBillNo = ""; |
| | | try |
| | | { |
| | | srcFormId = "PRD_PPBOM"; |
| | | srcSrcBillNo = fldSrcBillNo.DynamicProperty.GetValue<string>(entryRow); |
| | | srcSrcBillNo = DBServiceHelper.ExecuteScalar<string>(Context, $" select distinct FPPBOMBILLNO from T_PRD_PICKMTRLDATA where FSRCBILLNO = '{srcSrcBillNo}' ", srcSrcBillNo); |
| | | |
| | | } |
| | | catch (Exception) |
| | | { |
| | | } |
| | | if (string.IsNullOrWhiteSpace(srcFormId) |
| | | || string.IsNullOrWhiteSpace(srcSrcBillNo) |
| | | ) |
| | | {// 源单不是采购订单,略过 |
| | | continue; |
| | | } |
| | | // 源单编号已经登记,不再重复记录,略过 |
| | | if (poBillNos.Contains(srcSrcBillNo)) continue; |
| | | // Link已经记录了源单信息,略过 |
| | | //DynamicObjectCollection linkRows = linkEntry.DynamicProperty.GetValue(entryRow) |
| | | // as DynamicObjectCollection; |
| | | //if (linkRows.Count > 0) continue; |
| | | bool Ret = SourceVerification(Convert.ToString(entryRow["Id"])); |
| | | if (!Ret) continue; |
| | | |
| | | poBillNos.Add(srcSrcBillNo); |
| | | } |
| | | } |
| | | if (poBillNos.Count == 0) return; |
| | | DynamicObject[] poObjs = this.LoadPurchaseOrder(poBillNos); |
| | | if (poObjs == null || poObjs.Length == 0) return; |
| | | Dictionary<string, Dictionary<string, DynamicObject>> dctAllBills = this.BuildDictionary(poObjs); |
| | | string srcTableNumber = this.GetPOEntryTableNumber(); |
| | | List<DynamicObject> allNewLinkRows = new List<DynamicObject>(); |
| | | // 循环单据体,为单据体,建立起源单关联信息: |
| | | foreach (var billObj in e.SelectedRows) |
| | | { |
| | | DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(billObj.DataEntity) |
| | | as DynamicObjectCollection; |
| | | foreach (var entryRow in entryRows) |
| | | { |
| | | string srcSrcBillNo = fldSrcBillNo.DynamicProperty.GetValue<string>(entryRow); |
| | | string srcFormId = "PRD_PPBOM"; |
| | | srcSrcBillNo = DBServiceHelper.ExecuteScalar<string>(Context, $" select distinct FPPBOMBILLNO from T_PRD_PICKMTRLDATA where FSRCBILLNO = '{srcSrcBillNo}' ", srcSrcBillNo); |
| | | |
| | | |
| | | if (string.IsNullOrWhiteSpace(srcFormId) |
| | | || string.IsNullOrWhiteSpace(srcSrcBillNo) |
| | | ) |
| | | {// 源单不是销售订单,略过 |
| | | continue; |
| | | } |
| | | Dictionary<string, DynamicObject> dctOneBill = null; |
| | | if (dctAllBills.TryGetValue(srcSrcBillNo, out dctOneBill) == false) continue; |
| | | DynamicObject materialObj = entryRow["MaterialId"] as DynamicObject; |
| | | if (materialObj == null) continue; |
| | | string materialNumber = Convert.ToString(materialObj["number"]); |
| | | DynamicObject srcRow = null; |
| | | if (dctOneBill.TryGetValue(materialNumber, out srcRow) == false) continue; |
| | | // Link已经记录了源单信息,略过 |
| | | bool Ret = SourceVerification(Convert.ToString(entryRow["Id"])); |
| | | if (!Ret) continue; |
| | | |
| | | DynamicObjectCollection linkRows = linkEntry.DynamicProperty.GetValue(entryRow) |
| | | as DynamicObjectCollection; |
| | | linkRows.Clear(); |
| | | DynamicObject linkRow = new DynamicObject(linkEntry.DynamicObjectType); |
| | | linkRow["STableName"] = srcTableNumber; |
| | | this.FillLinkRow(srcRow, entryRow, linkRow); |
| | | linkRows.Add(linkRow); |
| | | allNewLinkRows.Add(linkRow); |
| | | } |
| | | } |
| | | // 为新建的源单关联信息,设置内码 |
| | | IDBService dbService = ServiceHelper.GetService<IDBService>(); |
| | | dbService.AutoSetPrimaryKey(this.Context, allNewLinkRows.ToArray(), linkEntry.DynamicObjectType); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 加载相关的销售订单数据 |
| | | /// </summary> |
| | | /// <param name="poBillNos"></param> |
| | | /// <returns></returns> |
| | | private DynamicObject[] LoadPurchaseOrder(HashSet<string> poBillNos) |
| | | { |
| | | IViewService viewService = ServiceHelper.GetService<IViewService>(); |
| | | string formId = "PRD_PPBOM"; |
| | | |
| | | // 指定需要加载的销售订单字段 |
| | | List<SelectorItemInfo> fields = new List<SelectorItemInfo>(); |
| | | fields.Add(new SelectorItemInfo("FID")); // 单据主键 |
| | | fields.Add(new SelectorItemInfo("FTreeEntity_FEntryID")); // 单据体主键 |
| | | fields.Add(new SelectorItemInfo("FBillNo")); // 单据编号 |
| | | fields.Add(new SelectorItemInfo("FBFLowId")); // 业务流程 |
| | | fields.Add(new SelectorItemInfo("FMaterialId")); // 物料 |
| | | fields.Add(new SelectorItemInfo("FMaterialID2")); // 物料 |
| | | fields.Add(new SelectorItemInfo("FBASENEEDQTY")); // 基本单位数量 |
| | | fields.Add(new SelectorItemInfo("FBASEPICKEDQTY")); // 基本单位关联数量 |
| | | fields.Add(new SelectorItemInfo("FBFLOWID")); // |
| | | |
| | | // 指定过滤条件 |
| | | string filter = string.Format(" FBillNo IN ('{0}') ", string.Join("','", poBillNos)); |
| | | OQLFilter ofilter = OQLFilter.CreateHeadEntityFilter(filter); |
| | | var objs = viewService.Load(this.Context, formId, fields, ofilter); |
| | | return objs; |
| | | } |
| | | /// <summary> |
| | | /// 把销售订单单据体行构建为字典:Dictionary(单据编号, Dictionary(物料编码, 源单行)); |
| | | /// </summary> |
| | | /// <param name="poObjs"></param> |
| | | /// <returns></returns> |
| | | private Dictionary<string, Dictionary<string, DynamicObject>> BuildDictionary(DynamicObject[] poObjs) |
| | | { |
| | | Dictionary<string, Dictionary<string, DynamicObject>> dctAllBills = |
| | | new Dictionary<string, Dictionary<string, DynamicObject>>(); |
| | | foreach (var poObj in poObjs) |
| | | { |
| | | string billNo = Convert.ToString(poObj["BillNo"]); |
| | | Dictionary<string, DynamicObject> dctOneBill = new Dictionary<string, DynamicObject>(); |
| | | DynamicObjectCollection entryRows = poObj["PPBomEntry"] as DynamicObjectCollection; |
| | | foreach (var entryRow in entryRows) |
| | | { |
| | | DynamicObject materialObj = entryRow["MaterialId"] as DynamicObject; |
| | | if (materialObj == null) continue; |
| | | string materialNumber = Convert.ToString(materialObj["number"]); |
| | | dctOneBill[materialNumber] = entryRow; |
| | | } |
| | | dctAllBills.Add(billNo, dctOneBill); |
| | | } |
| | | return dctAllBills; |
| | | } |
| | | /// <summary> |
| | | /// 获取销售订单关联主实体表格编码 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | private string GetPOEntryTableNumber() |
| | | { |
| | | IBusinessFlowService bfMetaService = ServiceHelper.GetService<IBusinessFlowService>(); |
| | | var tableDefine = bfMetaService.LoadTableDefine(this.Context, POFormId, "FEntity"); |
| | | return tableDefine.TableNumber; |
| | | } |
| | | /// <summary> |
| | | /// 填写源单信息 |
| | | /// </summary> |
| | | /// <param name="srcRow">源单行</param> |
| | | /// <param name="toRow">目标单行</param> |
| | | /// <param name="linkRow">关联行</param> |
| | | private void FillLinkRow(DynamicObject srcRow, DynamicObject toRow, DynamicObject linkRow) |
| | | { |
| | | linkRow["FlowId"] = srcRow["BFLowId_Id"]; |
| | | linkRow["FlowLineId"] = 0; |
| | | linkRow["RuleId"] = "PRD_PPBOM2PICKMTRL_NORMAL"; |
| | | linkRow["SBillId"] = ((DynamicObject)srcRow.Parent)[0]; |
| | | linkRow["SId"] = srcRow[0]; |
| | | // 原始携带量 |
| | | decimal baseUnitQty = Convert.ToDecimal(srcRow["BaseNeedQty"]);//用料清单单位数量 |
| | | decimal joinUnitQty = Convert.ToDecimal(srcRow["BasePickedQty"]);//用料清单单位领料数量 |
| | | linkRow["BaseActualQtyOld"] = baseUnitQty - joinUnitQty; |
| | | linkRow["BaseActualQty"] = toRow["BASEACTUALQTY"]; //基本单位实发数量 |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 验证是否生成过生产用料清单对应的源单 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public bool SourceVerification(string FTID) |
| | | { |
| | | string sql = $" select count(*) from T_BF_INSTANCEENTRY where FSTABLENAME= 'T_PRD_PPBOMENTRY' and FTID = '{FTID}'"; |
| | | int count = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0); |
| | | if (count == 0) |
| | | return true; |
| | | else |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | } |
New file |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using Kingdee.BOS.Util; |
| | | using Kingdee.BOS.Core.Metadata; |
| | | using Kingdee.BOS.Core.Metadata.EntityElement; |
| | | using Kingdee.BOS.Core.DynamicForm.PlugIn; |
| | | using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; |
| | | using Kingdee.BOS.Orm.DataEntity; |
| | | using Kingdee.BOS.Contracts; |
| | | using Kingdee.BOS.App; |
| | | using Kingdee.BOS.Core.Metadata.FieldElement; |
| | | using System.ComponentModel; |
| | | using Kingdee.BOS.ServiceHelper; |
| | | |
| | | namespace Demo.DynamicForm.PRD |
| | | { |
| | | /// <summary> |
| | | /// 插件示例:引入销售出库单,建立与销售订单的关联 |
| | | /// </summary> |
| | | /// <remarks> |
| | | /// 要求: |
| | | /// 1. 需要引入单据体的源单类型、源单编号字段 |
| | | /// 2. 本插件挂在销售出库单的保存操作上 |
| | | /// 出库关联销售订单 |
| | | /// </remarks> |
| | | [Description("引入生产领料单,建立与生产订单的关联,日计划用料清单")] |
| | | [HotUpdate] |
| | | public class Pro_MaterialRequisitionAuditDayPlan : AbstractOperationServicePlugIn |
| | | { |
| | | public override void OnPreparePropertys(PreparePropertysEventArgs e) |
| | | { |
| | | base.OnPreparePropertys(e); |
| | | e.FieldKeys.Add("FSrcBillType"); |
| | | e.FieldKeys.Add("FSrcBillNo"); |
| | | e.FieldKeys.Add("FID"); |
| | | e.FieldKeys.Add("FTreeEntity_FEntryID"); |
| | | e.FieldKeys.Add("FBillNo"); |
| | | e.FieldKeys.Add("FBFLowId"); |
| | | e.FieldKeys.Add("FMaterialId"); |
| | | e.FieldKeys.Add("FBaseUnitQty"); |
| | | e.FieldKeys.Add("FBaseJoinQty"); |
| | | } |
| | | private const string POFormId = "PRD_PPBOM"; |
| | | public override void BeforeExecuteOperationTransaction(BeforeExecuteOperationTransaction e) |
| | | { |
| | | base.BeforeExecuteOperationTransaction(e); |
| | | HashSet<string> poBillNos = new HashSet<string>(); |
| | | Entity entity = this.BusinessInfo.GetEntity("FEntity");//获取明细信息 |
| | | Entity linkEntry = this.BusinessInfo.GetEntity("FEntity_Link"); |
| | | Field fldSrcFormId = this.BusinessInfo.GetField("FSrcBillType"); |
| | | Field fldSrcBillNo = this.BusinessInfo.GetField("FSrcBillNo"); |
| | | // 对单据体进行循环,取关联的源单编号 |
| | | foreach (var billObj in e.SelectedRows) |
| | | { |
| | | DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(billObj.DataEntity) |
| | | as DynamicObjectCollection; |
| | | foreach (var entryRow in entryRows) |
| | | { |
| | | string srcFormId = ""; |
| | | string srcSrcBillNo = ""; |
| | | try |
| | | { |
| | | srcFormId = "PRD_PPBOM"; |
| | | srcSrcBillNo = fldSrcBillNo.DynamicProperty.GetValue<string>(entryRow); |
| | | srcSrcBillNo = DBServiceHelper.ExecuteScalar<string>(Context, $" select distinct FPPBOMBILLNO from T_PRD_PICKMTRLDATA where FSRCBILLNO = '{srcSrcBillNo}' ", srcSrcBillNo); |
| | | |
| | | } |
| | | catch (Exception) |
| | | { |
| | | } |
| | | if (string.IsNullOrWhiteSpace(srcFormId) |
| | | || string.IsNullOrWhiteSpace(srcSrcBillNo) |
| | | ) |
| | | {// 源单不是采购订单,略过 |
| | | continue; |
| | | } |
| | | // 源单编号已经登记,不再重复记录,略过 |
| | | if (poBillNos.Contains(srcSrcBillNo)) continue; |
| | | // Link已经记录了源单信息,略过 |
| | | //DynamicObjectCollection linkRows = linkEntry.DynamicProperty.GetValue(entryRow) |
| | | // as DynamicObjectCollection; |
| | | //if (linkRows.Count > 0) continue; |
| | | bool Ret = SourceVerification(Convert.ToString(entryRow["Id"])); |
| | | if (!Ret) continue; |
| | | |
| | | poBillNos.Add(srcSrcBillNo); |
| | | } |
| | | } |
| | | if (poBillNos.Count == 0) return; |
| | | DynamicObject[] poObjs = this.LoadPurchaseOrder(poBillNos); |
| | | if (poObjs == null || poObjs.Length == 0) return; |
| | | Dictionary<string, Dictionary<string, DynamicObject>> dctAllBills = this.BuildDictionary(poObjs); |
| | | string srcTableNumber = this.GetPOEntryTableNumber(); |
| | | List<DynamicObject> allNewLinkRows = new List<DynamicObject>(); |
| | | // 循环单据体,为单据体,建立起源单关联信息: |
| | | foreach (var billObj in e.SelectedRows) |
| | | { |
| | | DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(billObj.DataEntity) |
| | | as DynamicObjectCollection; |
| | | foreach (var entryRow in entryRows) |
| | | { |
| | | string srcSrcBillNo = fldSrcBillNo.DynamicProperty.GetValue<string>(entryRow); |
| | | string srcFormId = "PRD_PPBOM"; |
| | | srcSrcBillNo = DBServiceHelper.ExecuteScalar<string>(Context, $" select distinct FPPBOMBILLNO from T_PRD_PICKMTRLDATA where FSRCBILLNO = '{srcSrcBillNo}' ", srcSrcBillNo); |
| | | |
| | | |
| | | if (string.IsNullOrWhiteSpace(srcFormId) |
| | | || string.IsNullOrWhiteSpace(srcSrcBillNo) |
| | | ) |
| | | {// 源单不是销售订单,略过 |
| | | continue; |
| | | } |
| | | Dictionary<string, DynamicObject> dctOneBill = null; |
| | | if (dctAllBills.TryGetValue(srcSrcBillNo, out dctOneBill) == false) continue; |
| | | DynamicObject materialObj = entryRow["MaterialId"] as DynamicObject; |
| | | if (materialObj == null) continue; |
| | | string materialNumber = Convert.ToString(materialObj["number"]); |
| | | DynamicObject srcRow = null; |
| | | if (dctOneBill.TryGetValue(materialNumber, out srcRow) == false) continue; |
| | | // Link已经记录了源单信息,略过 |
| | | bool Ret = SourceVerification(Convert.ToString(entryRow["Id"])); |
| | | if (!Ret) continue; |
| | | |
| | | DynamicObjectCollection linkRows = linkEntry.DynamicProperty.GetValue(entryRow) |
| | | as DynamicObjectCollection; |
| | | linkRows.Clear(); |
| | | DynamicObject linkRow = new DynamicObject(linkEntry.DynamicObjectType); |
| | | linkRow["STableName"] = srcTableNumber; |
| | | this.FillLinkRow(srcRow, entryRow, linkRow); |
| | | linkRows.Add(linkRow); |
| | | allNewLinkRows.Add(linkRow); |
| | | } |
| | | } |
| | | // 为新建的源单关联信息,设置内码 |
| | | IDBService dbService = ServiceHelper.GetService<IDBService>(); |
| | | dbService.AutoSetPrimaryKey(this.Context, allNewLinkRows.ToArray(), linkEntry.DynamicObjectType); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 加载相关的销售订单数据 |
| | | /// </summary> |
| | | /// <param name="poBillNos"></param> |
| | | /// <returns></returns> |
| | | private DynamicObject[] LoadPurchaseOrder(HashSet<string> poBillNos) |
| | | { |
| | | IViewService viewService = ServiceHelper.GetService<IViewService>(); |
| | | string formId = "PRD_PPBOM"; |
| | | |
| | | // 指定需要加载的销售订单字段 |
| | | List<SelectorItemInfo> fields = new List<SelectorItemInfo>(); |
| | | fields.Add(new SelectorItemInfo("FID")); // 单据主键 |
| | | fields.Add(new SelectorItemInfo("FTreeEntity_FEntryID")); // 单据体主键 |
| | | fields.Add(new SelectorItemInfo("FBillNo")); // 单据编号 |
| | | fields.Add(new SelectorItemInfo("FBFLowId")); // 业务流程 |
| | | fields.Add(new SelectorItemInfo("FMaterialId")); // 物料 |
| | | fields.Add(new SelectorItemInfo("FMaterialID2")); // 物料 |
| | | fields.Add(new SelectorItemInfo("FBASENEEDQTY")); // 基本单位数量 |
| | | fields.Add(new SelectorItemInfo("FBASEPICKEDQTY")); // 基本单位关联数量 |
| | | fields.Add(new SelectorItemInfo("FBFLOWID")); // |
| | | |
| | | // 指定过滤条件 |
| | | string filter = string.Format(" FBillNo IN ('{0}') ", string.Join("','", poBillNos)); |
| | | OQLFilter ofilter = OQLFilter.CreateHeadEntityFilter(filter); |
| | | var objs = viewService.Load(this.Context, formId, fields, ofilter); |
| | | return objs; |
| | | } |
| | | /// <summary> |
| | | /// 把销售订单单据体行构建为字典:Dictionary(单据编号, Dictionary(物料编码, 源单行)); |
| | | /// </summary> |
| | | /// <param name="poObjs"></param> |
| | | /// <returns></returns> |
| | | private Dictionary<string, Dictionary<string, DynamicObject>> BuildDictionary(DynamicObject[] poObjs) |
| | | { |
| | | Dictionary<string, Dictionary<string, DynamicObject>> dctAllBills = |
| | | new Dictionary<string, Dictionary<string, DynamicObject>>(); |
| | | foreach (var poObj in poObjs) |
| | | { |
| | | string billNo = Convert.ToString(poObj["BillNo"]); |
| | | Dictionary<string, DynamicObject> dctOneBill = new Dictionary<string, DynamicObject>(); |
| | | DynamicObjectCollection entryRows = poObj["PPBomEntry"] as DynamicObjectCollection; |
| | | foreach (var entryRow in entryRows) |
| | | { |
| | | DynamicObject materialObj = entryRow["MaterialId"] as DynamicObject; |
| | | if (materialObj == null) continue; |
| | | string materialNumber = Convert.ToString(materialObj["number"]); |
| | | dctOneBill[materialNumber] = entryRow; |
| | | } |
| | | dctAllBills.Add(billNo, dctOneBill); |
| | | } |
| | | return dctAllBills; |
| | | } |
| | | /// <summary> |
| | | /// 获取销售订单关联主实体表格编码 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | private string GetPOEntryTableNumber() |
| | | { |
| | | IBusinessFlowService bfMetaService = ServiceHelper.GetService<IBusinessFlowService>(); |
| | | var tableDefine = bfMetaService.LoadTableDefine(this.Context, POFormId, "FEntity"); |
| | | return tableDefine.TableNumber; |
| | | } |
| | | /// <summary> |
| | | /// 填写源单信息 |
| | | /// </summary> |
| | | /// <param name="srcRow">源单行</param> |
| | | /// <param name="toRow">目标单行</param> |
| | | /// <param name="linkRow">关联行</param> |
| | | private void FillLinkRow(DynamicObject srcRow, DynamicObject toRow, DynamicObject linkRow) |
| | | { |
| | | linkRow["FlowId"] = srcRow["BFLowId_Id"]; |
| | | linkRow["FlowLineId"] = 0; |
| | | linkRow["RuleId"] = "PRD_PPBOM2PICKMTRL_NORMAL"; |
| | | linkRow["SBillId"] = ((DynamicObject)srcRow.Parent)[0]; |
| | | linkRow["SId"] = srcRow[0]; |
| | | // 原始携带量 |
| | | decimal baseUnitQty = Convert.ToDecimal(srcRow["BaseNeedQty"]);//用料清单单位数量 |
| | | decimal joinUnitQty = Convert.ToDecimal(srcRow["BasePickedQty"]);//用料清单单位领料数量 |
| | | linkRow["BaseActualQtyOld"] = baseUnitQty - joinUnitQty; |
| | | linkRow["BaseActualQty"] = toRow["BASEACTUALQTY"]; //基本单位实发数量 |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 验证是否生成过生产用料清单对应的源单 |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public bool SourceVerification(string FTID) |
| | | { |
| | | string sql = $" select count(*) from T_BF_INSTANCEENTRY where FSTABLENAME= 'T_PRD_PPBOMENTRY' and FTID = '{FTID}'"; |
| | | int count = DBServiceHelper.ExecuteScalar<int>(Context, sql, 0); |
| | | if (count == 0) |
| | | return true; |
| | | else |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | } |
| | |
| | | //// 下载地址 |
| | | //string downloadUrl = "FileUpLoadServices/download.aspx"; |
| | | //updateControl.SetCustomPropertyValue("ExDownLoadUrl", downloadUrl); |
| | | LogHelper.Info("222222"); |
| | | LogService.WriteAsync("上传功能:"); |
| | | ImportDataSC(fileFullPath); |
| | | } |
| | |
| | | if (dt.Rows[i][1].ToString() == "") |
| | | error += "生产订单号不能为空;"; |
| | | if (dt.Rows[i][2].ToString() == "") |
| | | error += "生产组织不能为空;"; |
| | | error += "组织不能为空;"; |
| | | if (dt.Rows[i][3].ToString() == "") |
| | | error += "生产车间不能为空;"; |
| | | if (dt.Rows[i][5].ToString() == "") |
| | |
| | | string sql = string.Format(@"/*dialect*/ SELECT T1.FBILLNO,T2.* FROM T_PRD_MO T1 |
| | | LEFT JOIN T_PRD_MOENTRY T2 ON T1.FID = T2.FID |
| | | JOIN T_BD_MATERIAL T3 ON T2.FMATERIALID = T3.FMATERIALID |
| | | WHERE T1.FBILLNO = '{0}' AND T3.FNUMBER = '{1}'", dt.Rows[i][1].ToString(), dt.Rows[i][5].ToString()); |
| | | WHERE T1.FBILLNO = '{0}' AND T3.FNUMBER = '{1}' ", dt.Rows[i][1].ToString(), dt.Rows[i][5].ToString()); |
| | | DataTable _dt = new DataTable(); |
| | | _dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; |
| | | string FLOT = "";//FLOT 批次 |
| | |
| | | this.Model.SetValue("FSEQ", i + 1, i); |
| | | this.Model.SetValue("FSalOrderNo", dt.Rows[i][0].ToString(), i); |
| | | this.Model.SetValue("FSCOrderNo", dt.Rows[i][1].ToString(), i); |
| | | this.Model.SetItemValueByNumber("FORGID", dt.Rows[i][2].ToString(), i); |
| | | this.Model.SetItemValueByNumber("FORGID", "100", i); |
| | | this.Model.SetItemValueByNumber("FProductWorkShopId", dt.Rows[i][3].ToString(), i); |
| | | this.Model.SetItemValueByNumber("FResourcesId", dt.Rows[i][4].ToString(), i); |
| | | // this.Model.SetValue("FMatrailId", dt.Rows[i][5].ToString(), i); |
| | |
| | | jsonRoot.Add("IsVerifyBaseDataField", ""); |
| | | JObject jsonModel = new JObject(); |
| | | jsonModel.Add("FPreparatDate", date.ToString());//编制日期 |
| | | jsonModel.Add("FSCOrderNo", current["FSCOrderNo"].ToString()); //生产订单号FSCOrderNo |
| | | jsonModel.Add("FSCOrderNo", Convert.ToString(current["FSCOrderNo"])); //生产订单号FSCOrderNo |
| | | jsonModel.Add("FHSeOrderBillNo", Convert.ToString(current["FSalOrderNo"]));//销售订单号 |
| | | jsonModel.Add("FHOrderLev", current["FOrderLevel"].ToString());//订单等级 |
| | | jsonModel.Add("FHOrderQty", Convert.ToString(current["FSalOrderCount"]));//销售订单数量 |
| | | jsonModel.Add("FHOrderCommitDate", current["FDeliveryDate"].ToString());//交货期HOrderCommitDate |
| | | jsonModel.Add("FHOrderCommitDate", Convert.ToString(current["FDeliveryDate"]));//交货期HOrderCommitDate |
| | | //jsonModel.Add("FBatch", current["FBatch"].ToString());//批次 |
| | | jsonModel.Add("FBatch", FLOT);//批次 |
| | | jsonModel.Add("FHOrderNeedQty", FQTY);// 订单需求数量 |
| | | jsonModel.Add("FPrdBillNo", FBILLNO); ;//源单编号 |
| | | jsonModel.Add("FPRDMOMAINID", FID); ;//源单主内码 |
| | | jsonModel.Add("FPRDMOENTYID", FENTRYID); ;//源单子内码 |
| | | jsonModel.Add("FOrderQuantity", current["FOrderQuantity"].ToString()); ;//生产订单数量 |
| | | jsonModel.Add("FDayPlanQuantity", current["FDayPlanQuantity"].ToString()); ;//日计划数量 |
| | | jsonModel.Add("FNoScheduled", current["FNoScheduled"].ToString()); ;//未排数量 |
| | | jsonModel.Add("FOrderQuantity", Convert.ToString(current["FOrderQuantity"])); ;//生产订单数量 |
| | | jsonModel.Add("FDayPlanQuantity", Convert.ToString(current["FDayPlanQuantity"])); ;//日计划数量 |
| | | jsonModel.Add("FNoScheduled", Convert.ToString(current["FNoScheduled"])); ;//未排数量 |
| | | JObject jsonFHMaterID = new JObject(); |
| | | jsonFHMaterID.Add("FNumber", (current["FMatrailId"] as DynamicObject)["Number"].ToString()); |
| | | jsonModel.Add("FHMaterID", jsonFHMaterID);//FHMaterID 物料 |
| | |
| | | DateTime EndDate = DBServiceHelper.ExecuteScalar<DateTime>(Context, sql, DateTime.Now); |
| | | for (int i = 0; i <= 60; i++) |
| | | { |
| | | if (Convert.ToString(current["FT" + "" + i + ""]) == "" || Convert.ToString(current["FT" + "" + i + ""]) == "0") |
| | | continue; |
| | | if (EndDate >= date.AddDays(i)) |
| | | continue; |
| | | JObject jsonFPOOrderEntry = new JObject(); |
| | |
| | | } |
| | | else |
| | | { |
| | | LogService.WriteAsync(jsonRoot); |
| | | LogHelper.Error(jsonRoot.ToString()); |
| | | this.View.ShowErrMessage(jsonRoot.ToString()); |
| | | } |
| | |
| | | { |
| | | for (int i = 0; i <= 60; i++) |
| | | { |
| | | LogHelper.Error("测试跳出"); |
| | | |
| | | |
| | | if (Convert.ToString(current["FT" + "" + i + ""]) == "" || Convert.ToString(current["FT" + "" + i + ""]) == "0") |
| | | continue; |
| | | |
| | | LogHelper.Error("测试跳出结束"); |
| | | |
| | | |
| | | JObject jsonFPOOrderEntry = new JObject(); |
| | | jsonFPOOrderEntry.Add("FHMasterDate", date.AddDays(i).ToShortDateString()); ;//主日期 |
| | | jsonFPOOrderEntry.Add("FHQty ", Convert.ToString(current["FT" + "" + i + ""])); ;//日计划数量 |
| | |
| | | } |
| | | else |
| | | { |
| | | LogService.WriteAsync(jsonRoot); |
| | | LogHelper.Error(jsonRoot.ToString()); |
| | | this.View.ShowErrMessage(jsonRoot.ToString()); |
| | | } |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Error(ex.ToString()); |
| | | this.View.ShowErrMessage(ex.ToString()); |
| | | } |
| | | |
| | |
| | | /// </summary> |
| | | public void ExportExcel() |
| | | { |
| | | string[] Title = new string[] {"销售订单号", "生产订单号", "生产组织", "生产车间", "生产资源", "产品代码", "产品名称", "规格型号", "计量单位", |
| | | "批次号","销售订单数量","生产订单数量","总齐套数量","交货日期","订单等级","T0","T1","T2","T3","T4","T5","T6","T7", |
| | | List<string> Title = new List<string> {"销售订单号", "生产订单号*","生产组织*", "生产车间*", "生产资源", "产品代码*", "产品名称", "规格型号", "计量单位", |
| | | "批次号","销售订单数量","生产订单数量","总齐套数量","交货日期*","订单等级*"}; |
| | | /* |
| | | ,"T0","T1","T2","T3","T4","T5","T6","T7", |
| | | "T8","T9","T10","T11","T12","T13","T14","T15","T16","T17", |
| | | "T18","T19","T20","T21","T22","T23","T24","T25","T26","T27","T28","T29", |
| | | "T30","T31","T32","T33","T34","T35","T36","T37","T38","T39","T40","T41","T42", |
| | | "T43","T44","T45","T46","T47","T48","T49","T50","T51","T52","T53","T54","T55","T56","T57","T58","T59","T60"}; |
| | | |
| | | "T43","T44","T45","T46","T47","T48","T49","T50","T51","T52","T53","T54","T55","T56","T57","T58","T59","T60" |
| | | */ |
| | | DateTime date = DateTime.Now; |
| | | for (int i = 0; i < 61; i++) |
| | | { |
| | | Title.Add(date.AddDays(i).ToString("yyyy-MM-dd")); |
| | | } |
| | | string sheetname = "日计划导入模板.xlsx"; |
| | | string file = ""; |
| | | file = @"D:\办公\K3Cloud\WebSite\TempfilePath\" + sheetname; |
| | |
| | | |
| | | //设置列名 |
| | | HSSFRow row = (HSSFRow)sheet.CreateRow(0); |
| | | for (int i = 0; i < Title.Length; i++) |
| | | for (int i = 0; i < Title.Count; i++) |
| | | { |
| | | ICell cell = (ICell)row.CreateCell(i); |
| | | var rowName = Title[i]; |
| | |
| | | |
| | | //单元格赋值 |
| | | //列宽自适应,只对英文和数字有效 |
| | | for (int i = 0; i <= Title.Length; i++) |
| | | for (int i = 0; i <= Title.Count; i++) |
| | | { |
| | | sheet.AutoSizeColumn(i); |
| | | } |
| | |
| | | LEFT JOIN JIT_MOMaterReadysBill B ON T1.FStockOrgId = b.FHSTOCKORGID and T1.FMATERIALID =b.FHMATERID and a.FOwnerId = b.FOwnerId |
| | | LEFT join T_ORG_Organizations c on a.FOWNERID = c.FORGID |
| | | --join t_BD_Stock d on a.FSTOCKID =d.FSTOCKID |
| | | --where d.FAvailableComplete<>0 |
| | | where d.FAvailableComplete<>0 |
| | | --where T1.FMATERIALID in (105773) |
| | | "); |
| | | ListInventory = ds.ToModelList<PRD_Inventory>(); |
| | |
| | | { |
| | | string sql = string.Format(@" |
| | | /*dialect*/ |
| | | select t1.FID,t1.FEntryID,t3.FMATERIALID,T5.FNUMBER,t1.FHMASTERDATE,t1.FHQTY,t4.FMATERIALID FMATERIALID2,T6.FNUMBER FNUMBER2,T7.FNUMBER FUNITNUMBER,FNumerator,FDenominator,convert(decimal(18,2),(FNumerator/FDenominator) *t1.FHQTY) FHQtyMust,T4.FUnitID,t8.FNUMBER FUNITNUMBER2,T3.FID FPPBOM,T4.FENTRYID,isnull(T9.FBillNo,'')FBillNo,t10.FNUMBER FORGNUMBER,t11.FNUMBER FHSOURCENUMBER,FSCRAPRATE,FFIXSCRAPQTY,T9.FID AS DayPlanFID |
| | | select t1.FID,t1.FEntryID,t3.FMATERIALID,T5.FNUMBER,t1.FHMASTERDATE,t1.FHQTY,t4.FMATERIALID FMATERIALID2,T6.FNUMBER FNUMBER2,T7.FNUMBER FUNITNUMBER,FNumerator,FDenominator,convert(decimal(18,2),(FNumerator/FDenominator) *t1.FHQTY) FHQtyMust,T4.FUnitID,t8.FNUMBER FUNITNUMBER2,T3.FID FPPBOM,T4.FENTRYID FPPBOMENTRYID,isnull(T9.FBillNo,'')FBillNo,t10.FNUMBER FORGNUMBER,t11.FNUMBER FHSOURCENUMBER,FSCRAPRATE,FFIXSCRAPQTY,T9.FID AS DayPlanFID,t2.FSCORDERNO, |
| | | t3.FMOENTRYID,t3.FBILLNO FPPBOMBILLNO,T4.FSEQ,tc.FOWNERTYPEID,tc.FOWNERID,tc.FEntrustPickOrgId,torg.FNUMBER as FORGNUMBER,t3.FMOID,FIssueType |
| | | FROM Sc_WorkBillSortBillSub t1 |
| | | JOIN Sc_WorkBillSortBillMAIN t2 on t1.FID = t2.FID |
| | | JOIN T_PRD_PPBOM T3 on T2.FPRDMOMAINID=t3.FMOID AND T2.FPRDMOENTYID=T3.FMOENTRYID |
| | | JOIN T_PRD_PPBOMENTRY T4 ON T3.FID=T4.FID |
| | | JOIN T_PRD_PPBOMENTRY_C Tc ON T4.FENTRYID=Tc.FENTRYID |
| | | join T_ORG_Organizations torg ON tc.FOWNERID = torg.FORGID |
| | | JOIN T_BD_MATERIAL T5 ON T3.FMATERIALID=T5.FMATERIALID |
| | | JOIN T_BD_MATERIAL T6 ON T4.FMATERIALID=T6.FMATERIALID |
| | | LEFT JOIN T_BD_UNIT T7 ON T3.FUNITID = T7.FUNITID |
| | |
| | | FHQtyMust = dr["FHQtyMust"].ToString(), |
| | | FHQtySub = dr["FHQtyMust"].ToString(), |
| | | FHPPBomInterID = dr["FPPBOM"].ToString(), |
| | | FHPPBomEntryID = dr["FENTRYID"].ToString(), |
| | | FHPPBomEntryID = dr["FPPBOMENTRYID"].ToString(), |
| | | FHSourceID = dr["FHSOURCENUMBER"].ToString(), |
| | | FNumerator = dr["FNumerator"].ToString(), |
| | | FDenominator = dr["FDenominator"].ToString(), |
| | | FFIXSCRAPQTY = dr["FFIXSCRAPQTY"].ToString(), |
| | | FHQtyScrap = dr["FSCRAPRATE"].ToString(), |
| | | FMOBILLNO = dr["FSCORDERNO"].ToString(), |
| | | FMOENTRYID = dr["FMOENTRYID"].ToString(), |
| | | FPPBOMBILLNO = dr["FPPBOMBILLNO"].ToString(), |
| | | FPPBOMFSEQ = dr["FSEQ"].ToString(), |
| | | FOwnerTypeId = dr["FOWNERTYPEID"].ToString(), |
| | | FOwnerID = dr["FORGNUMBER"].ToString(), |
| | | FEntrustPickOrgId = dr["FORGNUMBER"].ToString(), |
| | | FMOID = dr["FMOID"].ToString(), |
| | | FIssueType = dr["FIssueType"].ToString() |
| | | }); |
| | | } |
| | | LogHelper.Info($"日计划用料清单,数据准备完成,保存到Model实体,总行数:{DayPlanMaterial.Count},耗时:" + sw.Elapsed); |
| | |
| | | { |
| | | var _DayPlanMaterial = DayPlanMaterial.Where(x => x.FEntryID == item).ToList(); |
| | | JObject model = new JObject(); |
| | | |
| | | if (!string.IsNullOrEmpty(_DayPlanMaterial[0].FID)) |
| | | model.Add("FID", _DayPlanMaterial[0].FID); |
| | | model.Add("FHDate", DateTime.Now); |
| | | model.Add("FOrgId", new JObject() { ["Fnumber"] = _DayPlanMaterial[0].FOrgId });//发料组织 |
| | | model.Add("FHMaterID", new JObject() { ["Fnumber"] = _DayPlanMaterial[0].FHMaterID });//物料 |
| | |
| | | ModelEnty.Add("FDwyl", Convert.ToDecimal(_item.FNumerator) / Convert.ToDecimal(_item.FDenominator));//单位用料 |
| | | ModelEnty.Add("FFIXSCRAPQTY", _item.FFIXSCRAPQTY);//固定损耗 |
| | | ModelEnty.Add("FHQtyScrap", _item.FHQtyScrap);//变动损耗率% |
| | | ModelEnty.Add("FMOBILLNO", _item.FMOBILLNO);// |
| | | ModelEnty.Add("FMOENTRYIDINT", _item.FMOENTRYID);// |
| | | ModelEnty.Add("FPPBOMBILLNO", _item.FPPBOMBILLNO);// |
| | | ModelEnty.Add("FPPBOMFSEQINT", _item.FPPBOMFSEQ);// |
| | | ModelEnty.Add("FOwnerTypeId", _item.FOwnerTypeId);// |
| | | ModelEnty.Add("FOwnerID", new JObject() { ["Fnumber"] = _item.FOwnerID });// |
| | | ModelEnty.Add("FEntrustPickOrgId", new JObject() { ["Fnumber"] = _item.FEntrustPickOrgId });// |
| | | ModelEnty.Add("FMOID", _item.FMOID);// |
| | | ModelEnty.Add("FISSUETYPE", _item.FIssueType);// |
| | | |
| | | Entry.Add(ModelEnty); |
| | | } |
| | | model.Add("FEntity", Entry); |
| | | //if (!string.IsNullOrEmpty(_DayPlanMaterial[0].FID)) |
| | | // model.Add("FID", _DayPlanMaterial[0].FID); |
| | | |
| | | Fentity.Add(model); |
| | | if ((i >= 20 || i == fidList.Count) && (i % 20 == 0 || i == fidList.Count)) |
| | | { |
| | |
| | | ", FDayPlanWorkID); |
| | | sql = string.Format(@" |
| | | /*dialect*/ |
| | | SELECT T1.FID,FHMASTERDATE,t1.FEntryID,T1.FBILLNO, FNeedQty,(FLeadtime+FLeadTtime2)FFIXLEADTIME,t5.FMAXPOQTY,FJITBatch FMINPOQTY,FJITMATERIALGROUP,FJITMaterielDemand,FJITSafeStock,t1.FMATERIALID,t6.FNumber,NeedQty, FStockOrgId |
| | | SELECT T1.FID,FHMASTERDATE,t1.FEntryID,T1.FBILLNO, FNeedQty,(FLeadtime+FLeadTtime2)FFIXLEADTIME,t5.FMAXPOQTY,FJITBatch FMINPOQTY,FJITMATERIALGROUP,FJITMaterielDemand,FJITSafeStock,t1.FMATERIALID,t6.FNumber,NeedQty, FStockOrgId ,FErpClsID |
| | | FROM ( |
| | | select FHICMOINTERID FID,FHICMOENTRYID FEntryID,FPlanDate FHMASTERDATE,FLackCount NeedQty,FHMATERID FMATERIALID,FHStockOrgID FStockOrgId,FPRDBILLNO FBillNo,FSumPlanCount FNeedQty from JIT_MOMaterReadysBill a |
| | | right join (select max(FID)FID from JIT_MOMaterReadysBill GROUP BY FHICMOENTRYID,FHMATERID) b on a.FID = b.FID |
| | |
| | | join t_BD_MaterialBase t4 on T1.FMATERIALID = t4.FMATERIALID |
| | | join t_BD_MaterialPlan t5 on T1.FMATERIALID = t5.FMATERIALID |
| | | WHERE DATEDIFF(D,GETDATE(),FHMASTERDATE) >=0 |
| | | AND FERPCLSID=1 |
| | | AND FERPCLSID in ('1','3') |
| | | AND T1.NeedQty>0 |
| | | AND T1.FENTRYID not in (select distinct FHSOURCEENTRYID from CG_PODEMANDPLANBILLSUB where FHSOURCEINTERID IN ({0})) |
| | | AND T1.FID in ({0}) |
| | |
| | | FNumber = DayPlanPpbomls.FNumber, |
| | | OLDDATE = DayPlanPpbomls.FHMASTERDATE, |
| | | FFIXLEADTIME = FFIXLEADTIME, |
| | | FErpClsID = DayPlanPpbomls.FErpClsID, |
| | | |
| | | PurchseFID = Purchase.FID, |
| | | PurchseFentryID = Purchase.FENTRYID, |
| | |
| | | FNumber = DayPlanPpbomls.FNumber, |
| | | OLDDATE = DayPlanPpbomls.FHMASTERDATE, |
| | | FFIXLEADTIME = FFIXLEADTIME, |
| | | FErpClsID = DayPlanPpbomls.FErpClsID, |
| | | |
| | | PurchseFID = Purchase.FID, |
| | | PurchseFentryID = Purchase.FENTRYID, |
| | |
| | | FentityModel.Add("FHPOOrderInterID", _item.PurchseFID);// 采购订单内码:FHPOOrderInterID |
| | | FentityModel.Add("FHPOOrderEntryID", _item.PurchseFentryID); //采购订单子内码:FHPOOrderEntryID |
| | | FentityModel.Add("FHPOOrderBillNo", _item.PurchseFBillNo); //采购订单号:FHPOOrderBillNo |
| | | FentityModel.Add("FERPCLSID", _item.FErpClsID); //发料方式 |
| | | Fentity.Add(FentityModel); |
| | | } |
| | | model.Add("FEntity", Fentity); |
| | |
| | | public string FDenominator { get; set; } |
| | | public string FFIXSCRAPQTY { get; set; } |
| | | public string FHQtyScrap { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 生产订单号 |
| | | /// </summary> |
| | | public string FMOBILLNO { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 生产订单分录内码 |
| | | /// </summary> |
| | | public string FMOENTRYID { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 生产订单内码 |
| | | /// </summary> |
| | | public string FMOID { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 生产用料清单编号 |
| | | /// </summary> |
| | | public string FPPBOMBILLNO { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 生产用料清单明细行号 |
| | | /// </summary> |
| | | public string FPPBOMFSEQ { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 产品货主 |
| | | /// </summary> |
| | | public string FEntrustPickOrgId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 货主类型 |
| | | /// </summary> |
| | | public string FOwnerTypeId { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 货主 |
| | | /// </summary> |
| | | public string FOwnerID { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 发料方式 |
| | | /// </summary> |
| | | public string FIssueType { get; set; } |
| | | } |
| | | } |
| | |
| | | /// </summary> |
| | | public long FID { get; set; } |
| | | /// <summary> |
| | | /// 日计划工单编号 |
| | | /// 生产订单号 |
| | | /// </summary> |
| | | public string FBILLNO { get; set; } |
| | | /// <summary> |
| | |
| | | /// JIT安全库存 |
| | | /// </summary> |
| | | public string FJITSafeStock { get; set; } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 物料属性 |
| | | /// </summary> |
| | | public string FErpClsID { get; set; } |
| | | |
| | | } |
| | | } |
| | |
| | | /// 组织编码 |
| | | /// </summary> |
| | | public string FORGNumber { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 物料属性 |
| | | /// </summary> |
| | | public string FErpClsID { get; set; } |
| | | } |
| | | } |