335 lines
14 KiB
C#
335 lines
14 KiB
C#
using Kingdee.BOS.Core.Bill;
|
|
using Kingdee.BOS.Core.Metadata;
|
|
using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn;
|
|
using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args;
|
|
using Kingdee.BOS.Core.Metadata.FieldElement;
|
|
using Kingdee.BOS.Orm.DataEntity;
|
|
using Kingdee.BOS.ServiceHelper;
|
|
using Kingdee.BOS.Util;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Linq;
|
|
using System.Security.Cryptography;
|
|
using System.Text;
|
|
|
|
namespace GZ.LJY000.Biori.UHIK_PRD_PACKAGE_INSTOCK
|
|
{
|
|
[Description("预测单下推组装入库单#"), HotUpdate]
|
|
public class BillConvertEventPlugInEx : AbstractConvertPlugIn
|
|
{
|
|
public override void AfterConvert(AfterConvertEventArgs e)
|
|
{
|
|
base.AfterConvert(e);
|
|
if (e.Result.FindByEntityKey("FBillHead").Any())
|
|
{
|
|
var billHead = e.Result.FindByEntityKey("FBillHead")[0].DataEntity;
|
|
|
|
var srcBillEntryId = billHead["FPSrcBillEntryId"].Long2Int();
|
|
var srcBillType = billHead["FSrcBillType"].ToString();
|
|
if (srcBillType.ToUpper().Equals("PLN_FORECAST"))
|
|
{
|
|
var sqlL = $@"/*dialect*/
|
|
DECLARE @EntryId int
|
|
SET @EntryId = {srcBillEntryId}
|
|
|
|
;WITH #预测单数据 AS (
|
|
--套件子项
|
|
SELECT t0.FBILLNO,t0e.FID,t0e.FENTRYID,t0e.FMATERIALID
|
|
,t0e.FROWID,t0e.FPARENTROWID,t0e.FBOMID,t0e.FBOMENTRYID,t0e.FOWNERID,t0e.FOWNERTYPEID
|
|
,t0e.FPRODUCTTYPE,t0e.FSEQ,t0e.F_UHIK_TEXT8 AS '标签货号'
|
|
,t0e.F_UHIK_QTY2 AS '父项数量',t0e.F_UHIK_TEXT2 AS '标签规格_Note'
|
|
,t0e.FSTOCKORGID AS '库存组织',t0e.F_HUOHAO AS '货号'
|
|
,t0e.F_UHIK_DATE AS '标签生产日期'
|
|
,t0e.F_UHIK_LOT AS '标签批号'
|
|
,t2e.FENTRYID AS 'PEntryId'
|
|
FROM T_PLN_FORECAST t0
|
|
INNER JOIN T_PLN_FORECASTENTRY t0e on t0.FID = t0e.FID AND t0e.FPRODUCTTYPE = 2
|
|
INNER JOIN T_PLN_FORECASTENTRY t2e on t2e.FROWID = t0e.FPARENTROWID
|
|
WHERE 1 = 1
|
|
AND t0e.FPRODUCTTYPE = 2
|
|
AND t2e.FENTRYID = @EntryId
|
|
)
|
|
SELECT t1.FNUMBER,t1_l.FNAME,t0.*
|
|
,ISNULL(t2.FQTY,0) 'FQTY'
|
|
,ISNULL(t2.F_FYL_QTY,0) 'F_FYL_QTY'
|
|
,ISNULL(t2.F_GS_QTY,0) 'F_GS_QTY'
|
|
,ISNULL(t2.F_GZQTY,0)'F_GZQTY'
|
|
,ISNULL(t2.FLOT,0) 'FLOT'
|
|
,ISNULL(t2.FLOT_TEXT,'') 'FLOT_TEXT'
|
|
,ISNULL(t2.FUNITID,0) 'FUNITID'
|
|
,ISNULL(t2.MOBIllNo,'') 'MOBIllNo'
|
|
,ISNULL(t2.MoBillType,'') 'MoBillType'
|
|
,ISNULL(t2.MoEntryId,0) 'MoEntryId'
|
|
,ISNULL(t2.MoEntrySeq,0) 'MoEntrySeq'
|
|
,ISNULL(t2.MoId,0) 'MoId'
|
|
,ISNULL(t2.生产日期,'') '生产日期'
|
|
,ISNULL(t2.有效期至,'') '有效期至'
|
|
,ROW_NUMBER() OVER(ORDER BY t0.FSEQ) RN
|
|
,ISNULL(t3.RptQty,0) 'RptQty'
|
|
FROM #预测单数据 t0
|
|
INNER JOIN T_BD_MATERIAL t1 on t1.FMATERIALID = t0.FMATERIALID
|
|
INNER JOIN T_BD_MATERIAL_L t1_l on t1_l.FMATERIALID = t0.FMATERIALID AND t1_l.FLOCALEID = 2052
|
|
OUTER APPLY (
|
|
SELECT t2.FBILLNO AS 'MOBIllNo',t2.FBILLTYPE AS 'MoBillType',t2.FID AS 'MoId',t2e.FENTRYID AS 'MoEntryId',t2e.FSEQ AS 'MoEntrySeq'
|
|
,t2e.F_GZQty,t2e.F_GS_QTY,t2e.F_FYL_QTY,t2e.FQTY
|
|
,t2e.FLOT,t2e.FLOT_TEXT,t2e.FUNITID
|
|
,ISNULL(CONVERT(varchar(100),t2e.F_UHIK_DATE,20),'') '生产日期',ISNULL(CONVERT(varchar(100),t2e.F_UHIK_DATE1,20),'') '有效期至'
|
|
FROM T_PRD_MO t2
|
|
INNER JOIN T_PRD_MOENTRY t2e on t2.FID = t2e.FID
|
|
INNER JOIN T_PRD_MOENTRY_A t2e_a on t2e.FENTRYID = t2e_a.FENTRYID AND t2e_a.FREQSRC = 2
|
|
WHERE 1 = 1 AND t2e.FSALEORDERENTRYSEQ = t0.FSEQ AND t2e.FSALEORDERNO = t0.FBILLNO
|
|
AND t2e.FMATERIALID = t0.FMATERIALID
|
|
UNION ALL
|
|
SELECT t2.FBILLNO AS 'MOBIllNo',t2.FBILLTYPE AS 'MoBillType',t2.FID AS 'MoId',t2e.FENTRYID AS 'MoEntryId',t2e.FSEQ AS 'MoEntrySeq'
|
|
,t2e.F_GZQty,t2e.F_GS_QTY,t2e.F_FYL_QTY,t2e.FQTY
|
|
,t2e.FLOT,t2e.FLOT_TEXT,t2e.FUNITID
|
|
,ISNULL(CONVERT(varchar(100),t2e.F_UHIK_DATE,20),'') '生产日期',ISNULL(CONVERT(varchar(100),t2e.F_UHIK_DATE1,20),'') '有效期至'
|
|
FROM T_PRD_MO t2
|
|
INNER JOIN T_PRD_MOENTRY t2e on t2.FID = t2e.FID
|
|
INNER JOIN T_PRD_MOENTRY_A t2e_a on t2e.FENTRYID = t2e_a.FENTRYID
|
|
WHERE 1 = 1 AND t2e.FPackSrcBillNo = t0.FBILLNO AND t2e.FFPackSrcSeq = t0.FSEQ AND t2e.FPackSrcType = 1
|
|
AND t2e.FMATERIALID = t0.FMATERIALID
|
|
) t2
|
|
OUTER APPLY (
|
|
SELECT t3e_lk.FSID,SUM(t3e_a.FBASESTOCKINQUASELQTY) RptQty
|
|
FROM T_PRD_MORPT t3
|
|
INNER JOIN T_PRD_MORPTENTRY t3e on t3.FID = t3e.FID
|
|
INNER JOIN T_PRD_MORPTENTRY_A t3e_a on t3e_a.FENTRYID = t3e.FENTRYID
|
|
INNER JOIN T_PRD_MORPTENTRY_LK t3e_lk on t3e_lk.FENTRYID = t3e.FENTRYID AND t3e_lk.FSTABLENAME = 'T_PRD_MOENTRY'
|
|
WHERE t3e_lk.FSID = t2.MoEntryId
|
|
GROUP BY t3e_lk.FSID
|
|
) t3
|
|
|
|
";
|
|
|
|
var dataList = DBServiceHelper.ExecuteDynamicObject(this.Context, sqlL);
|
|
if (dataList != null && dataList.Any())
|
|
{
|
|
var entrys = billHead["FEntity"] as DynamicObjectCollection;
|
|
var entityType = entrys[0].DynamicObjectType;
|
|
|
|
//#! 物料
|
|
var matFld = e.TargetBusinessInfo.GetField("FMaterialId") as BaseDataField;
|
|
//#! 货主
|
|
var ownerFId = e.TargetBusinessInfo.GetField("FOwnerId") as BaseDataField;
|
|
//#! 批号
|
|
var lotFId = e.TargetBusinessInfo.GetField("FLot") as BaseDataField;
|
|
//#! 单据类型
|
|
var moBillTypeFId = e.TargetBusinessInfo.GetField("FMoBillTypeId") as BaseDataField;
|
|
//#! 计量单位
|
|
var unitFId = e.TargetBusinessInfo.GetField("FUnitID") as BaseDataField;
|
|
|
|
var PStockOrgObj = billHead["FPStockOrgId"] as DynamicObject;
|
|
var PStockOrgId_Id = billHead["FPStockOrgId_Id"].Long2Int();
|
|
|
|
//仓库
|
|
var stockFid = e.TargetBusinessInfo.GetField("FStockId") as BaseDataField;
|
|
|
|
entrys.Clear();
|
|
|
|
foreach (var item in dataList)
|
|
{
|
|
var entry = new DynamicObject(entityType);
|
|
entry["Seq"] = item["RN"];
|
|
|
|
//# 物料
|
|
var matId = item["FMATERIALID"].Long2Int();
|
|
entry["FMaterialId_Id"] = matId;
|
|
var matObj = BusinessDataServiceHelper.LoadSingle(this.Context, matId, matFld.RefFormDynamicObjectType);
|
|
entry["FMaterialId"] = matObj;
|
|
|
|
var materialStock = (matObj["MaterialStock"] as DynamicObjectCollection)[0];
|
|
var stockId = materialStock["StockId_Id"].Long2Int();
|
|
if (stockId > 0)
|
|
{
|
|
entry["FStockId_Id"] = stockId;
|
|
var stockObj = BusinessDataServiceHelper.LoadSingle(this.Context, stockId, stockFid.RefFormDynamicObjectType);
|
|
entry["FStockId"] = stockObj;
|
|
}
|
|
|
|
//# 产品类型
|
|
entry["FProductType"] = item["FPRODUCTTYPE"];
|
|
|
|
//# 来源单据
|
|
entry["FSrcBillId"] = item["FID"];
|
|
entry["FSrcBillEntryId"] = item["FENTRYID"];
|
|
|
|
//# 生产订单数据
|
|
var moBillTypeId = item["MoBillType"];
|
|
if (!moBillTypeId.IsNullOrEmptyOrWhiteSpace())
|
|
{
|
|
var moBillTypeObj = BusinessDataServiceHelper.LoadSingle(this.Context, moBillTypeId, moBillTypeFId.RefFormDynamicObjectType);
|
|
entry["FMoBillTypeId_Id"] = moBillTypeId;
|
|
entry["FMoBillTypeId"] = moBillTypeObj;
|
|
entry["FMoId"] = item["MoId"];
|
|
entry["FMOBillNo"] = item["MOBIllNo"];
|
|
}
|
|
|
|
entry["FMoEntryId"] = item["MoEntryId"];
|
|
entry["FMoEntrySeq"] = item["MoEntrySeq"];
|
|
|
|
//# 货主类型
|
|
entry["FOwnerTypeId"] = item["FOWNERTYPEID"];
|
|
//# 货主
|
|
var ownerId = item["FOWNERID"].Long2Int();
|
|
if (ownerId > 0)
|
|
{
|
|
var ownerObj = BusinessDataServiceHelper.LoadSingle(this.Context, ownerId, ownerFId.RefFormDynamicObjectType);
|
|
entry["FOwnerId_Id"] = ownerId;
|
|
entry["FOwnerId"] = ownerObj;
|
|
}
|
|
|
|
//# 批号
|
|
var lotId = item["FLOT"].Long2Int();
|
|
if (lotId > 0)
|
|
{
|
|
var lotObj = BusinessDataServiceHelper.LoadSingle(this.Context, lotId, lotFId.RefFormDynamicObjectType);
|
|
entry["FLot_Id"] = lotId;
|
|
entry["FLot"] = lotObj;
|
|
entry["FLot_Text"] = item["FLOT_TEXT"];
|
|
}
|
|
|
|
//# 计量单位
|
|
var unitId = item["FUNITID"].Long2Int();
|
|
if (unitId > 0)
|
|
{
|
|
var unitObj = BusinessDataServiceHelper.LoadSingle(this.Context, unitId, unitFId.RefFormDynamicObjectType);
|
|
entry["FUnitID_Id"] = unitId;
|
|
entry["FUnitID"] = unitObj;
|
|
}
|
|
|
|
//# 库存组织
|
|
entry["FStockOrgId_Id"] = PStockOrgId_Id;
|
|
entry["FStockOrgId"] = PStockOrgObj;
|
|
|
|
entry["FLabHuoHao"] = item["标签货号"];
|
|
entry["FGZLQty"] = item["F_GZQty"];
|
|
entry["FLabSpec"] = item["标签规格_Note"];
|
|
entry["FZGSQty"] = item["F_GS_QTY"];
|
|
entry["FHuoHao"] = item["货号"];
|
|
|
|
if (item["生产日期"].ToString() != string.Empty)
|
|
entry["FProducedDate"] = item["生产日期"];
|
|
if (item["有效期至"].ToString() != string.Empty)
|
|
entry["FExpiryDate"] = item["有效期至"];
|
|
//# entry[""] = item["标签生产日期"]
|
|
|
|
//# 富余量
|
|
entry["FFYLQty"] = item["F_FYL_QTY"];
|
|
|
|
entry["FQty"] = item["FQTY"];
|
|
//entry["FRptQty"] = item["FQTY"];
|
|
entry["FRptQty"] = item["RptQty"];
|
|
entry["FNoInStockQty"] = item["FQTY"];
|
|
|
|
entrys.Add(entry);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
public override void OnParseFilterOptions(ParseFilterOptionsEventArgs e)
|
|
{
|
|
base.OnParseFilterOptions(e);
|
|
}
|
|
|
|
public override void OnInitVariable(InitVariableEventArgs e)
|
|
{
|
|
base.OnInitVariable(e);
|
|
}
|
|
|
|
public override void OnQueryBuilderParemeter(QueryBuilderParemeterEventArgs e)
|
|
{
|
|
base.OnQueryBuilderParemeter(e);
|
|
}
|
|
|
|
public override void OnBeforeGetSourceData(BeforeGetSourceDataEventArgs e)
|
|
{
|
|
base.OnBeforeGetSourceData(e);
|
|
}
|
|
|
|
public override void OnInSelectedRow(InSelectedRowEventArgs e)
|
|
{
|
|
base.OnInSelectedRow(e);
|
|
}
|
|
|
|
public override void OnBeforeFieldMapping(BeforeFieldMappingEventArgs e)
|
|
{
|
|
base.OnBeforeFieldMapping(e);
|
|
}
|
|
|
|
public override void OnFieldMapping(FieldMappingEventArgs e)
|
|
{
|
|
base.OnFieldMapping(e);
|
|
}
|
|
|
|
public override void OnAfterFieldMapping(AfterFieldMappingEventArgs e)
|
|
{
|
|
base.OnAfterFieldMapping(e);
|
|
}
|
|
|
|
public override void OnCreateLink(CreateLinkEventArgs e)
|
|
{
|
|
base.OnCreateLink(e);
|
|
}
|
|
|
|
public override void OnSetLinkAmount(SetLinkAmountEventArgs e)
|
|
{
|
|
base.OnSetLinkAmount(e);
|
|
}
|
|
|
|
public override void OnAfterCreateLink(CreateLinkEventArgs e)
|
|
{
|
|
base.OnAfterCreateLink(e);
|
|
}
|
|
|
|
public override void OnGetSourceData(GetSourceDataEventArgs e)
|
|
{
|
|
base.OnGetSourceData(e);
|
|
}
|
|
|
|
public override void OnCreateTarget(CreateTargetEventArgs e)
|
|
{
|
|
base.OnCreateTarget(e);
|
|
}
|
|
|
|
public override void OnGetDrawSourceData(GetDrawSourceDataEventArgs e)
|
|
{
|
|
base.OnGetDrawSourceData(e);
|
|
}
|
|
|
|
public override void OnCreateDrawTarget(CreateDrawTargetEventArgs e)
|
|
{
|
|
base.OnCreateDrawTarget(e);
|
|
}
|
|
|
|
public override void OnBeforeGroupBy(BeforeGroupByEventArgs e)
|
|
{
|
|
base.OnBeforeGroupBy(e);
|
|
}
|
|
|
|
public override void OnGetConvertBusinessService(ConvertBusinessServiceEventArgs e)
|
|
{
|
|
base.OnGetConvertBusinessService(e);
|
|
}
|
|
|
|
public override void OnAfterConvertBusinessService(AfterConvertBusinessServiceEventArgs e)
|
|
{
|
|
base.OnAfterConvertBusinessService(e);
|
|
}
|
|
|
|
public override void OnBeforeTailDiff(BeforeTailDiffEventArgs e)
|
|
{
|
|
base.OnBeforeTailDiff(e);
|
|
}
|
|
|
|
public override void OnAfterTailDiff(AfterTailDiffEventArgs e)
|
|
{
|
|
base.OnAfterTailDiff(e);
|
|
}
|
|
}
|
|
}
|