private InventoryAdjustContractInfo BuildAdjustContractInfoForVoidSO(string orderSysNo)
        {
            //根据orderSysNo获取原订单的商品,构造调库ContractInfo
            InventoryAdjustContractInfo contractInfoForVoidSO = new InventoryAdjustContractInfo();

            return(contractInfoForVoidSO);
        }
Example #2
0
        private void TestInventoryAdjustTemp()
        {
            InventoryAdjustContractInfo adjustContractInfo = new InventoryAdjustContractInfo();

            adjustContractInfo.ReferenceSysNo = "111";
            adjustContractInfo.AdjustItemList = new List <InventoryAdjustItemInfo>();

            InventoryAdjustItemInfo adjustItem1 = new InventoryAdjustItemInfo()
            {
                ProductSysNo   = 36492,
                StockSysNo     = 51,
                AdjustQuantity = 2
            };
            InventoryAdjustItemInfo adjustItem2 = new InventoryAdjustItemInfo()
            {
                ProductSysNo   = 999998,
                StockSysNo     = 51,
                AdjustQuantity = -9
            };

            adjustContractInfo.AdjustItemList.Add(adjustItem1);
            adjustContractInfo.AdjustItemList.Add(adjustItem2);

            adjustContractInfo.SourceBizFunctionName = InventoryAdjustSourceBizFunction.SO_Order;
            adjustContractInfo.SourceActionName      = InventoryAdjustSourceAction.Create;
            Object r61 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);
        }
        public virtual string ProcessAdjustContract(InventoryAdjustContractInfo adjustContractInfo)
        {
            InventoryAdjustSourceBizFunction sourceBizFunction = adjustContractInfo.SourceBizFunctionName;

            IProductInventoryAdjustProcessor productInventoryAdjustProcessor = ObjectFactory <ProductInventoryAdjustProcessorFactory> .Instance.CreateProductInventoryAdjustProcessor(sourceBizFunction);

            productInventoryAdjustProcessor.AdjustProductInventory(adjustContractInfo);
            return(productInventoryAdjustProcessor.AdjustResultMsg);
        }
Example #4
0
        public void Test_AdjustProductInventory()
        {
            InventoryAdjustContractProcessor process = new InventoryAdjustContractProcessor();
            InventoryAdjustContractInfo      entity  = new InventoryAdjustContractInfo();

            entity.SourceBizFunctionName = InventoryAdjustSourceBizFunction.PO_Order;
            entity.SourceActionName      = InventoryAdjustSourceAction.Audit;
            process.ProcessAdjustContract(entity);
        }
Example #5
0
        /// <summary>
        /// 调整商品库存统一接口
        /// </summary>
        /// <param name="productInventoryAdjustInfo">商品库存调整统一格式合约信息</param>
        /// <returns>IsSucceed</returns>
        public virtual bool AdjustProductInventory(InventoryAdjustContractInfo inventoryAdjustContractInfo)
        {
            string adjustResult = ObjectFactory <InventoryAdjustContractProcessor> .Instance.ProcessAdjustContract(inventoryAdjustContractInfo);

            if (!string.IsNullOrEmpty(adjustResult))
            {
                throw new BizException(adjustResult);
            }
            return(true);
        }
Example #6
0
        //删除未出库的Item
        /// <summary>
        /// 删除未出库的Item
        /// </summary>
        /// <param name="soItems">订单子项</param>
        /// <param name="outStock">已出库仓库集合,以逗号隔开</param>
        private void DeleteOrderItem4UpdatePending(List <SOItemInfo> soItems, int soSysNo, string outStock)
        {
            if (null == soItems)
            {
                return;
            }
            //调整库存请求
            InventoryAdjustContractInfo req = new InventoryAdjustContractInfo();

            req.ReferenceSysNo        = soSysNo.ToString();
            req.SourceBizFunctionName = InventoryAdjustSourceBizFunction.SO_Order;
            req.SourceActionName      = InventoryAdjustSourceAction.Pending;

            req.AdjustItemList = new List <InventoryAdjustItemInfo>();

            soItems.ForEach(x =>
            {
                if (x.ProductType.HasValue &&
                    x.ProductType.Value != SOProductType.Coupon &&
                    x.ProductType.Value != SOProductType.ExtendWarranty &&
                    outStock.IndexOf(x.StockSysNo.ToString()) < 0)
                {
                    req.AdjustItemList.Add(new InventoryAdjustItemInfo()
                    {
                        ProductSysNo = x.ProductSysNo.Value
                        ,
                        StockSysNo = x.StockSysNo.Value
                        ,
                        AdjustQuantity = -x.Quantity.Value
                    });
                    //删除未出库的SOItem
                    ObjectFactory <ISODA> .Instance.DeleteSOItemBySysNo(x.SysNo.Value);
                }
            });

            //更新仓库信息
            try
            {
                ExternalDomainBroker.AdjustProductInventory(req);
            }
            catch
            {
                BizExceptionHelper.Throw("SO_Pending_AdjustInventoryFail");
            }
        }
