public void Notify(params object[] args)
        {
            if (args == null || args.Length == 0 || !(args[0] is UFSoft.UBF.Business.EntityEvent))
            {
                return;
            }
            if (args == null || args.Length == 0 || !(args[0] is UFSoft.UBF.Business.EntityEvent))
            {
                return;
            }
            BusinessEntity.EntityKey key = ((UFSoft.UBF.Business.EntityEvent)args[0]).EntityKey;
            if (key == null)
            {
                return;
            }
            UFIDA.U9.CBO.SCM.Item.ItemMaster holder = key.GetEntity() as UFIDA.U9.CBO.SCM.Item.ItemMaster;
            if (holder == null)
            {
                return;
            }
            ItemSubTable itemSub = ItemSubTable.Finder.Find("ItemMaster=" + holder.ID + "");

            if (itemSub != null)
            {
                using (ISession session = Session.Open())
                {
                    itemSub.Remove();
                    session.Commit();
                }
            }
        }
        private UFIDA.U9.CBO.SCM.Item.ItemMaster GetItemMaster(string code)
        {
            UFIDA.U9.CBO.SCM.Item.ItemMaster item = UFIDA.U9.CBO.SCM.Item.ItemMaster.Finder.Find("Code=@Code and Org=@Org", new OqlParam("Code", code), new OqlParam("Org", Context.LoginOrg.ID));

            if (item == null)
            {
                throw new Exception("子件料号【" + code + "】未下发到组织【" + Context.LoginOrg.Name + "】");
            }

            return(item);
        }
Beispiel #3
0
        private void Do_Notify(object[] args)
        {
            #region 从事件参数中取得当前业务实体

            if (args == null || args.Length == 0 || !(args[0] is UFSoft.UBF.Business.EntityEvent))
            {
                return;
            }
            BusinessEntity.EntityKey key = ((UFSoft.UBF.Business.EntityEvent)args[0]).EntityKey;
            if (key == null)
            {
                return;
            }
            UFIDA.U9.CBO.SCM.Item.ItemMaster holder = key.GetEntity() as UFIDA.U9.CBO.SCM.Item.ItemMaster;
            if (holder == null)
            {
                return;
            }

            #endregion
        }
        /// <summary>
        /// 获取料品的BOM清单
        /// </summary>
        /// <param name="soLine">销售订单行实体</param>
        /// <param name="itemCode">母件料号</param>
        /// <param name="date">日期</param>
        /// <param name="uom">母件的生产单位</param>
        /// <param name="orderByQtyTU">销售数量</param>
        /// <param name="saleUom">销售单位</param>
        /// <param name="demandQty">需求数量</param>
        /// <param name="entityList">随单BOM-DTO集合</param>
        /// <param name="i">层级</param>
        private void GetBomMaster(UFIDA.U9.SM.SO.SOLine soLine, string itemCode, DateTime date, long uom, decimal orderByQtyTU, UOM saleUom, decimal demandQty, List <UFIDA.U9.Cust.GS.FT.OrderBomBE.OrderBomHeadDTO> entityList, string i)
        {
            string strWhere = "ItemMaster.Code=@ItemCode and Org.Code=@Org and Status=2 and @Date >=EffectiveDate and @Date <=DisableDate and ProductUOM=@UOM";

            OqlParam[] appOqlparm = new OqlParam[] {
                new OqlParam("ItemCode", itemCode),
                new OqlParam("Org", "J001"),
                new OqlParam("Date", date),
                new OqlParam("UOM", uom)
            };
            UFIDA.U9.CBO.MFG.BOM.BOMMaster bom = UFIDA.U9.CBO.MFG.BOM.BOMMaster.Finder.Find(strWhere, appOqlparm);
            if (bom != null)
            {
                int n = 0;
                foreach (UFIDA.U9.CBO.MFG.BOM.BOMComponent bomCom in bom.BOMComponents)
                {
                    n++;
                    UFIDA.U9.Cust.GS.FT.OrderBomBE.OrderBomHeadDTO dto = new OrderBomBE.OrderBomHeadDTO();
                    dto.Tier = i.ToString() + "." + n.ToString();

                    #region 赋值
                    UFIDA.U9.CBO.SCM.Item.ItemMaster subItemMaster = GetItemMaster(bomCom.ItemMaster.Code);//子件
                    dto.SubKey     = subItemMaster;
                    dto.SubkeyType = subItemMaster.StockCategory;
                    //如果子件的库存分类为工具类子件,则自动勾选确认状态
                    if (subItemMaster.StockCategory != null && subItemMaster.StockCategory.Code == "02")
                    {
                        dto.ArrirmState = true;
                    }
                    dto.OrderHead  = soLine.SO;
                    dto.OrderLine  = soLine;
                    dto.ParentPart = GetItemMaster(bom.ItemMaster.Code);//母件
                    dto.BomMaster  = bom;
                    dto.BomCompont = bomCom;
                    dto.Dosage     = bomCom.UsageQty;                                                  //用量
                    dto.DosageUnit = bomCom.IssueUOM;                                                  //用量单位
                    dto.SellNumber = orderByQtyTU;                                                     //销售数量
                    dto.SellUnit   = saleUom;                                                          //销售单位
                    dto.Loss       = bomCom.FixedScrap;                                                //固定损耗

                    dto.NeedNumber   = Math.Ceiling(demandQty * (bomCom.UsageQty / bomCom.ParentQty)); //需求数量=母件的需求数量*子件用量/母件底数
                    dto.SourceType   = AllEnumBE.SourceTypeEnum.HandWork;
                    dto.OrderBomLine = new List <OrderBomBE.OrderBomLineDTO>();
                    if (subItemMaster.PurchaseInfo.Buyer != null)
                    {
                        OrderBomBE.OrderBomLineDTO lineDto = new OrderBomBE.OrderBomLineDTO();
                        lineDto.SalesMan = subItemMaster.PurchaseInfo.Buyer;
                        if (subItemMaster.PurchaseInfo.Buyer.Dept != null)
                        {
                            lineDto.Department = subItemMaster.PurchaseInfo.Buyer.Dept;
                        }
                        lineDto.SubKey         = subItemMaster;
                        lineDto.NeedNumber     = dto.NeedNumber;
                        lineDto.NeedUom        = dto.DosageUnit;
                        lineDto.ProcurementQty = dto.NeedNumber;
                        dto.OrderBomLine.Add(lineDto);
                    }
                    entityList.Add(dto);
                    #endregion

                    GetBomMaster(soLine, bomCom.ItemMaster.Code, date, bomCom.IssueUOM.ID, orderByQtyTU, saleUom, dto.NeedNumber, entityList, dto.Tier);
                }
            }
        }
