/// <summary> /// 批量创建PO单: /// </summary> /// <param name="list"></param> public virtual BatchCreateBasketResultInfo BatchCreatePurchaseOrder(List <BasketItemsInfo> list) { List <ProductPMLine> tPMLineList = ExternalDomainBroker.GetProductLineInfoByPM(ServiceContext.Current.UserSysNo); bool tIsManager = list[0].IsManagerPM.Value; //如果没有产品线权限并且不是高级PM,则不允许创建 //if ((tPMLineList == null || tPMLineList.Count == 0) && !tIsManager) //{ // throw new BizException(GetMessageString("Basket_PMNoLine")); //} FillProductLineInfo(list); string createCompanyCode = string.Empty; var conditionList = new List <BasketItemsInfo>(); List <int> POSysNo = new List <int>(); string errorMsg = ""; //根据编号加载商品信息: string exceptionMsg = CheckBasketInfo(ref list); errorMsg += exceptionMsg; List <PurchaseOrderInfo> POs = new List <PurchaseOrderInfo>(); //if (!string.IsNullOrEmpty(exceptionMsg) || exceptionMsg.Length > 0) //{ // throw new BizException(exceptionMsg); //} list.ForEach(x => { //是否中转: if (x.IsTransfer == 1) { x.StockSysNo = 5000 + x.StockSysNo; } createCompanyCode = x.CompanyCode; }); //默认采购单类型为:正常;增值税率:0.17;结算货币:人民币(1);送货类型:厂房直送(12) var group = from item in list group item by new { item.IsConsign, item.StockSysNo, item.VendorSysNo, item.PMSysNo, item.IsTransfer, item.ProductLine_SysNo } into g select new { Key = g.Key, ResultList = g }; foreach (var item in group) { POs.Clear(); var ZPO = from i in item.ResultList where i.Quantity >= 0 select i; var FPO = from i in item.ResultList where i.Quantity < 0 select i; //正采购 #region ZPO if (ZPO.Count() > 0) { PurchaseOrderInfo modelPO = GetInitPO(createCompanyCode); modelPO.VendorInfo = VendorProcessor.LoadVendorInfo(item.Key.VendorSysNo.Value); modelPO.PurchaseOrderBasicInfo.ConsignFlag = (PurchaseOrderConsignFlag)Enum.Parse(typeof(PurchaseOrderConsignFlag), item.Key.IsConsign.Value.ToString()); if (null == modelPO.PurchaseOrderBasicInfo.StockInfo) { modelPO.PurchaseOrderBasicInfo.StockInfo = new BizEntity.Inventory.StockInfo(); } modelPO.PurchaseOrderBasicInfo.StockInfo.SysNo = item.Key.StockSysNo; if (null == modelPO.PurchaseOrderBasicInfo.ProductManager) { modelPO.PurchaseOrderBasicInfo.ProductManager = new BizEntity.IM.ProductManagerInfo(); } //注释原因:因加入产品线验证,此处的归属PM应为产品线的PM //modelPO.PurchaseOrderBasicInfo.ProductManager.SysNo = item.Key.PMSysNo; modelPO.PurchaseOrderBasicInfo.PurchaseOrderType = PurchaseOrderType.Normal; modelPO.PurchaseOrderBasicInfo.PayType.SysNo = VendorDA.LoadVendorPayPeriodType(item.Key.VendorSysNo); string companyCode = string.Empty; foreach (var POitem in ZPO) { modelPO.PurchaseOrderBasicInfo.PurchaseOrderType = PurchaseOrderType.Normal; //增加产品线和主PM字段回写 modelPO.PurchaseOrderBasicInfo.IsManagerPM = POitem.IsManagerPM; modelPO.PurchaseOrderBasicInfo.ProductManager.SysNo = POitem.PMSysNo; modelPO.PurchaseOrderBasicInfo.ProductLineSysNo = POitem.ProductLine_SysNo; modelPO.POItems.Add(new PurchaseOrderItemInfo() { ItemSysNo = POitem.ItemSysNo, ProductSysNo = POitem.ProductSysNo, Quantity = 0, ReadyQuantity = POitem.ReadyQuantity, OrderPrice = POitem.OrderPrice, ProductID = POitem.ProductID, PurchaseQty = POitem.Quantity, UnitCost = Decimal.Round(POitem.OrderPrice.Value * modelPO.PurchaseOrderBasicInfo.ExchangeRate.Value, 2), Weight = POitem.Weight, ApportionAddOn = 0, ReturnCost = 0, BriefName = POitem.BriefName, AvailableQty = BasketDA.AvailableQtyByProductSysNO(POitem.ProductSysNo.Value), M1 = BasketDA.M1ByProductSysNO(POitem.ProductSysNo.Value), JingDongPrice = BasketDA.JDPriceByProductSysNO(POitem.ProductSysNo.Value), CompanyCode = POitem.CompanyCode }); companyCode = POitem.CompanyCode; } modelPO.CompanyCode = companyCode; POs.Add(modelPO); } #endregion //负采购 #region FPO if (FPO.Count() > 0) { PurchaseOrderInfo modelPO = GetInitPO(createCompanyCode); modelPO.VendorInfo = VendorProcessor.LoadVendorInfo(item.Key.VendorSysNo.Value); modelPO.PurchaseOrderBasicInfo.ConsignFlag = (PurchaseOrderConsignFlag)Enum.Parse(typeof(PurchaseOrderConsignFlag), item.Key.IsConsign.Value.ToString()); modelPO.PurchaseOrderBasicInfo.StockInfo.SysNo = item.Key.StockSysNo; modelPO.PurchaseOrderBasicInfo.ProductManager.SysNo = item.Key.PMSysNo; modelPO.PurchaseOrderBasicInfo.PurchaseOrderType = PurchaseOrderType.Negative; modelPO.PurchaseOrderBasicInfo.PayType.SysNo = VendorDA.LoadVendorPayPeriodType(item.Key.VendorSysNo); modelPO.PurchaseOrderBasicInfo.MemoInfo.Memo = GetMessageString("Basket_Memo_FPO"); string companyCode = string.Empty; foreach (var POitem in FPO) { //增加产品线和主PM字段回写 modelPO.PurchaseOrderBasicInfo.IsManagerPM = POitem.IsManagerPM; modelPO.PurchaseOrderBasicInfo.ProductManager.SysNo = POitem.ProductLine_PMSysNo; modelPO.PurchaseOrderBasicInfo.ProductLineSysNo = POitem.ProductLine_SysNo; modelPO.POItems.Add(new PurchaseOrderItemInfo() { ItemSysNo = POitem.ItemSysNo, ProductSysNo = POitem.ProductSysNo, Quantity = 0, OrderPrice = POitem.OrderPrice, ProductID = POitem.ProductID, PurchaseQty = POitem.Quantity, UnitCost = Decimal.Round(POitem.OrderPrice.Value * modelPO.PurchaseOrderBasicInfo.ExchangeRate.Value, 2), Weight = POitem.Weight, ApportionAddOn = 0, ReturnCost = 0, BriefName = POitem.BriefName, AvailableQty = BasketDA.AvailableQtyByProductSysNO(POitem.ProductSysNo.Value), M1 = BasketDA.M1ByProductSysNO(POitem.ProductSysNo.Value), JingDongPrice = BasketDA.JDPriceByProductSysNO(POitem.ProductSysNo.Value), CompanyCode = POitem.CompanyCode }); companyCode = POitem.CompanyCode; } modelPO.CompanyCode = companyCode; POs.Add(modelPO); } #endregion int poItemCountNumber = 80; if (!string.IsNullOrEmpty(AppSettingManager.GetSetting("PO", "PoItemCountNumber"))) { poItemCountNumber = int.Parse(AppSettingManager.GetSetting("PO", "PoItemCountNumber")); } foreach (var poentity in POs) { try { if (poentity.PurchaseOrderBasicInfo.MemoInfo == null) { poentity.PurchaseOrderBasicInfo.MemoInfo = new PurchaseOrderMemoInfo(); } if (poentity.PurchaseOrderBasicInfo.ETATimeInfo == null) { poentity.PurchaseOrderBasicInfo.ETATimeInfo = new PurchaseOrderETATimeInfo(); } if (poentity.EIMSInfo == null) { poentity.EIMSInfo = new PurchaseOrderEIMSInfo() { EIMSInfoList = new List <EIMSInfo>() }; } if (poentity.ReceivedInfoList == null) { poentity.ReceivedInfoList = new List <PurchaseOrderReceivedInfo>(); } //如果在一个po单中Item超过80种,则自动拆分 每80种商品一单 if (poentity.POItems.Count > poItemCountNumber) { //string listvalue = SerializeHelper.JsonSerializer(poentity); PurchaseOrderInfo posResult = poentity; //SerializeHelper.JsonDeserialize<IPP.Oversea.CN.POASNMgmt.WebModel.ViewModels.PO.POModel>(listvalue); var poitems = new List <PurchaseOrderItemInfo>(); for (int i = 1; i <= poentity.POItems.Count; i++) { poitems.Add(poentity.POItems[i - 1]); if ((i % poItemCountNumber == 0 && i != 0) || i == poentity.POItems.Count) { posResult.POItems = poitems; var poResult = PurchaseOrderProcessor.CreatePO(posResult); POSysNo.Add(poResult.SysNo.Value); poitems.Clear(); } } } else { var poResult = PurchaseOrderProcessor.CreatePO(poentity); POSysNo.Add(poResult.SysNo.Value); } } catch (Exception ex) { errorMsg += ex.Message + Environment.NewLine; } } } return(new BatchCreateBasketResultInfo() { SucessPOSysNos = POSysNo, ErrorMsg = errorMsg }); }
public VendorInfo LoadVendorInfoBySysNo(int vendorSysNo) { return(VendorProcessor.LoadVendorInfo(vendorSysNo)); }