Example #7
0
        //private static void EIMSOper(POEntity PO)
        //{
        //    IEIMSInterfaceService service = null;
        //    try
        //    {
        //        service = ServiceBroker.FindService<IEIMSInterfaceService>(Settings.ConsumerName, Settings.EIMSLocationName);
        //        EIMSMessage<POAttachInfo> entity = new EIMSMessage<POAttachInfo>()
        //        {
        //            Header = new EIMSMessageHeader()
        //            {
        //                UserID = "493",
        //                CompanyCode = Settings.CompanyCode
        //            },
        //            Body = new POAttachInfo()
        //            {
        //                PONumber = PO.SysNo,
        //                InvoiceNumber = PO.PM_ReturnPointSysNo,
        //                UseInvoiceAmount = PO.UsingReturnPoint * -1,
        //                PostTime = System.DateTime.Now,
        //                UseTime = System.DateTime.Now,
        //                C3SysNo = PO.ReturnPointC3SysNo
        //            }
        //        };
        //        var result = service.PostPOCancel(entity);
        //        if (!result.IsSucceed)
        //        {
        //            throw new Exception(result.Error);
        //        }
        //        OnShowInfo(string.Format("采购单{0}需要调整返点成功", PO.SysNo));
        //    }
        //    catch (Exception e)
        //    {
        //        throw e;
        //    }
        //    finally
        //    {
        //        ServiceBroker.DisposeService<IEIMSInterfaceService>(service);
        //    }
        //}
        //public static void EIMSOper(List<POAttachInfo> poAttachEntitys, string userSysNo, int poSysNo)
        //{
        //    EIMSMessageResult returnValue = null;
        //    IEIMSInterfaceService service = null;
        //    try
        //    {
        //        EIMSMessage<List<POAttachInfo>> entity = new EIMSMessage<List<POAttachInfo>>
        //        {
        //            Header = new EIMSMessageHeader()
        //            {
        //                UserID = userSysNo,
        //                CompanyCode = Settings.CompanyCode
        //            },
        //            Body = poAttachEntitys
        //        };

        //        service = ServiceBroker.FindService<IEIMSInterfaceService>(Settings.ConsumerName, Settings.EIMSLocationName);
        //        returnValue = service.PostPOCancel(entity);
        //        if (!returnValue.IsSucceed)
        //        {
        //            throw new Exception(returnValue.Error);
        //        }
        //        OnShowInfo(string.Format("采购单{0}需要调整返点成功", poSysNo));
        //    }
        //    finally
        //    {
        //        ServiceBroker.DisposeService<IEIMSInterfaceService>(service);
        //    }
        //}

        private static void InventoryOper(POEntity poInfo)
        {
            InventoryAdjustContractInfo info = new InventoryAdjustContractInfo();

            info.SourceActionName      = InventoryAdjustSourceAction.AbandonForPO;
            info.SourceBizFunctionName = InventoryAdjustSourceBizFunction.PO_Order;
            info.AdjustItemList        = new List <InventoryAdjustItemInfo>();
            info.ReferenceSysNo        = poInfo.SysNo.ToString();
            foreach (var item in poInfo.Items)
            {
                info.AdjustItemList.Add(new InventoryAdjustItemInfo
                {
                    AdjustQuantity = -1 * item.PurchaseQty,
                    ProductSysNo   = item.ProductSysNo,
                    StockSysNo     = poInfo.StockSysNo
                });
            }

            string baseUrl      = System.Configuration.ConfigurationManager.AppSettings["PORestFulBaseUrl"];
            string languageCode = System.Configuration.ConfigurationManager.AppSettings["LanguageCode"];
            string companyCode  = System.Configuration.ConfigurationManager.AppSettings["CompanyCode"];

            ECCentral.Job.Utility.RestClient       client = new ECCentral.Job.Utility.RestClient(baseUrl, languageCode);
            ECCentral.Job.Utility.RestServiceError error;
            var ar = client.Update("/PurchaseOrder/AdjustPurchaseOrderQtyInventory", info, out error);

            if (error != null && error.Faults != null && error.Faults.Count > 0)
            {
                string errorMsg = "";
                foreach (var errorItem in error.Faults)
                {
                    errorMsg += errorItem.ErrorDescription;
                }
                Logger.WriteLog(errorMsg, "JobConsole");
            }
        }
