コード例 #1
0
        //同步送货单
        public void SyncSHD(int SOSysNo)
        {
            var soItem = ExternalDomainBroker.GetSOItemList(SOSysNo);

            soItem = soItem.Where(p => p.InventoryType == ProductInventoryType.Company || p.InventoryType == ProductInventoryType.TwoDoor).ToList();
            //同步送货单

            //foreach (var item in soItem)
            //{
            //    ERPSHDInfo erpinfo = new ERPSHDInfo();
            //    erpinfo.SHDTypeMemo = "送货单";
            //    erpinfo.RefOrderNo = SOSysNo.ToString();
            //    erpinfo.RefOrderType = "销售订单";
            //    erpinfo.SysMemo = erpinfo.RefOrderNo + "/" + erpinfo.RefOrderType;
            //    erpinfo.ZDR = ServiceContext.Current.UserSysNo;
            //    erpinfo.ZDSJ = DateTime.Now;
            //    erpinfo.ZXR = ServiceContext.Current.UserSysNo;
            //    erpinfo.ZXSJ = DateTime.Now;
            //    erpinfo.SHDItemList = new List<ERPSHDItem>();
            //    ERPSHDItem erpitem = new ERPSHDItem();
            //    erpitem.ProductSysNo = item.ProductSysNo;
            //    erpitem.SL = item.Quantity;
            //    erpinfo.SHDItemList.Add(erpitem);
            //    ObjectFactory<ISyncERPBizRecord>.Instance.CreateSHD(erpinfo);
            //}

            var Inventory = soItem.Where(p => p.InventoryType == ProductInventoryType.Company || p.InventoryType == ProductInventoryType.TwoDoor);

            if (Inventory.Count() > 0)
            {
                ERPInventoryAdjustInfo erpAdjustInfo = new ERPInventoryAdjustInfo
                {
                    OrderSysNo     = SOSysNo,
                    OrderType      = "SO",
                    AdjustItemList = new List <ERPItemInventoryInfo>(),
                    Memo           = "在线订单支付确认"
                };
                foreach (var item in Inventory)
                {
                    ERPItemInventoryInfo adjustItem = new ERPItemInventoryInfo
                    {
                        ProductSysNo = item.ProductSysNo,
                        HQQuantity   = -item.Quantity.Value
                    };

                    erpAdjustInfo.AdjustItemList.Add(adjustItem);
                }
                if (erpAdjustInfo.AdjustItemList.Count > 0)
                {
                    string adjustXml = ECCentral.Service.Utility.SerializationUtility.ToXmlString(erpAdjustInfo);
                    ObjectFactory <ICommonBizInteract> .Instance.CreateOperationLog(string.Format("支付确认扣除ERP【总部家电/双开门】库存:{0}", adjustXml)
                                                                                    , BizLogType.Finance_NetPay_Verify
                                                                                    , SOSysNo
                                                                                    , "8601");

                    //ObjectFactory<IAdjustERPInventory>.Instance.AdjustERPInventory(erpAdjustInfo);
                }
            }
        }
コード例 #2
0
        public ERPItemInventoryInfo GetERPItemInventoryInfoByERPProductId(int erpProductId)
        {
            ERPItemInventoryInfo item = erpDA.GetERPItemInventoryByERPProductID(erpProductId);

            if (item == null)
            {
                item = new ERPItemInventoryInfo
                {
                    ERPProductId     = erpProductId,
                    HQQuantity       = 0,
                    DeptQuantity     = 0,
                    B2CSalesQuantity = 0
                };
            }

            return(item);
        }
コード例 #3
0
        public ERPItemInventoryInfo GetERPItemInventoryInfoByProductSysNo(int productSysNo)
        {
            ERPItemInventoryInfo item = erpDA.GetERPItemInventoryByProductSysNo(productSysNo);

            if (item == null)
            {
                item = new ERPItemInventoryInfo
                {
                    ProductSysNo     = productSysNo,
                    HQQuantity       = 0,
                    DeptQuantity     = 0,
                    B2CSalesQuantity = 0
                };
            }

            return(item);
        }