Beispiel #5
0
 /// <summary>
 /// Constructor with Full Argument
 /// </summary>
 public OrderBomHeadDTO(System.Int64 iD, System.DateTime createdOn, System.String createdBy, System.DateTime modifiedOn, System.String modifiedBy, System.Int64 sysVersion, UFIDA.U9.CBO.MFG.BOM.BOMMaster bomMaster, UFIDA.U9.CBO.MFG.BOM.BOMComponent bomCompont, UFIDA.U9.CBO.SCM.Item.ItemMaster parentPart, UFIDA.U9.CBO.SCM.Item.ItemMaster subKey, System.Decimal dosage, UFIDA.U9.Base.UOM.UOM dosageUnit, System.Decimal sellNumber, UFIDA.U9.Base.UOM.UOM sellUnit, System.Decimal needNumber, UFIDA.U9.SM.SO.SOLine orderLine, UFIDA.U9.SM.SO.SO orderHead, System.Int32 orderLineRow, UFIDA.U9.Cust.GS.FT.AllEnumBE.SourceTypeEnum sourceType, System.String remark, UFIDA.U9.CBO.HR.Operator.Operators salesMan, UFIDA.U9.CBO.MFG.Enums.SupplyTypeEnum supplierType, System.String tier, System.Decimal loss, System.Boolean arrirmState, List <UFIDA.U9.Cust.GS.FT.OrderBomBE.OrderBomLineDTO> orderBomLine, UFIDA.U9.Base.FlexField.DescFlexField.DescFlexSegments descflexfield, UFIDA.U9.CBO.SCM.Item.ItemCategory subkeyType)
 {
     this.ID            = iD;
     this.CreatedOn     = createdOn;
     this.CreatedBy     = createdBy;
     this.ModifiedOn    = modifiedOn;
     this.ModifiedBy    = modifiedBy;
     this.SysVersion    = sysVersion;
     this.BomMaster     = bomMaster;
     this.BomCompont    = bomCompont;
     this.ParentPart    = parentPart;
     this.SubKey        = subKey;
     this.Dosage        = dosage;
     this.DosageUnit    = dosageUnit;
     this.SellNumber    = sellNumber;
     this.SellUnit      = sellUnit;
     this.NeedNumber    = needNumber;
     this.OrderLine     = orderLine;
     this.OrderHead     = orderHead;
     this.OrderLineRow  = orderLineRow;
     this.SourceType    = sourceType;
     this.Remark        = remark;
     this.SalesMan      = salesMan;
     this.SupplierType  = supplierType;
     this.Tier          = tier;
     this.Loss          = loss;
     this.ArrirmState   = arrirmState;
     this.OrderBomLine  = orderBomLine;
     this.Descflexfield = descflexfield;
     this.SubkeyType    = subkeyType;
 }
 /// <summary>
 /// Constructor with Full Argument
 /// </summary>
 public OrderBomLineDTO(System.Int64 iD, System.DateTime createdOn, System.String createdBy, System.DateTime modifiedOn, System.String modifiedBy, System.Int64 sysVersion, UFIDA.U9.CBO.HR.Operator.Operators salesMan, UFIDA.U9.CBO.HR.Department.Department department, UFIDA.U9.CBO.SCM.Item.ItemMaster subKey, System.Decimal needNumber, UFIDA.U9.Cust.GS.FT.OrderBomBE.OrderBomHeadDTO orderBomHead, UFIDA.U9.Base.FlexField.DescFlexField.DescFlexSegments descflexfield, UFIDA.U9.Base.UOM.UOM needUom, System.Decimal procurementQty, System.String memo)
 {
     this.ID             = iD;
     this.CreatedOn      = createdOn;
     this.CreatedBy      = createdBy;
     this.ModifiedOn     = modifiedOn;
     this.ModifiedBy     = modifiedBy;
     this.SysVersion     = sysVersion;
     this.SalesMan       = salesMan;
     this.Department     = department;
     this.SubKey         = subKey;
     this.NeedNumber     = needNumber;
     this.OrderBomHead   = orderBomHead;
     this.Descflexfield  = descflexfield;
     this.NeedUom        = needUom;
     this.ProcurementQty = procurementQty;
     this.Memo           = memo;
 }