Example #8
0
 public virtual void AdjustProductInventory(InventoryAdjustContractInfo adjustContractInfo)
 {
     this.AdjustContractInfo = adjustContractInfo;
     ProcessAdjustContractInfo();
 }
Example #9
0
        /// <summary>
        /// 损益单出库 (确认成功):
        /// </summary>
        /// <param name="adjustRequestSysNo">原始损益单编号</param>
        /// <param name="productSysNo">损益商品编号</param>
        /// <param name="realAdjustQty">该商品的实际损益数量</param>
        /// <returns></returns>
        public static AdjustRequestInfo AdjustOutStock(int adjustRequestSysNo, int?productSysNo, int?realAdjustQty, int sellerSysNo)
        {
            var adjustRequestInfo = GetAdjustRequestInfoBySysNo(adjustRequestSysNo);


            #region Check操作 :
            if (null == adjustRequestInfo || adjustRequestInfo.SysNo <= 0)
            {
                throw new BusinessException(string.Format("找不到编号为{0}的损益单据信息!", adjustRequestSysNo));
            }

            if (productSysNo.HasValue && realAdjustQty.HasValue)
            {
                var productItemInfo = adjustRequestInfo.AdjustItemInfoList.FirstOrDefault(x => x.ProductSysNo == productSysNo);
                if (productItemInfo == null)
                {
                    throw new BusinessException(string.Format("编号为{0}的商品不存在于该损益单中!损益单编号 :{1}", productSysNo, adjustRequestSysNo));
                }
                if (realAdjustQty >= 0)
                {
                    if (realAdjustQty > productItemInfo.AdjustQuantity)
                    {
                        throw new BusinessException(string.Format("编号为{0}的商品实际损益的数量大于预损益的数量!损益单编号 :{1}", productSysNo, adjustRequestSysNo));
                    }
                }
                else
                {
                    if (realAdjustQty < productItemInfo.AdjustQuantity)
                    {
                        throw new BusinessException(string.Format("编号为{0}的商品实际损益的数量大于预损益的数量!损益单编号 :{1}", productSysNo, adjustRequestSysNo));
                    }
                }
            }

            var stockInfo = StockService.LoadStock(adjustRequestInfo.Stock.SysNo);
            if (null == stockInfo)
            {
                throw new BusinessException("损益单据关联的仓库编号无效!");
            }
            if (stockInfo.MerchantSysNo != sellerSysNo)
            {
                throw new BusinessException("此商家无权操作此单据!");
            }

            //增加损益单状态Check (已申报状态):
            if (adjustRequestInfo.RequestStatus != AdjustRequestStatus.Reported)
            {
                throw new BusinessException(string.Format("损益单编号 :{1},当前单据的状态不是'已申报'状态,不能进行损益单确认操作", productSysNo, adjustRequestSysNo));
            }

            #endregion

            bool isConsign = false;
            adjustRequestInfo.OutStockDate  = DateTime.Now;
            adjustRequestInfo.RequestStatus = Enums.AdjustRequestStatus.OutStock;
            isConsign = (adjustRequestInfo.ConsignFlag == RequestConsignFlag.Consign || adjustRequestInfo.ConsignFlag == RequestConsignFlag.GatherPay);
            var inventoryAdjustContract = new InventoryAdjustContractInfo
            {
                SourceBizFunctionName = InventoryAdjustSourceBizFunction.Inventory_AdjustRequest,
                SourceActionName      = InventoryAdjustSourceAction.OutStock,
                ReferenceSysNo        = adjustRequestInfo.SysNo.ToString(),
                AdjustItemList        = new List <InventoryAdjustItemInfo>()
            };

            using (TransactionScope scope = new TransactionScope())
            {
                if (adjustRequestInfo.AdjustItemInfoList != null && adjustRequestInfo.AdjustItemInfoList.Count > 0)
                {
                    adjustRequestInfo.AdjustItemInfoList.ForEach(adjustItem =>
                    {
                        //if (adjustItem.AdjustProduct.ProductPriceInfo == null)
                        //{
                        //    BizExceptionHelper.Throw("Common_CannotFindPriceInformation");
                        //    throw new BusinessException("损益数量只能为非0的整数!");
                        //}
                        if (adjustItem.AdjustQuantity == 0)
                        {
                            throw new BusinessException("损益数量只能为非0的整数!");
                        }

                        var cost = InventoryDA.GetItemCost(adjustItem.ProductSysNo.Value);
                        inventoryAdjustContract.AdjustItemList.Add(new InventoryAdjustItemInfo
                        {
                            AdjustQuantity = adjustItem.AdjustQuantity.Value,
                            ProductSysNo   = adjustItem.ProductSysNo.Value,
                            StockSysNo     = (int)adjustRequestInfo.Stock.SysNo,
                            AdjustUnitCost = cost,
                        });

                        //update flash item unit cost
                        if (adjustItem.AdjustCost != cost)
                        {
                            adjustItem.AdjustCost = cost;
                            InventoryDA.UpdateAdjustItemCost(adjustItem);
                        }
                    });
                }
                InventoryDA.UpdateAdjustRequestStatus(adjustRequestInfo);

                if (inventoryAdjustContract.AdjustItemList.Count > 0)
                {
                    //string adjustResult = ObjectFactory<InventoryAdjustContractProcessor>.Instance.ProcessAdjustContract(inventoryAdjustContract);
                    //if (!string.IsNullOrEmpty(adjustResult))
                    //{
                    //    throw new BizException("库存调整失败: " + adjustResult);
                    //}


                    #region 调整库存:

                    foreach (InventoryAdjustItemInfo adjustItem in inventoryAdjustContract.AdjustItemList)
                    {
                        ProductQueryInfo productInfo = ProductService.GetProductBySysNo(adjustItem.ProductSysNo);
                        if (productInfo == null || productInfo.SysNo <= 0)
                        {
                            throw new BusinessException(string.Format("欲调库存的商品不存在,商品编号:{0}", adjustItem.ProductSysNo));
                        }
                        InventoryDA.InitProductInventoryInfo(adjustItem.ProductSysNo, adjustItem.StockSysNo);
                        var inventoryType = InventoryDA.GetProductInventroyType(adjustItem.ProductSysNo);
                        ECommerce.Entity.Inventory.ProductInventoryInfo stockInventoryCurrentInfo = InventoryDA.GetProductInventoryInfoByStock(adjustItem.ProductSysNo, adjustItem.StockSysNo);
                        ECommerce.Entity.Inventory.ProductInventoryInfo totalInventoryCurrentInfo = InventoryDA.GetProductTotalInventoryInfo(adjustItem.ProductSysNo);

                        ECommerce.Entity.Inventory.ProductInventoryInfo stockInventoryAdjustInfo = new Entity.Inventory.ProductInventoryInfo()
                        {
                            ProductSysNo = adjustItem.ProductSysNo,
                            StockSysNo   = adjustItem.StockSysNo
                        };

                        ECommerce.Entity.Inventory.ProductInventoryInfo totalInventoryAdjustInfo = new ECommerce.Entity.Inventory.ProductInventoryInfo()
                        {
                            ProductSysNo = adjustItem.ProductSysNo
                        };


                        if (adjustItem.AdjustQuantity < 0)
                        {
                            //损单出库
                            if (adjustRequestInfo.ConsignFlag == RequestConsignFlag.Consign || adjustRequestInfo.ConsignFlag == RequestConsignFlag.GatherPay)
                            {
                                //代销商品, 恢复可用库存, 减少已分配库存/代销库存
                                stockInventoryAdjustInfo.AvailableQty = -adjustItem.AdjustQuantity;
                                totalInventoryAdjustInfo.AvailableQty = -adjustItem.AdjustQuantity;

                                if (adjustItem.AdjustQuantity < 0)
                                {
                                    //AllocatedQty(-,->0),小于0则自动调为0。
                                    if (stockInventoryCurrentInfo.AllocatedQty + adjustItem.AdjustQuantity < 0)
                                    {
                                        stockInventoryAdjustInfo.AllocatedQty = -stockInventoryCurrentInfo.AllocatedQty;
                                    }
                                    else
                                    {
                                        stockInventoryAdjustInfo.AllocatedQty = adjustItem.AdjustQuantity;
                                    }

                                    if (totalInventoryCurrentInfo.AllocatedQty + adjustItem.AdjustQuantity < 0)
                                    {
                                        totalInventoryAdjustInfo.AllocatedQty = -totalInventoryCurrentInfo.AllocatedQty;
                                    }
                                    else
                                    {
                                        totalInventoryAdjustInfo.AllocatedQty = adjustItem.AdjustQuantity;
                                    }
                                }
                                else
                                {
                                    stockInventoryAdjustInfo.AllocatedQty = adjustItem.AdjustQuantity;
                                    totalInventoryAdjustInfo.AllocatedQty = adjustItem.AdjustQuantity;
                                }

                                stockInventoryAdjustInfo.ConsignQty = adjustItem.AdjustQuantity;
                                totalInventoryAdjustInfo.ConsignQty = adjustItem.AdjustQuantity;
                            }
                            else
                            {
                                //非代销商品, 减少财务库存/已分配库存
                                stockInventoryAdjustInfo.AccountQty = adjustItem.AdjustQuantity;
                                totalInventoryAdjustInfo.AccountQty = adjustItem.AdjustQuantity;

                                if (adjustItem.AdjustQuantity < 0)
                                {
                                    //AllocatedQty(-,->0),小于0则自动调为0。
                                    if (stockInventoryCurrentInfo.AllocatedQty + adjustItem.AdjustQuantity < 0)
                                    {
                                        stockInventoryAdjustInfo.AllocatedQty = -stockInventoryCurrentInfo.AllocatedQty;
                                    }
                                    else
                                    {
                                        stockInventoryAdjustInfo.AllocatedQty = adjustItem.AdjustQuantity;
                                    }

                                    if (totalInventoryCurrentInfo.AllocatedQty + adjustItem.AdjustQuantity < 0)
                                    {
                                        totalInventoryAdjustInfo.AllocatedQty = -totalInventoryCurrentInfo.AllocatedQty;
                                    }
                                    else
                                    {
                                        totalInventoryAdjustInfo.AllocatedQty = adjustItem.AdjustQuantity;
                                    }
                                }
                                else
                                {
                                    stockInventoryAdjustInfo.AllocatedQty = adjustItem.AdjustQuantity;
                                    totalInventoryAdjustInfo.AllocatedQty = adjustItem.AdjustQuantity;
                                }
                            }
                        }
                        else
                        {
                            //溢单出库
                            if (adjustRequestInfo.ConsignFlag == RequestConsignFlag.Consign || adjustRequestInfo.ConsignFlag == RequestConsignFlag.GatherPay)
                            {
                                //代销商品, 增加代销库存 (损/溢单都增加代销库存?)
                                stockInventoryAdjustInfo.ConsignQty = adjustItem.AdjustQuantity;
                                totalInventoryAdjustInfo.ConsignQty = adjustItem.AdjustQuantity;
                            }
                            else
                            {
                                //非代销商品, 增加财务库存/可用库存
                                stockInventoryAdjustInfo.AccountQty   = adjustItem.AdjustQuantity;
                                totalInventoryAdjustInfo.AccountQty   = adjustItem.AdjustQuantity;
                                stockInventoryAdjustInfo.AvailableQty = adjustItem.AdjustQuantity;
                                totalInventoryAdjustInfo.AvailableQty = adjustItem.AdjustQuantity;
                            }
                        }

                        //预检调整后的商品库存是否合法
                        Entity.Inventory.ProductInventoryInfo stockInventoryAdjustAfterAdjust = InventoryService.PreCalculateInventoryAfterAdjust(stockInventoryCurrentInfo, stockInventoryAdjustInfo);
                        Entity.Inventory.ProductInventoryInfo totalInventoryAdjustAfterAdjust = InventoryService.PreCalculateInventoryAfterAdjust(totalInventoryCurrentInfo, totalInventoryAdjustInfo);

                        bool isNeedCompareAvailableQtyAndAccountQty = true;
                        InventoryService.PreCheckGeneralRules(stockInventoryAdjustAfterAdjust, ref isNeedCompareAvailableQtyAndAccountQty);
                        InventoryService.PreCheckGeneralRules(totalInventoryAdjustAfterAdjust, ref isNeedCompareAvailableQtyAndAccountQty);

                        //调整商品库存:
                        InventoryDA.AdjustProductStockInventoryInfo(stockInventoryAdjustInfo);
                        InventoryDA.AdjustProductTotalInventoryInfo(totalInventoryAdjustInfo);
                    }
                    #endregion

                    #region 损益单为代销类型,出库时需要写入代销转财务日志
                    if (isConsign)
                    {
                        List <ConsignToAcctLogInfo> acctLogInfoList = new List <ConsignToAcctLogInfo>();
                        adjustRequestInfo.AdjustItemInfoList.ForEach(x =>
                        {
                            ConsignToAcctLogInfo acctLog = new ConsignToAcctLogInfo();
                            acctLog.ProductSysNo         = x.ProductSysNo;
                            acctLog.StockSysNo           = adjustRequestInfo.Stock.SysNo;
                            acctLog.VendorSysNo          = InventoryDA.GetProductBelongVendorSysNo(x.ProductSysNo.Value);
                            acctLog.ProductQuantity      = -x.AdjustQuantity;
                            acctLog.OutStockTime         = adjustRequestInfo.OutStockDate;
                            acctLog.CreateCost           = x.AdjustCost;
                            acctLog.OrderSysNo           = adjustRequestInfo.SysNo;
                            acctLog.CompanyCode          = adjustRequestInfo.CompanyCode;
                            acctLog.StoreCompanyCode     = adjustRequestInfo.CompanyCode;
                            acctLog.IsConsign            = (int)adjustRequestInfo.ConsignFlag;
                            acctLogInfoList.Add(acctLog);
                        });

                        if (acctLogInfoList.Count > 0)
                        {
                            foreach (var item in acctLogInfoList)
                            {
                                InventoryDA.CreatePOConsignToAccLogForInventory(item);
                            }
                        }
                    }
                    #endregion

                    #region
                    string InUser = "******";
                    List <InventoryBatchDetailsInfo> batchDetailsInfoEntitylist = InventoryDA.GetBatchDetailsInfoEntityListByNumber(adjustRequestInfo.SysNo.Value);
                    if (batchDetailsInfoEntitylist != null && batchDetailsInfoEntitylist.Count > 0)
                    {
                        #region 构建损益单 出库调整批次库存表的SSB消息 调整库存
                        List <ItemBatchInfo> itemBatchInfoList = new List <ItemBatchInfo>();
                        foreach (var item in batchDetailsInfoEntitylist)
                        {
                            ItemBatchInfo itemBatchInfo = new ItemBatchInfo();
                            itemBatchInfo.BatchNumber   = item.BatchNumber;
                            itemBatchInfo.ProductNumber = item.ProductSysNo.ToString();
                            Stock stock = new Stock();
                            AdjustRequestItemInfo aEntity = new AdjustRequestItemInfo();
                            aEntity = adjustRequestInfo.AdjustItemInfoList.Find(x => { return(x.ProductSysNo == item.ProductSysNo); });
                            if (aEntity != null && aEntity.AdjustQuantity > 0)
                            {
                                stock.Quantity     = item.Quantity.ToString(); //单据出库两个数量都要调整
                                stock.AllocatedQty = string.Empty;             //益单不调 占用库存 作废 取消作废 单据 只调整 占用库存
                            }
                            else
                            {
                                stock.Quantity     = item.Quantity.ToString(); //单据出库两个数量都要调整
                                stock.AllocatedQty = item.Quantity.ToString(); //损单 需要调整 占用库存 作废 取消作废 单据 只调整 占用库存
                            }
                            stock.WarehouseNumber = item.StockSysNo.ToString();
                            List <Stock> StockList = new List <Stock>();
                            StockList.Add(stock);

                            Stocks stocks = new Stocks();
                            stocks.Stock = StockList;

                            itemBatchInfo.Stocks = stocks;
                            itemBatchInfoList.Add(itemBatchInfo);
                        }
                        BatchXMLMessage batchXMLMessage = new BatchXMLMessage()
                        {
                            Header = new InventoryHeader
                            {
                                NameSpace          = "http://soa.ECommerce.com/InventoryProfile",
                                Action             = "OutStock",
                                Version            = "V10",
                                Type               = "Adjust",
                                CompanyCode        = "8601",
                                Tag                = "AdjustOutStock",
                                Language           = "zh-CN",
                                From               = "IPP",
                                GlobalBusinessType = "Listing",
                                StoreCompanyCode   = "8601",
                                TransactionCode    = adjustRequestInfo.SysNo.ToString()
                            },
                            Body = new InventoryBody
                            {
                                InUser        = InUser,
                                Number        = adjustRequestInfo.SysNo.ToString(),
                                ItemBatchInfo = itemBatchInfoList
                            }
                        };
                        string      paramXml = SerializationUtility.XmlSerialize(batchXMLMessage);
                        XmlDocument xmlD     = new XmlDocument();
                        xmlD.LoadXml(paramXml);
                        paramXml = "<" + xmlD.DocumentElement.Name + ">" + xmlD.DocumentElement.InnerXml + "</" + xmlD.DocumentElement.Name + ">";

                        InventoryDA.AdjustBatchNumberInventory(paramXml);//调整批次库存表 占用数量
                        #endregion
                    }
                    List <InventoryAdjustItemInfo> adjustCaseEntityList = new List <InventoryAdjustItemInfo>();
                    foreach (var item in inventoryAdjustContract.AdjustItemList)
                    {
                        if (!InventoryDA.CheckISBatchNumberProduct(item.ProductSysNo))
                        {
                            item.AdjustQuantity = item.AdjustQuantity;

                            adjustCaseEntityList.Add(item);
                        }
                    }
                    AdjustSendSSBToWMS(adjustRequestInfo.SysNo.Value, adjustRequestInfo.Stock.SysNo.ToString(), batchDetailsInfoEntitylist, adjustCaseEntityList);//损益单出库向仓库发送SSB消息

                    #endregion
                }

                scope.Complete();
            }

            return(adjustRequestInfo);
        }
