//public override void OnQueryBuilderParemeter(QueryBuilderParemeterEventArgs e)
        //{
        //    e.SelectItems.Add(new SelectorItemInfo("F_SZXY_MOID"));
        //}
        ///// <summary>
        ///// 设置OnFieldMapping 事件启用
        ///// </summary>
        ///// <param name="e"></param>
        //public override void OnBeforeFieldMapping(BeforeFieldMappingEventArgs e)
        //{
        //    base.OnBeforeFieldMapping(e);
        //    e.FireFieldMappingEvent = true;
        //}
        //public long F_ZHAOBIAODAILI;
        ///// <summary>
        ///// 获取与处理源单数据
        ///// </summary>
        ///// <param name="e"></param>
        //public override void OnFieldMapping(FieldMappingEventArgs e)
        //{
        //    List<Kingdee.BOS.Orm.DataEntity.DynamicObject> SrcData = e.ConvertSource as List<Kingdee.BOS.Orm.DataEntity.DynamicObject>;
        //}
        public override void AfterConvert(AfterConvertEventArgs e)
        {
            base.AfterConvert(e);
            IViewService Services = ServiceHelper.GetService <IViewService>();
            //获取整个下推的数据
            var dataObjs = e.Result.FindByEntityKey("FBillHead");

            if (dataObjs != null)
            {
                foreach (var extendedDataEntity in dataObjs)
                {
                    DynamicObjectCollection EntryCollect = null;//
                    //获取目标单的明细信息
                    Entity        entity     = e.TargetBusinessInfo.GetEntity("FEntity");
                    DynamicObject BillObject = extendedDataEntity.DataEntity;
                    EntryCollect = extendedDataEntity.DataEntity["Entity"] as DynamicObjectCollection;//生产领料单

                    if (EntryCollect != null && EntryCollect.Count > 0)
                    {
                        foreach (DynamicObject Row in EntryCollect)
                        {
                            string MoId        = Convert.ToString(Row["MoId"]);          //生产订单内码
                            int    MoSeq       = Convert.ToInt32(Row["MoEntrySeq"]);     //生产订单行号
                            string FMATERIALID = Convert.ToString(Row["MaterialId_Id"]); //原料
                            //加载生产订单
                            if (MoId != "0")
                            {
                                DynamicObject MoObejct  = Utils.LoadFIDBillObject(this.Context, "PRD_MO", MoId);
                                long          MoEntryId = 0;//生产订单分录内码
                                if (MoObejct["TreeEntity"] is DynamicObjectCollection MoEntry)
                                {
                                    MoEntryId = Convert.ToInt64(MoEntry[MoSeq - 1]["Id"]);
                                }
                                if (MoObejct != null && !Convert.ToString(Row["MoEntrySeq"]).IsNullOrEmptyOrWhiteSpace() && !FMATERIALID.IsNullOrEmptyOrWhiteSpace())
                                {
                                    string MoBillNo  = Convert.ToString(MoObejct["BillNo"]);//生产订单编号
                                    string SelUseSql = "/*dialect*/select T1.FBILLNO,T1.FID,T2.FENTRYID,T2.FSEQ from T_PRD_PPBOM T1 left join T_PRD_PPBOMENTRY T2 on t1.FID=T2.FID " +
                                                       $"where T1.FMOBILLNO = '{MoBillNo}' and T1.FMOENTRYSEQ = '{MoSeq}' and T2.FMATERIALID = '{FMATERIALID}'";
                                    DataSet Ds = Utils.CBData(SelUseSql, Context);
                                    if (Ds != null && Ds.Tables.Count > 0 && Ds.Tables[0].Rows.Count > 0)
                                    {
                                        string UseFBILLNO = Convert.ToString(Ds.Tables[0].Rows[0]["FBILLNO"]); //用料清单编号
                                        long   UseFID     = Convert.ToInt64(Ds.Tables[0].Rows[0]["FID"]);      //用料清单ID
                                        long   UseEntryId = Convert.ToInt64(Ds.Tables[0].Rows[0]["FENTRYID"]); //用料清单行Id
                                        string UseSeq     = Convert.ToString(Ds.Tables[0].Rows[0]["FSEQ"]);    //用料清单Seq
                                        Row["MoEntryId"]    = MoEntryId;
                                        Row["PPBomEntryId"] = UseEntryId;
                                        //用料清单编号
                                        Row["MoId"]        = MoId;
                                        Row["MoEntrySeq"]  = MoSeq;
                                        Row["PPBomBillNo"] = UseFBILLNO;
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
示例#2
0
        /// <summary>
        /// 成品明细对应的子键明细的数据实现
        /// panqing  2016.08.15
        /// </summary>
        /// <param name="e"></param>
        public override void AfterConvert(AfterConvertEventArgs e)
        {
            base.AfterConvert(e);
            IViewService Services = ServiceHelper.GetService <IViewService>();
            //获取整个下推的数据
            var dataObjs = e.Result.FindByEntityKey("FBillHead");

            if (dataObjs != null)
            {
                foreach (var extendedDataEntity in dataObjs)
                {
                    DynamicObjectCollection EntryCollect = null;//流延单
                    //获取目标单的明细信息(流延单)
                    Entity        entity     = e.TargetBusinessInfo.GetEntity("FBillEntry");
                    DynamicObject BillObject = extendedDataEntity.DataEntity;
                    EntryCollect = extendedDataEntity.DataEntity["SZXY_XYLYEntry"] as DynamicObjectCollection;
                    //string BillNo = Convert.ToString(BillObject["BillNo"]);
                    // DynamicObject orgObj = BillObject["F_SZXY_OrgId"] as DynamicObject;
                    //移除目标单成品明细信息空行(选单时目标单会有空行)
                    if (EntryCollect != null && EntryCollect.Count > 0)
                    {
                        foreach (DynamicObject Row in EntryCollect)
                        {
                            //DynamicObject newRow = new DynamicObject(entity.DynamicObjectType);
                            string        Date          = Convert.ToString(Row["F_SZXY_Date"]);
                            DynamicObject formulaObejct = Row["F_SZXY_Formula"] as DynamicObject;
                            DynamicObject machineObejct = Row["F_SZXY_Machine"] as DynamicObject;
                            string        Seq           = Convert.ToString(Row["F_SZXY_Seq"]);
                            string        rollNO        = Convert.ToString(Row["F_SZXY_RollNo"]);

                            if (!Date.IsNullOrEmptyOrWhiteSpace() && formulaObejct != null && machineObejct != null && !Seq.IsNullOrEmptyOrWhiteSpace() && !rollNO.IsNullOrEmptyOrWhiteSpace())
                            {
                                string formulaNumber = Convert.ToString(formulaObejct["FNumber"]);
                                string machineNumber = Convert.ToString(machineObejct["FNumber"]);
                                // string org=Convert.ToString(orgObj["Number"]);
                                Row["F_SZXY_PlasticNo"] = "C" + formulaNumber + Convert.ToDateTime(Row["F_SZXY_Date"]).ToString("yy-MM-dd") + machineNumber.Trim().Substring(1, machineNumber.Trim().Length - 1) + Seq + rollNO;
                                Row["F_SZXY_InPutQty"]  = ((Convert.ToDecimal(Row["F_SZXY_PLy"]) * (Convert.ToDecimal(Row["F_SZXY_Width"]) * Convert.ToDecimal(Row["F_SZXY_Len"]) / Convert.ToDecimal(1000)) * Convert.ToDecimal(0.91)) / Convert.ToDecimal(1000)) / Convert.ToDecimal(0.83);
                                Row["F_SZXY_Output"]    = (Convert.ToDecimal(Row["F_SZXY_PLy"]) * (Convert.ToDecimal(Row["F_SZXY_Width"]) * Convert.ToDecimal(Row["F_SZXY_Len"]) / Convert.ToDecimal(1000)) * Convert.ToDecimal(0.91)) / Convert.ToDecimal(1000);
                            }
                            //EntryCollect.Add(newRow);F_SZXY_Output
                        }
                    }
                }
            }
        }
        public override void AfterConvert(AfterConvertEventArgs e)
        {
            //base.AfterConvert(e);

            ExtendedDataEntity[] source = e.Result.FindByEntityKey("FEntity");
            string        billTypeId    = (source.FirstOrDefault <ExtendedDataEntity>().DataEntity.Parent as DynamicObject).GetDynamicObjectItemValue <string>("FBillTypeID_Id", null);
            DynamicObject billTypePara  = Kingdee.K3.MFG.App.AppServiceContext.BusinessDataService.LoadBillTypePara(base.Context, "InspectBillTPS", billTypeId, true);

            this.SetPolicyQty(source, billTypePara);
            this.SetEntitySSInfoByQty(source, billTypePara);
            this.SetInspectItem(source, billTypePara);
            this.FillReferDetail(source, billTypePara);
            this.SplitData(e);

            ExtendedDataEntity[] entryDataes = e.Result.FindByEntityKey("FEntity");
            this.BuildSerial(entryDataes);
            if (this.QCSNSplitEntry)
            {
                base.SplitSNEntrys(e.Result);
            }
        }
示例#4
0
 public override void AfterConvert(AfterConvertEventArgs e)
 {
     ExtendedDataEntity[] data = e.Result.FindByEntityKey("FBillHead");
     if (data != null && data.Length > 0)
     {
         foreach (ExtendedDataEntity entity in data)
         {
             DynamicObject billObj    = entity.DataEntity;
             long          supplierId = Convert.ToInt64(billObj["SupplierId_Id"]);
             if (supplierId != 0)
             {
                 var supplierObj = DealSupplierVMI(supplierId);
                 if (supplierObj == null)
                 {
                     billObj["SupplierId_Id"] = 0;
                     billObj["SupplierId"]    = null;
                 }
             }
         }
     }
 }
示例#5
0
        public override void AfterConvert(AfterConvertEventArgs e)
        {
            base.AfterConvert(e);
            ExtendedDataEntity[] array       = e.Result.FindByEntityKey("FBillHead");
            IMetaDataService     metaService = ServiceHelper.GetService <IMetaDataService>();
            FormMetadata         bomMeta     = metaService.Load(this.Context, "ENG_BOM", true) as FormMetadata;
            IViewService         viewService = ServiceHelper.GetService <IViewService>();

            foreach (ExtendedDataEntity item in array)
            {
                long orgId = Convert.ToInt64(item["SaleOrgId_Id"]);
                //long orgId = 100005;
                DynamicObjectCollection orderEntry = item["SaleOrderEntry"] as DynamicObjectCollection;
                if (orderEntry != null && orderEntry.Count() > 0)
                {
                    foreach (DynamicObject order in orderEntry)
                    {
                        long   materialId   = Convert.ToInt64(order["MaterialId_Id"]);
                        long   AuxPropId_Id = Convert.ToInt64(order["AuxPropId_Id"]);
                        string strSql       = string.Format(@"/*dialect*/select FMASTERID from T_BD_MATERIAL where FMATERIALID = {0}", materialId);
                        long   masterid     = DBUtils.ExecuteScalar <long>(this.Context, strSql, 0, null);
                        if (masterid != 0)
                        {
                            //1上下文,2物料masterid,3辅助属性内码id,
                            long bomId = BOMServiceHelper.GetDefaultBomKey(this.Context, masterid, orgId, AuxPropId_Id, Enums.Enu_BOMUse.TYBOM) > 0? BOMServiceHelper.GetDefaultBomKey(this.Context, masterid, orgId, AuxPropId_Id, Enums.Enu_BOMUse.TYBOM):0;
                            if (bomId > 0)
                            {
                                DynamicObject bomObject = viewService.LoadSingle(this.Context, bomId, bomMeta.BusinessInfo.GetDynamicObjectType());
                                order["BomId"]    = bomObject;
                                order["BomId_Id"] = bomId;
                            }
                        }
                    }
                }
            }
        }
        public override void AfterConvert(AfterConvertEventArgs e)
        {
            base.AfterConvert(e);

            //获取整个下推的数据
            var dataObjs = e.Result.FindByEntityKey("FBillHead");

            if (dataObjs != null)
            {
                foreach (var extendedDataEntity in dataObjs)
                {
                    DynamicObjectCollection EntryCollect = null;

                    DynamicObject BillObject = extendedDataEntity.DataEntity;

                    //生产入库单明细
                    EntryCollect = extendedDataEntity.DataEntity["Entity"] as DynamicObjectCollection;

                    Entity entity2 = e.TargetBusinessInfo.GetEntity("FEntity_Link");

                    if (EntryCollect != null && EntryCollect.Count > 0)
                    {
                        foreach (DynamicObject row in EntryCollect)
                        {
                            string fmoent = "";
                            string sql    = "select FENTRYID   FROM T_PRD_MOENTRY  where FID= "
                                            + row["MoId"]
                                            + "and  FSEQ= "
                                            + row["MoEntrySeq"];                                  //sql拼接
                            DataSet sqltable = DBServiceHelper.ExecuteDataSet(this.Context, sql); //放入DataSet
                            if (sqltable != null && sqltable.Tables.Count > 0 && sqltable.Tables[0].Rows.Count > 0)
                            {
                                fmoent = sqltable.Tables[0].Rows[0][0].ToString();
                            }

                            //源单类型
                            row["SrcBillType"] = "PRD_MO";
                            //源单编号
                            row["SrcBillNo"] = row["MoBillNo"];
                            //源单内码
                            row["SrcInterId"] = row["MoId"];
                            //源单分录内码
                            row["SrcEntryId"] = fmoent;
                            //源单行号
                            row["SrcEntrySeq"] = row["MoEntrySeq"];

                            DynamicObjectCollection linkCollect = row["FEntity_Link"] as DynamicObjectCollection;

                            linkCollect[0]["RuleId"] = "PRD_MO2INSTOCK";//PRD_INSTOCK

                            linkCollect[0]["STableName"] = "T_PRD_MOENTRY";

                            linkCollect[0]["SBillId"] = row["MoId"];

                            //生产订单分录内码
                            linkCollect[0]["SId"] = fmoent;
                        }
                    }
                }
            }
        }
示例#7
0
        public override void AfterConvert(AfterConvertEventArgs e)
        {
            ExtendedDataEntity[] entitys   = e.Result.FindByEntityKey("FBillHead");
            DataTable            dataTable = new DataTable();

            //dataTable.Columns.Add("FMaterialId");
            dataTable.Columns.Add("FCOLOR");
            List <long> lstAuxPropId = new List <long>();

            #region 第一步获取物料+辅助属性集合

            foreach (ExtendedDataEntity entity in entitys)
            {
                DynamicObjectCollection entryDatas = (DynamicObjectCollection)entity.DataEntity["TreeEntity"];
                if (entryDatas != null && entryDatas.Count > 0)
                {
                    foreach (var item in entryDatas)
                    {
                        DataRow dataRow = dataTable.NewRow();
                        // DynamicObject material = item["MaterialId"] as DynamicObject;

                        //dataRow["FMaterialId"] = material != null ? Convert.ToInt64(material["Id"]) : 0;
                        DynamicObject auxprop = item["AuxPropId"] as DynamicObject;
                        string        color   = auxprop != null?Convert.ToString(auxprop["F100001_Id"]) : "";

                        dataRow["FCOLOR"] = color;
                        dataTable.Rows.Add(dataRow);
                    }
                }
            }

            if (dataTable.Rows.Count == 0)
            {
                return;
            }


            BatchSqlParam batchSqlParam = new BatchSqlParam("JHF_T_ROUTMATTAB", dataTable, "");
            batchSqlParam.TableAliases = "TR";
            // batchSqlParam.AddWhereExpression("FMaterialId", KDDbType.Int64, "F_JHF_MATERIALID", "TR");
            batchSqlParam.AddWhereExpression("FCOLOR", KDDbType.String, "F_JHF_COLOR", "TR");
            string selectFieldSql = " distinct  TR.F_JHF_COLOR,TR.F_JHF_ROUTID";
            string where = string.Format(" TR.FDOCUMENTSTATUS='C' AND TR.FFORBIDSTATUS='A'  ");


            DynamicObjectCollection   dyobjs     = DBUtils.ExecuteDynamicObject(base.Context, batchSqlParam, selectFieldSql, where);
            Dictionary <string, long> dicMatRout = new Dictionary <string, long>();
            if (dyobjs != null && dyobjs.Count > 0)
            {
                foreach (var objs in dyobjs)
                {
                    string color = Convert.ToString(objs["F_JHF_COLOR"]);
                    if (!dicMatRout.ContainsKey(color))
                    {
                        dicMatRout.Add(color, Convert.ToInt64(objs["F_JHF_ROUTID"]));
                    }
                }
            }



            #endregion

            #region 重新赋值工艺路线

            foreach (ExtendedDataEntity entity in entitys)
            {
                DynamicObjectCollection entryDatas = (DynamicObjectCollection)entity.DataEntity["TreeEntity"];
                if (entryDatas != null && entryDatas.Count > 0)
                {
                    foreach (var item in entryDatas)
                    {
                        DynamicObject material   = item["MaterialId"] as DynamicObject;
                        string        materialId = material != null?Convert.ToString(material["Id"]) : "";

                        DynamicObject auxprop = item["AuxPropId"] as DynamicObject;
                        string        color   = auxprop != null?Convert.ToString(auxprop["F100001_Id"]) : "";

                        if (dicMatRout.ContainsKey(color))
                        {
                            long rountId = dicMatRout[color];
                            //赋值工艺路线
                            SetRountIdFiled(e.TargetBusinessInfo, item, "RoutingId", "FRoutingId", rountId);
                        }
                    }
                }
            }
            #endregion
        }
        /// <summary>
        /// 主单据体的字段携带完毕,与源单的关联关系创建好之后,触发此事件
        /// </summary>
        /// <param name="e"></param>
        //public override void OnAfterCreateLink(CreateLinkEventArgs e)
        //{
        //    base.OnAfterCreateLink(e);
        //    //源单  销售订单明细
        //    Entity srcFirstEntity = e.SourceBusinessInfo.GetEntity("FSaleOrderEntry");

        //    //目标单  直接调拨单明细
        //    Entity mainEntity = e.TargetBusinessInfo.GetEntity("FBillEntry");

        //    // 目标单关联子单据体
        //    Entity linkEntity = null;
        //    Form form = e.TargetBusinessInfo.GetForm();
        //    if (form.LinkSet != null
        //        && form.LinkSet.LinkEntitys != null
        //        && form.LinkSet.LinkEntitys.Count != 0)
        //    {
        //        linkEntity = e.TargetBusinessInfo.GetEntity(
        //            form.LinkSet.LinkEntitys[0].Key);
        //    }

        //    if (linkEntity == null)
        //    {
        //        return;
        //    }
        //    // 获取生成的全部下游单据
        //    ExtendedDataEntity[] billDataEntitys = e.TargetExtendedDataEntities.FindByEntityKey("FBillHead");

        //    // 对下游单据,逐张单据进行处理
        //    foreach (var item in billDataEntitys)
        //    {
        //        DynamicObjectCollection directEntry = item["TransferDirectEntry"] as DynamicObjectCollection;
        //        //合并之后的分录  为了不遍历每次增加
        //        DynamicObject entryEnd = directEntry[0] as DynamicObject;
        //        //获取目标单组织 sql中使用
        //        DynamicObject org = item["StockOrgId"] as DynamicObject;
        //        long orgId=Convert.ToInt64(org["Id"]);
        //        decimal slamount = 0;//塑料箱总数
        //        decimal pmamount = 0;//泡沫箱总数
        //        for (int i=0;i< directEntry.Count; i++)
        //        {
        //            //目标单分录
        //            DynamicObject entry= directEntry[i] as DynamicObject;
        //            //目标单物料
        //            DynamicObject material = entry["MaterialId"] as DynamicObject;
        //            //目标单调拨数量
        //            decimal qty= Convert.ToDecimal(entry["QTY"]);
        //            //物料获取装箱数
        //            decimal packQty= Convert.ToDecimal(material["FPACKQTY"]);
        //            //物料获取箱套类型
        //            DynamicObjectCollection materialBase = material["MaterialBase"] as DynamicObjectCollection;
        //            foreach (DynamicObject colourAll in materialBase)
        //            {
        //                string colour = Convert.ToString(colourAll["FBOXCOLOUR"]);
        //                if (colour.Equals("1"))//塑料箱
        //                {
        //                    decimal slxAmount = Math.Ceiling(qty / packQty);
        //                    slamount = slamount + slxAmount;
        //                }
        //                if (colour.Equals("2"))//泡沫箱
        //                {
        //                    decimal pmxAmount = Math.Ceiling(qty / packQty);
        //                    pmamount = pmamount + pmxAmount;
        //                }
        //            }

        //        }
        //        //新增分录  判断两种箱套数量是否为空
        //        if (slamount != 0)
        //        {
        //            // 目标单添加新行,并接受源单字段值
        //            DynamicObject newRow = new DynamicObject(mainEntity.DynamicObjectType);
        //            directEntry.Add(newRow);
        //            //根据组织查询对应 箱套
        //            string sql = string.Format(@"select fmaterialid from t_bd_material where fnumber='07040000' and fuseorgid={0}", orgId);
        //            long result = DBUtils.ExecuteScalar<long>(base.Context, sql, -1, null);
        //            //调入货主类型 string
        //            string ownerType = Convert.ToString(item["OwnerTypeIdHead"]);
        //            //调出货主类型 string
        //            string ownerOutType = Convert.ToString(item["OwnerTypeOutIdHead"]);
        //            //调入货主 DynamicObject
        //            DynamicObject owner = item["OwnerIdHead"] as DynamicObject;
        //            //调出货主 DynamicObject
        //            DynamicObject ownerOut = item["OwnerOutIdHead"] as DynamicObject;
        //            //调入保管者类型
        //            string keeperType = item["OwnerTypeIdHead"] as string;
        //            //调出保管者类型
        //            string keeperOutType = entryEnd["KeeperTypeId"] as string;
        //            //调入保管者
        //            DynamicObject keeper = entryEnd["KeeperId"] as DynamicObject;
        //            //调出保管者
        //            DynamicObject keeperOut = entryEnd["KeeperOutId"] as DynamicObject;
        //            //调拨数量基本单位  BaseQty
        //            decimal baseQty = Convert.ToDecimal( entryEnd["BaseQty"]);

        //            //组织基础资料对象
        //            if (result !=0 && result != -1)
        //            {
        //                IMetaDataService metaService = ServiceHelper.GetService<IMetaDataService>();//元数据服务
        //                IViewService view = ServiceHelper.GetService<IViewService>();//界面服务
        //                FormMetadata Meta = metaService.Load(base.Context, "BD_MATERIAL") as FormMetadata;//获取基础资料元数据
        //                DynamicObject BasicObject = view.LoadSingle(base.Context, result, Meta.BusinessInfo.GetDynamicObjectType());
        //                //物料ID
        //                long materialId = Convert.ToInt64(BasicObject["Id"]);
        //                // 填写字段值
        //                DynamicObjectCollection materialStock = BasicObject["MaterialStock"] as DynamicObjectCollection;
        //                DynamicObjectCollection materialBase = BasicObject["MaterialBase"] as DynamicObjectCollection;

        //                //基本单位
        //                foreach(DynamicObject base2 in materialBase)
        //                {
        //                    DynamicObject baseUnit = base2["BaseUnitId"] as DynamicObject;
        //                    newRow["BaseUnitId"] =baseUnit;
        //                }
        //                //单位  物料
        //                foreach (DynamicObject base1 in materialStock)
        //                {
        //                    DynamicObject unit = base1["StoreUnitID"] as DynamicObject;
        //                    long unitId = Convert.ToInt64(unit["Id"]);
        //                    newRow["MaterialId"] = BasicObject;
        //                    newRow["MaterialId_Id"] = materialId;
        //                    newRow["QTY"] = slamount;
        //                    newRow["UnitId"] = unit;
        //                    newRow["UnitId_Id"] = unitId;
        //                    newRow["Seq"] = directEntry.Count;



        //                    //调入货主
        //                    newRow["OwnerId"] = owner;
        //                    //调入货主类型
        //                    newRow["OwnerTypeId"] = ownerType;
        //                    //调处货主
        //                    newRow["FOwnerOutId"] = ownerOut;
        //                    //调出货主类型
        //                    newRow["OwnerTypeOutId"] = ownerOutType;
        //                    //调入保管者类型
        //                    newRow["KeeperTypeId"] = keeperOutType;
        //                    //调出保管者类型
        //                    newRow["KeeperTypeOutId"] = keeperOutType;
        //                    //调入保管者
        //                    newRow["KeeperId"] = owner;
        //                    //调出保管者
        //                    newRow["KeeperOutId"] = ownerOut;
        //                    //调出数量(基本单位)
        //                    newRow["BaseQty"] = baseQty;
        //                }

        //            }

        //        }



        //        if(pmamount != 0)
        //        {
        //            // 目标单添加新行
        //            DynamicObject newRow = new DynamicObject(entryEnd.DynamicObjectType);
        //            directEntry.Add(newRow);
        //            //根据组织查询对应 箱套
        //            string sql = string.Format(@"select fmaterialid from t_bd_material where fnumber='07040004' and fuseorgid={0}", orgId);
        //            long result = DBUtils.ExecuteScalar<long>(base.Context, sql, -1, null);
        //            //组织基础资料对象
        //            if (result != 0 && result != -1)
        //            {
        //                IMetaDataService metaService = ServiceHelper.GetService<IMetaDataService>();//元数据服务
        //                IViewService view = ServiceHelper.GetService<IViewService>();//界面服务
        //                FormMetadata Meta = metaService.Load(base.Context, "BD_MATERIAL") as FormMetadata;//获取基础资料元数据
        //                DynamicObject BasicObject = view.LoadSingle(base.Context, result, Meta.BusinessInfo.GetDynamicObjectType());
        //                //物料ID
        //                long materialId = Convert.ToInt64(BasicObject["Id"]);
        //                // 填写字段值
        //                DynamicObjectCollection materialStock =  BasicObject["MaterialStock"] as DynamicObjectCollection;
        //                foreach(DynamicObject base1 in materialStock)
        //                {
        //                    DynamicObject unit = base1["StoreUnitID"] as DynamicObject;
        //                    long unitId = Convert.ToInt64(unit["Id"]);
        //                    newRow["MaterialId"] = BasicObject;
        //                    newRow["MaterialId_Id"] = materialId;
        //                    newRow["QTY"] = pmamount;
        //                    newRow["UnitId"] = unit;
        //                    newRow["UnitId_Id"] = unitId;
        //                    newRow["Seq"] = directEntry.Count;
        //                }


        //            }

        //        }


        //        // TODO: 逐个填写其他字段值,示例代码略

        //    }
        //}
        public override void AfterConvert(AfterConvertEventArgs e)
        {
            base.AfterConvert(e);
            // 获取生成的全部下游单据
            ExtendedDataEntity[] billDataEntitys = e.Result.FindByEntityKey("FBillHead");
            Entity mainEntity     = e.TargetBusinessInfo.GetEntity("FBillEntry");
            Entity srcFirstEntity = e.SourceBusinessInfo.GetEntity("FSaleOrderEntry");

            // 对下游单据,逐张单据进行处理
            foreach (var item in billDataEntitys)
            {
                DynamicObjectCollection directEntry = item["TransferDirectEntry"] as DynamicObjectCollection;
                //合并之后的分录  为了不遍历每次增加
                DynamicObject entryEnd = directEntry[0] as DynamicObject;
                //获取目标单组织 sql中使用
                DynamicObject org      = item["StockOrgId"] as DynamicObject;
                long          orgId    = Convert.ToInt64(org["Id"]);
                decimal       slamount = 0; //塑料箱总数
                decimal       pmamount = 0; //泡沫箱总数
                for (int i = 0; i < directEntry.Count; i++)
                {
                    //目标单分录
                    DynamicObject entry = directEntry[i] as DynamicObject;
                    //目标单物料
                    DynamicObject material = entry["MaterialId"] as DynamicObject;
                    //目标单调拨数量
                    decimal qty = Convert.ToDecimal(entry["QTY"]);
                    //物料获取装箱数
                    decimal packQty = Convert.ToDecimal(material["FPACKQTY"]);
                    //物料获取箱套类型
                    DynamicObjectCollection materialBase = material["MaterialBase"] as DynamicObjectCollection;
                    foreach (DynamicObject colourAll in materialBase)
                    {
                        string colour = Convert.ToString(colourAll["FBOXCOLOUR"]);
                        if (colour.Equals("1"))//塑料箱
                        {
                            decimal slxAmount = Math.Ceiling(qty / packQty);
                            slamount = slamount + slxAmount;
                        }
                        if (colour.Equals("2"))//泡沫箱
                        {
                            decimal pmxAmount = Math.Ceiling(qty / packQty);
                            pmamount = pmamount + pmxAmount;
                        }
                    }
                }
                //新增分录  判断两种箱套数量是否为空
                if (slamount != 0)
                {
                    // 目标单添加新行,并接受源单字段值
                    DynamicObject newRow = new DynamicObject(mainEntity.DynamicObjectType);
                    directEntry.Add(newRow);
                    //根据组织查询对应 箱套
                    string sql    = string.Format(@"select fmaterialid from t_bd_material where fnumber='07040000' and fuseorgid={0}", orgId);
                    long   result = DBUtils.ExecuteScalar <long>(base.Context, sql, -1, null);
                    //调入货主类型 string
                    string ownerType = Convert.ToString(item["OwnerTypeIdHead"]);
                    //调出货主类型 string
                    string ownerOutType = Convert.ToString(item["OwnerTypeOutIdHead"]);
                    //调入货主 DynamicObject
                    DynamicObject owner = entryEnd["OwnerId"] as DynamicObject;
                    //调出货主 DynamicObject
                    DynamicObject ownerOut = entryEnd["FOwnerOutId"] as DynamicObject;
                    //调入保管者
                    DynamicObject keeper = entryEnd["KeeperId"] as DynamicObject;
                    //调出保管者
                    DynamicObject keeperOut = entryEnd["KeeperOutId"] as DynamicObject;
                    //调入保管者类型
                    string keeperType = entryEnd["OwnerTypeId"] as string;
                    //调出保管者类型
                    string keeperOutType = entryEnd["KeeperTypeId"] as string;

                    ////调拨数量基本单位  BaseQty
                    //decimal baseQty = Convert.ToDecimal(entryEnd["BaseQty"]);

                    //组织基础资料对象
                    if (result != 0 && result != -1)
                    {
                        IMetaDataService metaService = ServiceHelper.GetService <IMetaDataService>();                 //元数据服务
                        IViewService     view        = ServiceHelper.GetService <IViewService>();                     //界面服务
                        FormMetadata     Meta        = metaService.Load(base.Context, "BD_MATERIAL") as FormMetadata; //获取基础资料元数据
                        DynamicObject    BasicObject = view.LoadSingle(base.Context, result, Meta.BusinessInfo.GetDynamicObjectType());
                        //物料ID
                        long materialId = Convert.ToInt64(BasicObject["Id"]);
                        // 填写字段值
                        DynamicObjectCollection materialStock = BasicObject["MaterialStock"] as DynamicObjectCollection;
                        DynamicObjectCollection materialBase  = BasicObject["MaterialBase"] as DynamicObjectCollection;

                        ////基本单位
                        //foreach (DynamicObject base2 in materialBase)
                        //{
                        //    DynamicObject baseUnit = base2["BaseUnitId"] as DynamicObject;
                        //    newRow["BaseUnitId"] = baseUnit;
                        //}
                        //单位  物料
                        foreach (DynamicObject base1 in materialStock)
                        {
                            DynamicObject unit   = base1["StoreUnitID"] as DynamicObject;
                            long          unitId = Convert.ToInt64(unit["Id"]);
                            newRow["MaterialId"]     = BasicObject;
                            newRow["MaterialId_Id"]  = materialId;
                            newRow["QTY"]            = slamount;
                            newRow["UnitId"]         = unit;
                            newRow["UnitId_Id"]      = unitId;
                            newRow["Seq"]            = directEntry.Count;
                            newRow["DestMaterialId"] = BasicObject;
                            newRow["BaseUnitId"]     = unit;
                            newRow["BaseUnitId_Id"]  = unitId;
                            //BaseUnitId

                            //调入货主
                            newRow["OwnerId"] = owner;
                            //调入货主类型
                            newRow["OwnerTypeId"] = ownerType;
                            //调处货主
                            newRow["FOwnerOutId"] = ownerOut;
                            //调出货主类型
                            newRow["OwnerTypeOutId"] = ownerOutType;
                            //调入保管者类型
                            newRow["KeeperTypeId"] = keeperOutType;
                            //调出保管者类型
                            newRow["KeeperTypeOutId"] = keeperOutType;
                            //调入保管者
                            newRow["KeeperId"] = owner;
                            //调出保管者
                            newRow["KeeperOutId"] = ownerOut;
                            //调出数量(基本单位)
                            newRow["BaseQty"] = slamount;
                        }
                    }
                }



                if (pmamount != 0)
                {
                    // 目标单添加新行
                    DynamicObject newRow = new DynamicObject(entryEnd.DynamicObjectType);
                    directEntry.Add(newRow);
                    //根据组织查询对应 箱套
                    string sql    = string.Format(@"select fmaterialid from t_bd_material where fnumber='07040004' and fuseorgid={0}", orgId);
                    long   result = DBUtils.ExecuteScalar <long>(base.Context, sql, -1, null);
                    //组织基础资料对象
                    if (result != 0 && result != -1)
                    {
                        IMetaDataService metaService = ServiceHelper.GetService <IMetaDataService>();                 //元数据服务
                        IViewService     view        = ServiceHelper.GetService <IViewService>();                     //界面服务
                        FormMetadata     Meta        = metaService.Load(base.Context, "BD_MATERIAL") as FormMetadata; //获取基础资料元数据
                        DynamicObject    BasicObject = view.LoadSingle(base.Context, result, Meta.BusinessInfo.GetDynamicObjectType());
                        //物料ID
                        long materialId = Convert.ToInt64(BasicObject["Id"]);
                        // 填写字段值
                        DynamicObjectCollection materialStock = BasicObject["MaterialStock"] as DynamicObjectCollection;
                        foreach (DynamicObject base1 in materialStock)
                        {
                            DynamicObject unit   = base1["StoreUnitID"] as DynamicObject;
                            long          unitId = Convert.ToInt64(unit["Id"]);
                            newRow["MaterialId"]     = BasicObject;
                            newRow["MaterialId_Id"]  = materialId;
                            newRow["QTY"]            = pmamount;
                            newRow["UnitId"]         = unit;
                            newRow["UnitId_Id"]      = unitId;
                            newRow["Seq"]            = directEntry.Count;
                            newRow["DestMaterialId"] = BasicObject;
                            //调出数量(基本单位)
                            newRow["BaseQty"] = pmamount;
                        }
                    }
                }
            }
        }
示例#9
0
 public override void AfterConvert(AfterConvertEventArgs e)
 {
 }
        private void SplitData(AfterConvertEventArgs e)
        {
            ExtendedDataEntity[] source = e.Result.FindByEntityKey("FEntity");
            string        billTypeId    = (source.FirstOrDefault <ExtendedDataEntity>().DataEntity.Parent as DynamicObject).GetDynamicObjectItemValue <string>("FBillTypeID_Id", null);
            DynamicObject dynamicObject = Kingdee.K3.MFG.App.AppServiceContext.BusinessDataService.LoadBillTypePara(base.Context, "InspectBillTPS", billTypeId, true);
            string        str2          = dynamicObject.GetDynamicObjectItemValue <string>("SPLITBY", null);

            if ((!dynamicObject.IsNullOrEmpty() && !str2.EqualsIgnoreCase("A")) && !str2.IsNullOrEmptyOrWhiteSpace())
            {
                List <long> materialIds = (from s in source select s.DataEntity.GetDynamicValue <long>("MaterialId_Id", 0L)).ToList <long>();
                Dictionary <long, Tuple <long, long> > inspectorInfo = Kingdee.K3.MFG.App.AppServiceContext.GetService <IInspectService>().GetInspectorInfo(base.Context, materialIds);
                if (!inspectorInfo.IsEmpty <KeyValuePair <long, Tuple <long, long> > >())
                {
                    ExtendedDataEntity[]      entityArray2 = e.Result.FindByEntityKey("FBillHead");
                    List <ExtendedDataEntity> list2        = new List <ExtendedDataEntity>();
                    foreach (ExtendedDataEntity entity in entityArray2)
                    {
                        Dictionary <long, ExtendedDataEntity> dictionary2 = new Dictionary <long, ExtendedDataEntity>();
                        foreach (DynamicObject obj3 in entity.DataEntity.GetDynamicValue <DynamicObjectCollection>("Entity", null))
                        {
                            Tuple <long, long> tuple;
                            long key = obj3.GetDynamicValue <long>("MaterialId_Id", 0L);
                            if (inspectorInfo.TryGetValue(key, out tuple))
                            {
                                long num2 = str2.EqualsIgnoreCase("B") ? tuple.Item1 : tuple.Item2;
                                if (dictionary2.Keys.Contains <long>(num2))
                                {
                                    dictionary2[num2].DataEntity.GetDynamicValue <DynamicObjectCollection>("Entity", null).Add(obj3);
                                }
                                else
                                {
                                    ExtendedDataEntity      entity2  = (ExtendedDataEntity)entity.Clone();
                                    DynamicObjectCollection objects3 = entity2.DataEntity.GetDynamicValue <DynamicObjectCollection>("Entity", null);
                                    objects3.Clear();
                                    objects3.Add(obj3);
                                    if (str2.EqualsIgnoreCase("B"))
                                    {
                                        entity2.DataEntity.SetDynamicObjectItemValue("InspectGroupId_Id", tuple.Item1);
                                    }
                                    else if (str2.EqualsIgnoreCase("C"))
                                    {
                                        entity2.DataEntity.SetDynamicObjectItemValue("InspectorId_Id", tuple.Item2);
                                    }
                                    dictionary2.Add(num2, entity2);
                                }
                            }
                        }
                        list2.AddRange(dictionary2.Values);
                        dictionary2.Clear();
                    }
                    DynamicObject[] col = (from s in list2 select s.DataEntity).ToArray <DynamicObject>();
                    if (!col.IsEmpty <DynamicObject>())
                    {
                        Kingdee.K3.MFG.App.AppServiceContext.DBService.LoadReferenceObject(base.Context, col, col.FirstOrDefault <DynamicObject>().DynamicObjectType, true);
                        for (int i = 0; i < entityArray2.Length; i++)
                        {
                            e.Result.RemoveExtendedDataEntity("FBillHead", 0);//原来e.Result.RemoveExtendedDataEntity("FBillHead",i)
                        }
                        e.Result.AddExtendedDataEntities("FBillHead", list2.ToArray());
                    }
                }
            }
        }
 public override void AfterConvert(AfterConvertEventArgs e)
 {
     base.AfterConvert(e);
 }
示例#12
0
        public override void AfterConvert(AfterConvertEventArgs e)
        {
            base.AfterConvert(e);

            if (ConvertFldKey == null || ConvertFldKey.Count == 0)
            {
                return;
            }

            Field lotFld = e.TargetBusinessInfo.GetField(this.LotNoFldKey);
            Field matFld = e.TargetBusinessInfo.GetField(this.MatFldKey);
            Field auxFld = e.TargetBusinessInfo.GetField(this.AuxPropFldKey);
            Field OrgFld = e.TargetBusinessInfo.GetField(this.OrgIdFldKey);//增加组织属性

            if (lotFld == null || matFld == null)
            {
                return;
            }



            ExtendedDataEntity[] HandDatas = e.Result.FindByEntityKey(OrgFld.EntityKey);//获取表单字段
            long OrgVal = 0;

            foreach (ExtendedDataEntity HandData in HandDatas)
            {
                if (OrgFld != null)//取组织值
                {
                    var Org = OrgFld.GetFieldValue(HandData.DataEntity) as DynamicObject;
                    if (Org != null)
                    {
                        OrgVal = Convert.ToInt64(Org["Id"]);
                    }
                }
                ExtendedDataEntity[] dataEntities = e.Result.FindByEntityKey(lotFld.EntityKey);
                foreach (ExtendedDataEntity item in dataEntities)
                {
                    var lotVal = lotFld.GetFieldValue(item.DataEntity);
                    if (lotVal == null || string.IsNullOrEmpty(lotVal.ToString()))
                    {
                        continue;
                    }
                    var matVal = matFld.GetFieldValue(item.DataEntity) as DynamicObject;
                    if (matVal == null)
                    {
                        continue;
                    }


                    JNQTYRatePara para = new JNQTYRatePara();
                    para.MaterialId     = Convert.ToInt64(matVal["Id"]);
                    para.MaterialNumber = Convert.ToString(matVal["Number"]);
                    para.LotNumber      = lotVal.ToString();
                    para.OrgId          = OrgVal;


                    if (auxFld != null)
                    {
                        var aux = auxFld.GetFieldValue(item.DataEntity) as DynamicObject;
                        if (aux != null)
                        {
                            para.AuxPropId = Convert.ToInt64(aux["Id"]);
                        }
                    }



                    decimal rate = YDLCommServiceHelper.MaterialUnitEnzymes(this.Context, para);
                    if (rate == 0)
                    {
                        continue;
                    }

                    foreach (var fld in ConvertFldKey)
                    {
                        Field srcQtyFld  = e.TargetBusinessInfo.GetField(fld.SrcQtyFldKey);
                        Field destQtyFld = e.TargetBusinessInfo.GetField(fld.DestQtyFldKey);
                        Field rateFld    = e.TargetBusinessInfo.GetField(fld.ConverRateFldKey);

                        if (srcQtyFld == null || destQtyFld == null || rateFld == null)
                        {
                            continue;
                        }

                        decimal srcQty = Convert.ToDecimal(srcQtyFld.DynamicProperty.GetValue(item.DataEntity));
                        rateFld.DynamicProperty.SetValue(item.DataEntity, rate);
                        destQtyFld.DynamicProperty.SetValue(item.DataEntity, rate * srcQty);
                    }
                }
            }
        }
示例#13
0
 public override void AfterConvert(AfterConvertEventArgs e)
 {
     base.AfterConvert(e);
     ServiceHelper.GetService <IMetaDataService>();
     ExtendedDataEntity[] array = e.Result.FindByEntityKey("FBillHead");
     for (int i = 0; i < array.Length; i++)
     {
         DynamicObjectCollection dynamicObjectCollection = array[i].DataEntity["TreeEntity"] as DynamicObjectCollection;
         for (int p = 0; p < dynamicObjectCollection.Count(); p++)
         {
             string        FMaterialId = Convert.ToString(dynamicObjectCollection[p]["MaterialId_Id"]); //物料编码
             DynamicObject bomObj      = dynamicObjectCollection[p]["BomId"] as DynamicObject;
             string        FNumber     = Convert.ToString(bomObj["Number"]);                            //BOM版本
             if (!String.IsNullOrEmpty(FMaterialId.Trim()) && !String.IsNullOrEmpty(FNumber.Trim()))
             {
                 DynamicObject obj = getdataObj(FMaterialId, FNumber);
                 if (obj != null)
                 {
                     double EC = Convert.ToDouble(obj["F_SCFG_EC"]);                   //延长米系数
                     dynamicObjectCollection[p]["F_scfg_EC"] = EC;
                     double num = Convert.ToDouble(dynamicObjectCollection[0]["Qty"]); //数量
                     double ycm = EC * num;
                     dynamicObjectCollection[p]["F_scfg_Qty1"] = ycm;                  //延长米
                     array[i]["F_scfg_MaterialId"]             = FMaterialId;          //物料编码
                     if (Convert.ToDouble(obj["F_SCFG_DIANYUN"]) != 0.00)
                     {
                         array[i]["F_scfg_Dianyun"] = getWorkHourData(ycm, Convert.ToDouble(obj["F_SCFG_DIANYUN"]));//电晕工时
                     }
                     if (Convert.ToDouble(obj["F_SCFG_YINSHUASHANGBAN"]) != 0.00)
                     {
                         array[i]["F_scfg_Yinshuashangban"] = getWorkHourData(ycm, Convert.ToDouble(obj["F_SCFG_YINSHUASHANGBAN"]));//印刷上版(min)
                     }
                     if (Convert.ToDouble(obj["F_SCFG_YINSHUA"]) != 0.00)
                     {
                         array[i]["F_scfg_Yinshua"] = getWorkHourData(ycm, Convert.ToDouble(obj["F_SCFG_YINSHUA"]));//印刷(m/min)
                     }
                     if (Convert.ToDouble(obj["F_SCFG_TUBU"]) != 0.00)
                     {
                         array[i]["F_scfg_Tubu"] = getWorkHourData(ycm, Convert.ToDouble(obj["F_SCFG_TUBU"]));//涂布(m/min)
                     }
                     if (Convert.ToDouble(obj["F_SCFG_FUHE1"]) != 0.00)
                     {
                         array[i]["F_scfg_Fuhe1"] = getWorkHourData(ycm, Convert.ToDouble(obj["F_SCFG_FUHE1"]));//复合一(m/min)
                     }
                     if (Convert.ToDouble(obj["F_SCFG_FUHE2"]) != 0.00)
                     {
                         array[i]["F_scfg_Fuhe2"] = getWorkHourData(ycm, Convert.ToDouble(obj["F_SCFG_FUHE2"]));//复合二(m/min)
                     }
                     if (Convert.ToDouble(obj["F_SCFG_FUHE3"]) != 0.00)
                     {
                         array[i]["F_scfg_Fuhe3"] = getWorkHourData(ycm, Convert.ToDouble(obj["F_SCFG_FUHE3"]));//复合三(m/min)
                     }
                     if (Convert.ToDouble(obj["F_SCFG_FENQIE"]) != 0.00)
                     {
                         array[i]["F_scfg_Fenqie"] = getWorkHourData(ycm, Convert.ToDouble(obj["F_SCFG_FENQIE"]));//分切(m/min)
                     }
                     if (Convert.ToDouble(obj["F_SCFG_FENQIEZL"]) != 0.00)
                     {
                         array[i]["F_scfg_Fenqiezl"] = getWorkHourFQData(num, Convert.ToDouble(obj["F_SCFG_FENQIEZL"]));//分切重量(kg/h)
                     }
                 }
             }
         }
     }
 }