コード例 #4
0
        /// <summary>
        /// 作废订单
        /// </summary>
        /// <param name="isSynch">是否同步作废</param>
        /// <param name="IsImmediatelyReturnStock">是否立即返还库存</param>
        /// <param name="isAO"></param>
        protected virtual void AbandonSO()
        {
            int    couponSysNo = CouponList != null && CouponList.Count > 0 ? CouponList[0].ProductSysNo.Value : 0;
            string couponCode  = string.Empty;

            var shopProducts = CurrentSO.Items.Where(p => p.InventoryType == BizEntity.IM.ProductInventoryType.GetShopInventory);

            //ERP库存调整
            ERPInventoryAdjustInfo erpAdjustInfo = new ERPInventoryAdjustInfo
            {
                OrderSysNo     = this.CurrentSO.SysNo.Value,
                OrderType      = "SO",
                AdjustItemList = new List <ERPItemInventoryInfo>(),
                Memo           = "作废减少销售数量"
            };

            foreach (var item in shopProducts)
            {
                ERPItemInventoryInfo adjustItem = new ERPItemInventoryInfo
                {
                    ProductSysNo     = item.ProductSysNo,
                    B2CSalesQuantity = -item.Quantity.Value
                };

                erpAdjustInfo.AdjustItemList.Add(adjustItem);
            }

            if (erpAdjustInfo.AdjustItemList.Count > 0)
            {
                string adjustXml = ECCentral.Service.Utility.SerializationUtility.ToXmlString(erpAdjustInfo);
                ObjectFactory <ICommonBizInteract> .Instance.CreateOperationLog(string.Format("作废减少销售数量:{0}", adjustXml)
                                                                                , BizLogType.Sale_SO_VoideSO
                                                                                , this.CurrentSO.SysNo.Value
                                                                                , this.CurrentSO.CompanyCode);

                //ObjectFactory<IAdjustERPInventory>.Instance.AdjustERPInventory(erpAdjustInfo);
            }

            //IsolationLevel与上层事务IsolationLevel有冲突,去除
            //TransactionOptions options = new TransactionOptions
            //{
            //    IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted
            //};
            //using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required))

            #region 如果是拆分后的子单,还需要更新主单信息。
            if (CurrentSO.BaseInfo.SplitType == SOSplitType.SubSO)
            {
                //重新计算主订单SOAmt,ShipPrice,PrepayAmt,PremiumAmt
                SOInfo masterSO = SODA.GetSOBySOSysNo(CurrentSO.BaseInfo.SOSplitMaster.Value);
                masterSO.BaseInfo.PremiumAmount   -= CurrentSO.BaseInfo.PremiumAmount;
                masterSO.BaseInfo.PrepayAmount    -= CurrentSO.BaseInfo.PrepayAmount;
                masterSO.BaseInfo.ShipPrice       -= CurrentSO.BaseInfo.ShipPrice;
                masterSO.BaseInfo.SOAmount        -= CurrentSO.BaseInfo.SOAmount;
                masterSO.BaseInfo.GainPoint       -= CurrentSO.BaseInfo.GainPoint;
                masterSO.BaseInfo.PointPay        -= CurrentSO.BaseInfo.PointPay;
                masterSO.BaseInfo.PromotionAmount -= CurrentSO.BaseInfo.PromotionAmount;
                masterSO.BaseInfo.PayPrice        -= CurrentSO.BaseInfo.PayPrice;
                masterSO.BaseInfo.CouponAmount    -= CurrentSO.BaseInfo.CouponAmount;
                masterSO.BaseInfo.PointPayAmount  -= CurrentSO.BaseInfo.PointPayAmount;

                //删除对应主单中的商品
                foreach (SOItemInfo item in CurrentSO.Items)
                {
                    //除优惠券外的商品
                    if (item.ProductType != SOProductType.Coupon)
                    {
                        SODA.DeleteSOItemBySOSysNoAndProductSysNo(masterSO.SysNo.Value, item.ProductSysNo.Value);
                    }
                }
                //更新主订单金额
                SODA.UpdateSOAmountInfo(masterSO.BaseInfo);
            }

            #endregion 如果是子单,还需要更新主单信息

            //取消优惠券使用
            CancelCoupon();

            //  保存作废订单信息
            SaveCurrentSO();
            //if (AppSettingManager.GetSetting(SOConst.DomainName, "PaymentInventory").ToString().ToLower() != "true")
            //{
            //    // 调整仓库,返还商品库存
            //    AdjustInventory();
            //}
            //SOProcessor sopro = new SOProcessor();
            //DateTime? SOCreatDate = CurrentSO.BaseInfo.CreateTime;
            //foreach (var item in CurrentSO.Items)
            //{
            //    if (sopro.CheckReturnInventory(item.ProductSysNo.Value, SOCreatDate.Value))
            //    {
            //        // 调整仓库,返还商品库存
            //        AdjustInventory();
            //    }
            //}

            //调整仓库,返还商品库存
            AdjustInventory();

            //订单支付
            CancelSOPay();

            // 如果订单有奖品,则要退还奖品。
            if (CurrentSO.Items != null && CurrentSO.Items.Exists(x => x.ProductType == SOProductType.Award))
            {
                ExternalDomainBroker.ReturnAwardForSO(SOSysNo);
            }
            // 取消配送
            CancelDelivery();

            // 作废订单的虚库申请
            AbandonSOVirtualItemRequest();
            // 提交作废订单之前,所做的操作。
            PreCommit();

            WriteLog(CurrentSO);
        }