Example #10
0
        //(PO中该商品采购数量 –实际入库数量) 进行扣减采购在途库存(inventory .purQty);
        //负po不需要进行采购在途库存设置。关闭时,需要把占用库存剩下的还给可用库存
        public static void InventoryPurQtyChange(PoSysNoItem poInfo)
        {
            List <PoPurQtyInfo> listPurQty = AutoCloseDA.GetPoPurQtyInfoList(poInfo.PoSysNo);
            //var data = listPurQty.GroupBy(p => p.poSysno);
            //int storySyno = 0;
            //foreach (var d in data)
            //{
            //    List<KeyValuePair<int, int>> kv = new List<KeyValuePair<int, int>>();
            //    foreach (var f in d)
            //    {
            //        storySyno = f.StockSysNo;
            //        kv.Add(new KeyValuePair<int, int>(f.productSysno, f.pruCount));
            //    }
            //    if (storySyno != 0)
            //    {
            //        InventoryPurQty(storySyno, kv, d.Key, 2);//0 审核; 1 撤销审核;2 中止入库
            //        storySyno = 0;
            //    }
            //}
            InventoryAdjustContractInfo info = new InventoryAdjustContractInfo();

            info.SourceActionName      = InventoryAdjustSourceAction.StopInStock;
            info.SourceBizFunctionName = InventoryAdjustSourceBizFunction.PO_Order;
            info.AdjustItemList        = new List <InventoryAdjustItemInfo>();
            info.ReferenceSysNo        = poInfo.PoSysNo.ToString();
            foreach (var item in listPurQty)
            {
                info.AdjustItemList.Add(new InventoryAdjustItemInfo
                {
                    AdjustQuantity = -1 * item.pruCount,
                    ProductSysNo   = item.productSysno,
                    StockSysNo     = item.StockSysNo
                });
            }

            string baseUrl      = System.Configuration.ConfigurationManager.AppSettings["PORestFulBaseUrl"];
            string languageCode = System.Configuration.ConfigurationManager.AppSettings["LanguageCode"];
            string companyCode  = System.Configuration.ConfigurationManager.AppSettings["CompanyCode"];

            ECCentral.Job.Utility.RestClient       client = new ECCentral.Job.Utility.RestClient(baseUrl, languageCode);
            ECCentral.Job.Utility.RestServiceError error;
            var ar = client.Update("/PurchaseOrder/AdjustPurchaseOrderQtyInventory", info, out error);

            if (error != null && error.Faults != null && error.Faults.Count > 0)
            {
                string errorMsg = "";
                foreach (var errorItem in error.Faults)
                {
                    errorMsg += errorItem.ErrorDescription;
                }
                Logger.WriteLog(errorMsg, "JobConsole");

                OnShowInfo(errorMsg);
                OnShowInfo("PO单编号为:" + poInfo.PoSysNo.ToString() + "在途数量修改失败");
                AutoCloseDA.SendEmail(poInfo.PoSysNo, Settings.ExceptionMeil, "PO单编号为:" + poInfo.PoSysNo.ToString() + "在途数量修改失败", errorMsg);
            }
            else
            {
                OnShowInfo("PO单编号为:" + poInfo.PoSysNo.ToString() + "在途数量修改成功");
            }
        }
