Ejemplo n.º 1
0
        public override object Do(object obj)
        {
            ConfirmSuItemBP bpObj = (ConfirmSuItemBP)obj;

            using (ISession session = Session.Open())
            {
                //确认包材子件信息
                foreach (long id in bpObj.BOMLineKeyList)
                {
                    OrderBomBE.OrderBomHead head = OrderBomBE.OrderBomHead.Finder.FindByID(id);
                    head.ArrirmState = bpObj.IsConfirm;
                }
                session.Commit();
            }

            return(true);
        }
        private static decimal GetPurchasePrice(int type, GS.FT.ShipPlanDetailBE.ShipPlanDetailLine shipLine, OrderBomBE.OrderBomHead bomLine)
        {
            decimal purchasePrice = 0;
            //取采购价,销售订单行-供应商计划-采购订单,取采购订单单价
            //UFIDA.U9.Cust.GS.SP.SupplyPlanBE.SupplyPlan plan = UFIDA.U9.Cust.GS.SP.SupplyPlanBE.SupplyPlan.Finder.Find("SOLineID=" + soLine.ID + "");
            //if (plan != null)
            //{
            //    //UFIDA.U9.PM.PO.PurchaseOrder
            //}
            DataSet       ds = new DataSet();
            StringBuilder sb = new StringBuilder();

            sb.Append(" select POLine.ID,POLine.FinallyPriceTC,PM.DescFlexField_PrivateDescSeg2 as PurchaseOrgCode,CBO_SI.DescFlexField_PrivateDescSeg10 as IsImport ");
            sb.Append(" from GS_SP_SupplyPlan SP ");
            sb.Append(" inner join GS_SP_SupplyPlanLine SPLine on SP.ID =SPLine.SupplyPlan");
            sb.Append(" inner join PM_PurchaseOrder PM on SPLine.PO=PM.ID");
            sb.Append(" inner join PM_POLine POLine on PM.ID=POLine.PurchaseOrder");
            sb.Append(" left  join CBO_SupplierItem CBO_SI on CBO_SI.SupplierInfo_Supplier=PM.Supplier_Supplier and CBO_SI.ItemInfo_ItemID=POLine.ItemInfo_ItemID");
            sb.Append(" where SP.SOLineID=" + shipLine.SrcLineID + " and POLine.ItemInfo_ItemID=" + shipLine.Item.ID + "");
            UFSoft.UBF.Util.DataAccess.DataAccessor.RunSQL(UFSoft.UBF.Util.DataAccess.DataAccessor.GetConn(), sb.ToString(), null, out ds);
            if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
            {
                if (type == 0 && (ds.Tables[0].Rows[0]["PurchaseOrgCode"].ToString() == "J003" || (ds.Tables[0].Rows[0]["IsImport"].ToString() != "" && ds.Tables[0].Rows[0]["IsImport"].ToString().ToLower() == "true")))
                {
                    //计算退税额,所有HK组织的采购不退税,进口件不退税
                    purchasePrice = 0;
                }
                else
                {
                    purchasePrice = decimal.Parse(ds.Tables[0].Rows[0]["FinallyPriceTC"].ToString());
                }
            }
            else
            {
                if (bomLine == null)
                {
                    throw new Exception("取不到出运明细单" + shipLine.ShipPlanDetailHead.DocNo + "行" + shipLine.RowNo + "对应料品采购合同价");
                }
                else
                {
                    throw new Exception("取不到出运明细单" + shipLine.ShipPlanDetailHead.DocNo + "行" + shipLine.RowNo + "对应料品子件" + bomLine.SubKey.Name + "采购合同价");
                }
                purchasePrice = 0;
            }
            return(purchasePrice);
        }
Ejemplo n.º 3
0
        public override object Do(object obj)
        {
            SOBomAddOrRemoveBP bpObj = (SOBomAddOrRemoveBP)obj;

            if (bpObj.InParams == null || bpObj.InParams.Count <= 0)
            {
                throw new Exception("未选择数据,请确认!");
            }
            using (ISession sesion = Session.Open())
            {
                #region 新增
                if (bpObj.ActionType == 0)
                {
                    OrderBomBE.OrderBomHead head = OrderBomBE.OrderBomHead.Finder.Find("OrderLine='" + bpObj.SOLineID + "' order by Tier desc");
                    if (head == null)
                    {
                        throw new Exception("未找到对应的销售订单行,请刷新!");
                    }
                    int firstTier  = Convert.ToInt32(head.Tier.Substring(0, head.Tier.IndexOf('.')));
                    int secondTier = Convert.ToInt32(head.Tier.Substring(head.Tier.IndexOf('.') + 1, head.Tier.Length - 2));
                    foreach (ReturnUpDownLineDto returnDTO in bpObj.InParams)
                    {
                        UFIDA.U9.Cust.GS.FT.OrderBomBE.OrderBomHead doc = UFIDA.U9.Cust.GS.FT.OrderBomBE.OrderBomHead.Create();
                        secondTier = secondTier + 1;
                        doc.Tier   = firstTier + "." + secondTier;

                        ItemMaster item = ItemMaster.Finder.Find("ID='" + returnDTO.ItemInfo_ItemID + "'");
                        if (item == null)
                        {
                            throw new Exception("找不到对应的料品,请刷新!");
                        }
                        doc.SubKey      = item;
                        doc.SubkeyType  = ItemCategory.Finder.Find("Code='03'");
                        doc.ArrirmState = false;
                        doc.ParentPart  = head.ParentPart;//母件
                        //doc.BomMaster = head.BomMaster;
                        //doc.BomCompont = dto.BomCompont;
                        doc.Dosage     = returnDTO.Qty;     //用量
                        doc.DosageUnit = item.InventoryUOM; //用量单位
                        doc.SellNumber = returnDTO.Qty;     //销售数量
                        doc.SellUnit   = item.SalesUOM;     //销售单位
                        doc.Loss       = 1;                 //固定损耗
                        doc.NeedNumber = returnDTO.Qty;     //需求数量
                        doc.SourceType = AllEnumBE.SourceTypeEnum.HandWork;
                        doc.OrderLine  = head.OrderLine;
                        doc.OrderHead  = head.OrderHead;
                        OrderBomBE.OrderBomLine line = OrderBomBE.OrderBomLine.Create(doc);
                        line.SalesMan = item.PurchaseInfo.Buyer;
                        //line.Department = lineDto.Department;
                        line.SubKey         = item;
                        line.NeedNumber     = returnDTO.Qty;
                        line.NeedUom        = item.InventoryUOM;
                        line.ProcurementQty = returnDTO.Qty;
                    }
                }
                #endregion
                #region  除
                if (bpObj.ActionType == 1)
                {
                    foreach (ReturnUpDownLineDto returnDTO in bpObj.InParams)
                    {
                        OrderBomBE.OrderBomHead head = OrderBomBE.OrderBomHead.Finder.FindByID(returnDTO.SoID.ID);
                        head.Remove();
                    }
                }
                #endregion
                sesion.Commit();
            }
            return(null);
        }