Exemplo n.º 1
0
        public static PurchaseOrderInfo CreatePO(PurchaseOrderInfo poInfo)
        {
            //获取ExchangeRate:
            poInfo.PurchaseOrderBasicInfo.CurrencyCode = 1;
            CurrencyInfo localCurrency = CommonService.GetCurrencyBySysNo(poInfo.PurchaseOrderBasicInfo.CurrencyCode.Value);

            poInfo.PurchaseOrderBasicInfo.ExchangeRate        = localCurrency.ExchangeRate;
            poInfo.PurchaseOrderBasicInfo.PurchaseOrderStatus = PurchaseOrderStatus.Created;
            poInfo.PurchaseOrderBasicInfo.PurchaseOrderType   = PurchaseOrderType.Normal;
            ////SellerPortal创建的采购单的账期属性为代销
            //采购单代销属性从供应商上取得
            //poInfo.PurchaseOrderBasicInfo.ConsignFlag = PurchaseOrderConsignFlag.Consign;
            poInfo.PurchaseOrderBasicInfo.TaxRateType = PurchaseOrderTaxRate.Percent000;
            poInfo.PurchaseOrderBasicInfo.TaxRate     = ((decimal)poInfo.PurchaseOrderBasicInfo.TaxRateType) / 100;
            PreCheckCreatePO(poInfo);

            List <PurchaseOrderItemInfo> poItems = new List <PurchaseOrderItemInfo>();

            foreach (var item in poInfo.POItems)
            {
                PurchaseOrderItemInfo poItem = AddNewPurchaseOrderItem(new PurchaseOrderItemProductInfo()
                {
                    SysNo          = item.ProductSysNo.Value,
                    ProductID      = item.ProductID,
                    PrePurchaseQty = item.PrePurchaseQty.Value,
                    PurchasePrice  = item.PurchasePrice.Value
                }, int.Parse(poInfo.VendorInfo.VendorID));
                poItems.Add(poItem);
            }
            poInfo.POItems = poItems;
            poInfo.PurchaseOrderBasicInfo.TotalAmt = poInfo.POItems.Sum(item => item.OrderPrice.Value * item.PrePurchaseQty.Value);

            using (ITransaction trans = ECommerce.Utility.TransactionManager.Create())
            {
                //设置初始化值:
                poInfo.SysNo = ProductPurchaseDA.CreatePOSequenceSysNo();
                poInfo.PurchaseOrderBasicInfo.PurchaseOrderID = poInfo.SysNo.Value.ToString();
                poInfo.PurchaseOrderBasicInfo.CreateDate      = System.DateTime.Now;
                poInfo.PurchaseOrderBasicInfo.IsApportion     = 0;

                //创建操作:
                ProductPurchaseDA.CreatePO(poInfo);
                //ETA时间申请
                poInfo.PurchaseOrderBasicInfo.ETATimeInfo.POSysNo = poInfo.SysNo;
                poInfo.PurchaseOrderBasicInfo.ETATimeInfo.Status  = 1;
                poInfo.PurchaseOrderBasicInfo.ETATimeInfo.InUser  = poInfo.InUserName;
                ProductPurchaseDA.CreatePOETAInfo(poInfo.PurchaseOrderBasicInfo.ETATimeInfo);
                foreach (PurchaseOrderItemInfo item in poInfo.POItems)
                {
                    item.Quantity = 0;
                    //将采购数量初始化为PrePurchaseQty
                    item.PurchaseQty = item.PrePurchaseQty;
                    item.POSysNo     = poInfo.SysNo;
                    //创建PO Item:
                    ProductPurchaseDA.CreatePOItem(item);
                }
                trans.Complete();
            }

            return(poInfo);
        }