Example #11
0
 /// <summary>
 /// 调整商品库存
 /// </summary>
 /// <param name="productInventoryAdjustInfo">商品库存调整统一格式合约信息</param>
 /// <returns>IsSucceed</returns>
 public virtual bool AdjustProductInventory(InventoryAdjustContractInfo inventoryAdjustContractInfo)
 {
     return(ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(inventoryAdjustContractInfo));
 }
 public virtual int AdjustPurchaseOrderQtyInventory(InventoryAdjustContractInfo info)
 {
     return(ObjectFactory <PurchaseOrderAppService> .Instance.AdjustPurchaseOrderQtyInventory(info));
 }
Example #13
0
        private void TestInventoryAdjust()
        {
            InventoryAdjustContractInfo adjustContractInfo = new InventoryAdjustContractInfo();

            adjustContractInfo.ReferenceSysNo = "111";
            adjustContractInfo.AdjustItemList = new List <InventoryAdjustItemInfo>();

            InventoryAdjustItemInfo adjustItem1 = new InventoryAdjustItemInfo()
            {
                ProductSysNo   = 999999,
                StockSysNo     = 51,
                AdjustQuantity = 9
            };
            InventoryAdjustItemInfo adjustItem2 = new InventoryAdjustItemInfo()
            {
                ProductSysNo   = 999998,
                StockSysNo     = 51,
                AdjustQuantity = -9
            };

            adjustContractInfo.AdjustItemList.Add(adjustItem1);
            adjustContractInfo.AdjustItemList.Add(adjustItem2);


            adjustContractInfo.SourceBizFunctionName = InventoryAdjustSourceBizFunction.Inventory_LendRequest;
            adjustContractInfo.SourceActionName      = InventoryAdjustSourceAction.Create;
            Object r11 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.Abandon;
            Object r12 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.CancelAbandon;
            Object r13 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.Update;
            Object r14 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.OutStock;
            Object r15 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.Return;
            Object r16 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceBizFunctionName = InventoryAdjustSourceBizFunction.Inventory_AdjustRequest;
            adjustContractInfo.SourceActionName      = InventoryAdjustSourceAction.Create;
            Object r21 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.Abandon;
            Object r22 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.CancelAbandon;
            Object r23 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.Update;
            Object r24 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.OutStock;
            Object r25 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceBizFunctionName = InventoryAdjustSourceBizFunction.Inventory_ConvertRequest;
            adjustContractInfo.SourceActionName      = InventoryAdjustSourceAction.Create;
            Object r31 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.Abandon;
            Object r32 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.CancelAbandon;
            Object r33 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.Update;
            Object r34 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.OutStock;
            Object r35 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceBizFunctionName = InventoryAdjustSourceBizFunction.Inventory_ShiftRequest;
            adjustContractInfo.SourceActionName      = InventoryAdjustSourceAction.Create;
            Object r41 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.Abandon;
            Object r42 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.CancelAbandon;
            Object r43 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.Update;
            Object r44 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.OutStock;
            Object r45 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.InStock;
            Object r46 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.AbandonForPO;
            Object r47 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceBizFunctionName = InventoryAdjustSourceBizFunction.Inventory_VirtualRequest;
            adjustContractInfo.SourceActionName      = InventoryAdjustSourceAction.Create;
            Object r51 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.CreateForJob;
            Object r52 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.Run;
            Object r53 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.Close;
            Object r54 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceBizFunctionName = InventoryAdjustSourceBizFunction.SO_Order;
            adjustContractInfo.SourceActionName      = InventoryAdjustSourceAction.Create;
            Object r61 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.Abandon;
            Object r62 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.Abandon_RecoverStock;
            Object r63 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.OutStock;
            Object r64 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.WHUpdate;
            Object r65 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.Pending;
            Object r66 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceBizFunctionName = InventoryAdjustSourceBizFunction.PO_Order;
            adjustContractInfo.SourceActionName      = InventoryAdjustSourceAction.Audit;
            Object r71 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.CancelAudit;
            Object r72 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.StopInStock;
            Object r73 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);

            adjustContractInfo.SourceActionName = InventoryAdjustSourceAction.InStock;
            Object r74 = ObjectFactory <ProductInventoryAppService> .Instance.AdjustProductInventory(adjustContractInfo);
        }
Example #14
0
 /// <summary>
 /// 调整库存
 /// </summary>
 /// <param name="inventoryAdjustContractInfo"></param>
 /// <returns></returns>
 internal static bool AdjustProductInventory(InventoryAdjustContractInfo inventoryAdjustContractInfo)
 {
     return(InventoryBizInteract.AdjustProductInventory(inventoryAdjustContractInfo));
 }
Example #15
0
 public virtual int AdjustPurchaseOrderQtyInventory(InventoryAdjustContractInfo info)
 {
     ExternalDomainBroker.AdjustProductInventory(info);
     return(1);
 }
Example #16
0
 /// <summary>
 /// 调整商品库存
 /// </summary>
 /// <param name="adjustInfo"></param>
 public static void AdjustProductInventory(InventoryAdjustContractInfo adjustInfo)
 {
     ObjectFactory <IInventoryBizInteract> .Instance.AdjustProductInventory(adjustInfo);
 }