Exemplo n.º 1
0
        public ActionResult ShopInvoice(int whStockOutSysNo)
        {
            WhStockOut model    = null;
            var        stockOut = BLL.Warehouse.WhWarehouseBo.Instance.Get(whStockOutSysNo);

            if (stockOut != null)
            {
                //订单
                var order = BLL.Order.SoOrderBo.Instance.GetEntity(stockOut.OrderSysNO);
                ViewBag.OrderSysNo = order.SysNo;
                //门店
                var warehouse = WhWarehouseBo.Instance.GetWarehouseEntity(order.DefaultWarehouseSysNo);
                ViewBag.WarehouseName = warehouse != null ? warehouse.WarehouseName : "未知";

                //收货地址
                ViewBag.ReceiveAddress = BLL.Order.SoOrderBo.Instance.GetOrderReceiveAddress(order.ReceiveAddressSysNo);

                //付款方式
                ViewBag.PayType = BLL.Basic.PaymentTypeBo.Instance.GetEntity(order.PayTypeSysNo);
                //提货时间
                ViewBag.SignTime = stockOut.SignTime.ToString("yyyy-MM-dd HH:mm");
                //商品
                model = WhWarehouseBo.Instance.Get(whStockOutSysNo);
                ViewBag.WhStockOutItem = model;
                ViewBag.Total          = model.Items.Sum(i => i.RealSalesAmount);

                //分销商订单
                var dsOrders = BLL.MallSeller.DsOrderBo.Instance.GetEntityByTransactionSysNo(order.TransactionSysNo);
                if (dsOrders.Any())
                {
                    var dsOrder = dsOrders.First();
                    var mall    = BLL.MallSeller.DsOrderBo.Instance.GetDsDealerMall(dsOrder.DealerMallSysNo);
                    ViewBag.mallOrderId  = dsOrder.MallOrderId;
                    ViewBag.mallShopName = mall.ShopName;
                }
                ViewBag.CouponAmount = order.CouponAmount;//优惠券金额
                var ordercoupon = Hyt.BLL.Order.SoOrderBo.Instance.GetCouponByOrderSysNo(order.SysNo).FirstOrDefault();
                if (ordercoupon != null)
                {
                    var coupon = PromotionBo.Instance.GetCoupon(ordercoupon.CouponCode);
                    if (coupon != null)
                    {
                        ViewBag.CouponDes = coupon.Description;//优惠券内容
                    }
                }
                ViewBag.DiscountAmount  = order.ProductDiscountAmount + order.OrderDiscountAmount; //折扣金额
                ViewBag.DeliveryRemarks = order.DeliveryRemarks;                                   //配送备注
                ViewBag.Remarks         = order.InternalRemarks;                                   //对内备注
                ViewBag.CoinPay         = order.CoinPay;                                           //会员币支付
            }
            return(View("ShopInvoice", model));
        }
Exemplo n.º 2
0
        /// <summary>
        /// 确认或者取消电子面单
        /// </summary>
        /// <param name="stockOut">出库单</param>
        /// <param name="actionType">电子面单操作类型</param>
        /// <param name="userid">用户编号</param>
        /// <remarks>2015-10-8 杨浩 创建</remarks>
        public bool ConfirmElectronicWayBill(WhStockOut stockOut, LogisticsStatus.电子面单操作类型 actionType, int userid)
        {
            //UpdateStatus(stockOut.SysNo, actionType == LogisticsStatus.电子面单操作类型.取消订单 ? LogisticsStatus.电子面单状态.作废 : LogisticsStatus.电子面单状态.已确认, userid);//更新本地数据库中的电子面单状态
            //var response =  LgBestExpressSurfaceBillServiceBo.Instance.UpdateBill(stockOut, actionType);
            //if (response.IsSuccess)
            //{
            //    if (response.ExpressOrderResult.OrderStatus == "ACCEPT")//接单成功
            //    {
            //        return true;
            //    }
            //    var firstOrDefault = response.ExpressOrderResult.Errors.ErrorList.FirstOrDefault();
            //    if (firstOrDefault != null && actionType != LogisticsStatus.电子面单操作类型.取消订单)
            //    {
            //        throw new HytException(firstOrDefault.ErrorDescription);//接单失败
            //    }
            //    else
            //    {
            //        return false;
            //    }
            //}

            //else
            //{
            //    var error = response.ExpressOrderResult.Errors.ErrorList.FirstOrDefault();
            //    if (error != null)
            //    {
            //        SysLog.Instance.WriteLog(LogStatus.SysLogLevel.Error, LogStatus.系统日志来源.后台,
            //            " 确认或取消百世汇通电子面单未成功,出库单号:" + response.ExpressOrderResult.CustomerOrderCode + "错误编号:" + error.ErrorCode + "错误描述:" + error.ErrorDescription,
            //            LogStatus.系统日志目标类型.出库单, stockOut.SysNo, null, string.Empty, userid);
            //        if (actionType != LogisticsStatus.电子面单操作类型.取消订单)
            //        {
            //            throw new HytException(error.ErrorCode);
            //        }
            //        else
            //        {
            //            return false;
            //        }
            //    }
            //    if (actionType != LogisticsStatus.电子面单操作类型.取消订单)
            //    {
            //        throw new HytException(response.ExpressOrderXmlResult);
            //    }
            //    else
            //    {
            //        return false;
            //    }
            //}
            return(true);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 是否允许调货
        /// </summary>
        /// <param name="stockOut">出库单</param>
        /// <returns></returns>
        /// <remarks>2016-04-08 朱成果 创建</remarks>
        public Hyt.Model.Result <TransferCargoConfig> CanTransferCargo(WhStockOut stockOut)
        {
            Hyt.Model.Result <TransferCargoConfig> result = new Hyt.Model.Result <TransferCargoConfig>()
            {
                Status = false
            };
            if (stockOut == null)
            {
                result.Message = string.Format("当前出库单不存在");
                return(result);
            }
            if (!(stockOut.DeliveryTypeSysNo == Hyt.Model.SystemPredefined.DeliveryType.普通百城当日达 || stockOut.DeliveryTypeSysNo == Hyt.Model.SystemPredefined.DeliveryType.门店自提))
            {
                result.Message = string.Format("当前配送方式出库单不允许调货");
                return(result);
            }
            if (stockOut.IsCOD == Hyt.Model.WorkflowStatus.WarehouseStatus.是否到付.是.GetHashCode())
            {
                result.Message = string.Format("货到付款订单不允许调货");
                return(result);
            }
            if (stockOut.Status != (int)WarehouseStatus.出库单状态.待出库)
            {
                result.Message = string.Format("只有待出库的出库单才允许申请调货");
                return(result);
            }
            //if (WhWarehouseBo.Instance.IsSelfSupport(stockOut.WarehouseSysNo))
            //{
            //    result.Message = string.Format("自营仓库不允许申请调货");
            //    return result;
            //}
            var config = Hyt.BLL.Basic.TransferCargoConfigBo.Instance.GetEntityByApplyWarehouseSysNo(stockOut.WarehouseSysNo);//有调货配置

            if (config == null)
            {
                result.Message = string.Format("申请仓库编号为:{0}的仓库未配置配货仓库,请在基础管理-调货配置中配置", stockOut.WarehouseSysNo);
                return(result);
            }
            result.Data = config;
            var exist = ExistTransferCargoByStockOutSysno(stockOut.SysNo);

            if (exist)
            {
                result.Message = string.Format("出库单号为:{0}的出库单已申请过调货,不能再次申请", stockOut.SysNo);
                return(result);
            }
            result.Status = true;
            return(result);
        }
Exemplo n.º 4
0
 /// <summary>
 /// 创建业务员配送单(但是未结算)
 /// </summary>
 /// <param name="order">订单信息</param>
 /// <param name="user">业务员信息</param>
 /// <param name="outStock">出库单信息</param>
 /// <remarks>2014-9-17  朱成果 创建</remarks>
 private void DeliveryTwoSaleSoOrder(AppOrder order, SyUser user, WhStockOut outStock)
 {
     if (order.Invoice != null)
     {
         order.Invoice.LastUpdateBy   = user.SysNo;
         order.Invoice.LastUpdateDate = DateTime.Now;
         order.Invoice.Status         = (int)Hyt.Model.WorkflowStatus.FinanceStatus.发票状态.已开票;
         Hyt.BLL.Order.SoOrderBo.Instance.UpdateOrderInvoice(order.Invoice); //更新发票 余勇 修改 改为调用业务层方法
     }
     outStock.Status       = (int)Hyt.Model.WorkflowStatus.WarehouseStatus.出库单状态.配送中;
     outStock.StockOutBy   = user.SysNo;
     outStock.StockOutDate = DateTime.Now;
     Hyt.DataAccess.Warehouse.IOutStockDao.Instance.Update(outStock);                 //更新出库单状态
     GenerateOtherDataForTwoSale(order, user, outStock);                              //创建业务员配送单
     Hyt.BLL.Warehouse.WhWarehouseBo.Instance.UpdateErpProductNumber(outStock.SysNo); //修改EAS库存
 }
Exemplo n.º 5
0
        /// <summary>
        /// 退货从出库单创建入库单
        /// </summary>
        /// <param name="stockOut">出库单实体.</param>
        /// <param name="returnNumber">商品退货数量</param>
        /// <param name="operatorSysNo">操作人.</param>
        /// <param name="sourceType">来源单据类型.</param>
        /// <param name="sourceSysNo">来源单据系统编号.</param>
        /// <param name="transactionSysNo">事务编号.</param>
        /// <param name="remarks">备注.</param>
        /// <returns></returns>
        /// <remarks>
        /// 2013/7/11 何方 创建
        /// </remarks>
        public int CreateStockIn(WhStockOut stockOut, Dictionary <int, int> returnNumber, int operatorSysNo, WarehouseStatus.入库单据类型 sourceType, int sourceSysNo, string transactionSysNo = "", string remarks = "")
        {
            var stockIn = new WhStockIn
            {
                CreatedBy        = operatorSysNo,
                CreatedDate      = DateTime.Now,
                DeliveryType     = (int)WarehouseStatus.入库物流方式.拒收,
                IsPrinted        = (int)WarehouseStatus.是否已经打印拣货单.否,
                Remarks          = remarks,
                SourceSysNO      = sourceSysNo,
                SourceType       = (int)sourceType,
                Status           = (int)WarehouseStatus.入库单状态.待入库,
                TransactionSysNo = transactionSysNo,
                WarehouseSysNo   = stockOut.WarehouseSysNo,
                ItemList         = new List <WhStockInItem>(),
                LastUpdateBy     = operatorSysNo,
                LastUpdateDate   = DateTime.Now
            };

            if (returnNumber != null && returnNumber.Any())
            {
                stockIn.Status = (int)WarehouseStatus.入库单状态.待入库;
                //入库单明细
                foreach (var orderItemSysNo in returnNumber.Keys)
                {
                    var stockOutItem = stockOut.Items.SingleOrDefault(x => x.OrderItemSysNo == orderItemSysNo);
                    if (stockOutItem == null)
                    {
                        throw new Exception(string.Format("出库单:{0}不包含商品{1}", stockOut.SysNo, orderItemSysNo));
                    }

                    stockIn.ItemList.Add(new WhStockInItem
                    {
                        CreatedBy           = operatorSysNo,
                        CreatedDate         = DateTime.Now,
                        ProductName         = stockOutItem.ProductName,
                        ProductSysNo        = stockOutItem.ProductSysNo,
                        StockInQuantity     = returnNumber[orderItemSysNo],//退货数量
                        RealStockInQuantity = 0,
                        LastUpdateBy        = operatorSysNo,
                        LastUpdateDate      = DateTime.Now
                    });
                }
            }
            return(InStockBo.Instance.CreateStockIn(stockIn));
        }
Exemplo n.º 6
0
        /// <summary>
        /// 构建业务员配送单信息
        /// </summary>
        /// <param name="order">订单</param>
        /// <param name="user">业务员</param>
        /// <param name="outStock">出库单</param>
        /// <remarks>2014-9-17  朱成果 创建</remarks>
        private void GenerateOtherDataForTwoSale(AppOrder order, SyUser user, WhStockOut outStock)
        {
            var  payType   = PaymentTypeBo.Instance.GetPaymentTypeFromMemory(order.SoOrder.PayTypeSysNo);
            bool isNeedPay = payType.PaymentType == (int)BasicStatus.支付方式类型.预付;//是否预付
            var  delivery  = new LgDelivery()
            {
                DeliveryUserSysNo = user.SysNo,
                DeliveryTypeSysNo = outStock.DeliveryTypeSysNo,
                CreatedBy         = user.SysNo,
                CreatedDate       = DateTime.Now,
                Status            = (int)LogisticsStatus.配送单状态.配送在途,
                StockSysNo        = outStock.WarehouseSysNo,
                IsEnforceAllow    = 0,
                PaidAmount        = isNeedPay ? order.SoOrder.CashPay : 0,
                CODAmount         = isNeedPay ? 0 : order.SoOrder.CashPay,
            };
            var deliverySysNo = Hyt.DataAccess.Logistics.ILgDeliveryDao.Instance.CreateLgDelivery(delivery);//创建配送单
            var deliveryItem  = new LgDeliveryItem()
            {
                DeliverySysNo    = deliverySysNo,
                NoteType         = (int)Hyt.Model.WorkflowStatus.LogisticsStatus.配送单据类型.出库单,
                NoteSysNo        = outStock.SysNo,
                Status           = (int)Hyt.Model.WorkflowStatus.LogisticsStatus.配送单明细状态.待签收,
                AddressSysNo     = outStock.ReceiveAddressSysNo,
                TransactionSysNo = outStock.TransactionSysNo,
                StockOutAmount   = outStock.StockOutAmount,
                PaymentType      = payType.PaymentType,
                Receivable       = !isNeedPay ? order.SoOrder.CashPay : 0,
                IsCOD            = !isNeedPay ? (int)Hyt.Model.WorkflowStatus.LogisticsStatus.是否到付.是 : (int)Hyt.Model.WorkflowStatus.LogisticsStatus.是否到付.否,
                Remarks          = "【二次销售自动创建】",
                CreatedBy        = user.SysNo,
                CreatedDate      = DateTime.Now
            };

            Hyt.DataAccess.Logistics.ILgDeliveryDao.Instance.AddDeliveryItem(deliveryItem);//配送单明细
            Order.SoOrderBo.Instance.WriteSoTransactionLog(outStock.TransactionSysNo,
                                                           "出库单" + outStock.SysNo +
                                                           "分配配送成功,配送单<span style='color:red'>" +
                                                           deliverySysNo + "</span>",
                                                           user.UserName);//日志
            string msg = "出库单" + outStock.SysNo + "由百城当日达配送员<span style='color:red'>{0}</span>配送中,送货人联系电话<span style='color:red'>{1}</span>";

            msg = string.Format(msg, user.UserName, user.MobilePhoneNumber);
            Order.SoOrderBo.Instance.WriteSoTransactionLog(outStock.TransactionSysNo, msg, user.UserName);//日志
        }
Exemplo n.º 7
0
        private void AddBaseTaskObjectToList(List <BaseTask> listObject)
        {
            BaseTask bsAT                    = new BsArea();
            BaseTask bsDP                    = new BsDeliveryPayment();
            BaseTask bsPT                    = new BsPaymentType();
            BaseTask bsCode                  = new BsCode();
            BaseTask bsOrganization          = new BsOrganization();
            BaseTask bsOrganizationWarehouse = new BsOrganizationWarehouse();

            BaseTask crCustomer = new CrCustomer();
            BaseTask crCL       = new CrCustomerLevel();
            BaseTask crCQ       = new CrCustomerQuestion();
            BaseTask crRA       = new CrReceiveAddress();

            BaseTask dsMallType      = new DsMallType();
            BaseTask dsDealerLevel   = new DsDealerLevel();
            BaseTask feArticle       = new FeArticle();
            BaseTask feAC            = new FeArticleCategory();
            BaseTask feCS            = new FeCommentSupport();
            BaseTask fepc            = new FeProductComment();
            BaseTask fePCI           = new FeProductCommentImage();
            BaseTask fePCR           = new FeProductCommentReply();
            BaseTask feSearchKeyword = new FeSearchKeyword();
            BaseTask feadvertgroup   = new FeAdvertGroup();
            BaseTask feadvertitem    = new FeAdvertItem();
            BaseTask feproductgroup  = new FeProductGroup();
            BaseTask feproductitem   = new FeProductItem();

            BaseTask fnIT      = new FnInvoiceType();
            BaseTask fninvoice = new FnInvoice();

            BaseTask fnpv = new  FnReceiptVoucher();
            BaseTask fnReceiptVoucherItem = new FnReceiptVoucherItem();
            BaseTask fnop                 = new FnOnlinePayment();
            BaseTask fnPaymentVoucher     = new FnPaymentVoucher();
            BaseTask fnPaymentVoucherItem = new FnPaymentVoucherItem();

            BaseTask lgDelivery              = new LgDelivery();
            BaseTask lgDI                    = new LgDeliveryItem();
            BaseTask lgDS                    = new LgDeliveryScope();
            BaseTask lgDT                    = new LgDeliveryType();
            BaseTask lgDUC                   = new LgDeliveryUserCredit();
            BaseTask lgPT                    = new LgPickupType();
            BaseTask lgsettlement            = new LgSettlement();
            BaseTask lgSI                    = new LgSettlementItem();
            BaseTask lgDeliveryPrintTemplate = new LgDeliveryPrintTemplate();
            BaseTask pdAttribute             = new PdAttribute();
            BaseTask pdAG                    = new PdAttributeGroup();
            BaseTask pdAGA                   = new PdAttributeGroupAssociation();
            BaseTask pdAO                    = new PdAttributeOption();
            BaseTask pdBrand                 = new PdBrand();
            BaseTask pdCGA                   = new PdCatAttributeGroupAso();
            BaseTask pdCategory              = new PdCategory();
            BaseTask pdCA                    = new PdCategoryAssociation();
            BaseTask pdPrice                 = new PdPrice();
            BaseTask pdProduct               = new PdProduct();
            BaseTask pdPA                    = new PdProductAssociation();
            BaseTask pdProductAttribute      = new PdProductAttribute();
            BaseTask pdPI                    = new PdProductImage();
            BaseTask pdTemplate              = new PdTemplate();
            BaseTask pdProductStatistics     = new PdProductStatistics();

            BaseTask soOrder         = new SoOrder();
            BaseTask soOrderItem     = new SoOrderItem();
            BaseTask soRA            = new SoReceiveAddress();
            BaseTask SyUG            = new SyUserGroup();
            BaseTask syGU            = new SyGroupUser();
            BaseTask syMenu          = new SyMenu();
            BaseTask syMenuPrivilege = new SyMenuPrivilege();
            BaseTask syPrivilege     = new SyPrivilege();
            BaseTask syRole          = new SyRole();
            BaseTask syRoleMenu      = new SyRoleMenu();
            BaseTask syRolePrivilege = new SyRolePrivilege();
            BaseTask syPermission    = new SyPermission();
            BaseTask syUser          = new SyUser();
            BaseTask syUW            = new SyUserWarehouse();
            BaseTask syMyMenu        = new SyMyMenu();

            BaseTask spcombo                  = new SpCombo();
            BaseTask spComboItem              = new SpComboItem();
            BaseTask spcopon                  = new spcoupon();
            BaseTask sqpromotion              = new SPpromotion();
            BaseTask spromotiongift           = new SPpromotiongift();
            BaseTask sppromotionoverlay       = new SPpromotionoverlay();
            BaseTask sppromotionrule          = new SPpromotionrule();
            BaseTask sppromotionrulecondition = new SPpromotionrulecondition();
            BaseTask sppromotionrulekeyvalue  = new SPpromotionrulekeyvalue();
            BaseTask syTaskConfig             = new SyTaskConfig();

            BaseTask whStockOut     = new WhStockOut();
            BaseTask whStockOutItem = new WhstockOutItem();
            BaseTask whwarehouse    = new WhWarehouse();
            BaseTask whwa           = new WHwarehousearea();
            BaseTask whwdy          = new WHwarehouseDeliveryType();
            BaseTask whWPT          = new WhWarehousePickupType();
            BaseTask whstockin      = new WhStockIn();
            BaseTask whstockinItem  = new WHStockinItem();
            BaseTask rcReturn       = new RCReturn();
            BaseTask rcReturnItem   = new RcReturnItem();

            listObject.Add(bsAT);
            listObject.Add(bsDP);
            listObject.Add(bsPT);
            listObject.Add(bsCode);
            listObject.Add(bsOrganization);
            listObject.Add(bsOrganizationWarehouse);

            listObject.Add(crCustomer);
            listObject.Add(crCL);
            listObject.Add(crCQ);
            listObject.Add(crRA);
            listObject.Add(dsMallType);
            listObject.Add(dsDealerLevel);
            listObject.Add(feArticle);
            listObject.Add(feAC);
            listObject.Add(feCS);
            listObject.Add(fePCI);
            listObject.Add(fePCR);
            listObject.Add(fepc);
            listObject.Add(feSearchKeyword);
            listObject.Add(feadvertgroup);
            listObject.Add(feadvertitem);
            listObject.Add(feproductgroup);
            listObject.Add(feproductitem);

            listObject.Add(fnIT);
            listObject.Add(fnpv);
            listObject.Add(fnReceiptVoucherItem);
            listObject.Add(fnop);
            listObject.Add(fninvoice);

            listObject.Add(fnPaymentVoucher);
            listObject.Add(fnPaymentVoucherItem);

            listObject.Add(lgDelivery);
            listObject.Add(lgDI);
            listObject.Add(lgDS);
            listObject.Add(lgDT);
            listObject.Add(lgPT);
            listObject.Add(lgsettlement);
            listObject.Add(lgSI);
            listObject.Add(lgDeliveryPrintTemplate);

            listObject.Add(pdAttribute);
            listObject.Add(pdAG);
            listObject.Add(pdAGA);
            listObject.Add(pdAO);
            listObject.Add(pdBrand);
            listObject.Add(pdCGA);
            listObject.Add(pdCategory);
            listObject.Add(pdCA);
            listObject.Add(pdPrice);
            listObject.Add(pdProduct);
            listObject.Add(pdPA);
            listObject.Add(pdProductAttribute);
            listObject.Add(pdTemplate);
            listObject.Add(pdProductStatistics);

            listObject.Add(soOrder);
            listObject.Add(soOrderItem);

            listObject.Add(spcombo);
            listObject.Add(spComboItem);
            listObject.Add(spcopon);
            listObject.Add(sqpromotion);
            listObject.Add(spromotiongift);
            //listObject.Add(sppromotionoverlay);
            listObject.Add(sppromotionrule);
            listObject.Add(sppromotionrulecondition);
            listObject.Add(sppromotionrulekeyvalue);

            listObject.Add(syGU);
            listObject.Add(syUW);
            listObject.Add(SyUG);
            listObject.Add(syMenu);
            listObject.Add(syUser);
            listObject.Add(syPermission);

            listObject.Add(syMenuPrivilege);
            listObject.Add(syPrivilege);
            listObject.Add(syRole);
            listObject.Add(syRoleMenu);
            listObject.Add(syRolePrivilege);
            listObject.Add(syMyMenu);
            listObject.Add(syTaskConfig);

            listObject.Add(whStockOut);
            listObject.Add(whStockOutItem);
            listObject.Add(whwarehouse);
            listObject.Add(whwa);
            listObject.Add(whwdy);
            listObject.Add(whWPT);
            listObject.Add(whstockin);
            listObject.Add(whstockinItem);
            listObject.Add(rcReturn);
            listObject.Add(rcReturnItem);
            listObject.Add(lgDUC);
            listObject.Add(pdPI);
            listObject.Add(soRA);
        }
Exemplo n.º 8
0
        public ActionResult Picking(int id)
        {
            //兼容火狐浏览器,必须重新刷新前台才能显示
            var isRefresh = Request.Params["isRefresh"];

            BsArea city;
            BsArea area;
            BsArea prov;

            var order      = Hyt.BLL.Order.SoOrderBo.Instance.GetByOutStockSysNo(id);
            var dealerInfo = BLL.Stores.StoresBo.Instance.GetStoreById(order.DealerSysNo);
            var dailiInfo  = Hyt.DataAccess.Stores.IStoresDao.Instance.GetDiLiByCreatId(order.DealerSysNo);

            //kis单据号
            ViewBag.KisVoucherNo = BLL.Sys.EasBo.Instance.GetVoucherNo((int)出库状态.出库, order.TransactionSysNo);

            if (dealerInfo != null)
            {
                ViewBag.DealerName = dealerInfo.DealerName;
            }

            if (dailiInfo != null)
            {
                ViewBag.DaiLiName = dailiInfo.UserName;
            }

            WhStockOut master = WhWarehouseBo.Instance.Get(id);

            if (order == null)
            {
                throw new HytException("找不到出库单编号为" + id + "订单");
            }

            //是否更新出库单状态
            bool isUpdate = false;

            if (master.IsPrintedPickupCover == 0 && master.Status == WarehouseStatus.出库单状态.待拣货.GetHashCode())
            {
                isUpdate = true;
                master.IsPrintedPickupCover = 1;
                master.LastUpdateBy         = CurrentUser.Base.SysNo;
                master.LastUpdateDate       = DateTime.Now;
                master.Status = WarehouseStatus.出库单状态.待打包.GetHashCode();
            }

            if (order.OrderSource == (int)OrderStatus.销售单来源.分销商升舱)
            {
                #region 来源淘宝订单 打印

                //分销配货(拣货,出库)单
                var dsModel = PrintBo.Instance.GetPrintDsPicking(id);

                if (dsModel == null)
                {
                    throw new HytException("找不到编号为" + id + "出库单");
                }

                dsModel.QuantityCount = dsModel.List.Sum(item => item.ProductQuantity);
                dsModel.WeightCount   = dsModel.List.Sum(item => item.Weight);
                //根据编号获得实际地区全称,可用dsModel.ListDs中地区
                prov = BasicAreaBo.Instance.GetProvinceEntity(dsModel.AreaSysNo, out city, out area);

                ViewBag.City = city == null ? "找不到对应城市" : city.AreaName;
                ViewBag.Area = area == null ? "找不到对应地区" : area.AreaName;
                ViewBag.Prov = prov == null ? "找不到对应省" : prov.AreaName;
                //关联订单
                dsModel.SoOrder = order;

                if (isUpdate)
                {
                    WhWarehouseBo.Instance.UpdateStockOut(master);
                }
                if (string.IsNullOrEmpty(isRefresh))
                {
                    Hyt.BLL.Log.SysLog.Instance.Info(LogStatus.系统日志来源.后台, "打印分销出库单", LogStatus.系统日志目标类型.出库单, id,
                                                     CurrentUser.Base.SysNo);
                }


                if (dsModel.IsSelfSupport == (int)DistributionStatus.商城是否自营.是)
                {
                    dsModel.MoneyCount = dsModel.List.Sum(item => item.RealSalesAmount);
                    return(View("DsPickingSelfSupport", dsModel));
                }
                else
                {
                    return(View("DsPicking2", dsModel));
                }
                #endregion
            }
            else
            {
                #region 商城打印
                //int? b = null;
                //int a = b ?? 0;
                var model = PrintBo.Instance.GetPrintPicking(id);

                if (model == null)
                {
                    throw new HytException("找不到编号为" + id + "出库单");
                }

                model.QuantityCount = model.List.Sum(item => item.ProductQuantity);
                model.MoneyCount    = model.List.Sum(item => item.RealSalesAmount);

                //根据编号获得实际地区全称
                prov = BasicAreaBo.Instance.GetProvinceEntity(model.AreaSysNo, out city, out area);

                ViewBag.City = city == null ? "" : city.AreaName;
                ViewBag.Area = area == null ? "" : area.AreaName;
                ViewBag.Prov = prov == null ? "" : prov.AreaName;


                if (isUpdate)
                {
                    WhWarehouseBo.Instance.UpdateStockOut(master);
                }
                if (string.IsNullOrEmpty(isRefresh))
                {
                    Hyt.BLL.Log.SysLog.Instance.Info(LogStatus.系统日志来源.后台, "打印商城出库单", LogStatus.系统日志目标类型.出库单, id,
                                                     CurrentUser.Base.SysNo);
                }
                //关联订单
                model.SoOrder = order;

                return(View("Picking2", model));

                #endregion
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// 门店自提(补充业务所需的配送单和结算单)
        /// </summary>
        /// <param name="entity">出库单</param>
        /// <param name="user">操作人</param>
        /// <param name="payMoney">收款金额,如为空表已付款</param>
        /// <param name="PaymentType">PaymentType.现金或者 PaymentType.刷卡</param>
        /// <returns></returns>
        /// <remarks>2013-08-21 朱成果 创建</remarks>
        private void GenerateOtherDataForPickUp(WhStockOut entity, Hyt.Model.SyUser user, decimal?payMoney, int PaymentType)
        {
            var     f        = Hyt.DataAccess.Finance.IFnReceiptVoucherDao.Instance.GetEntity((int)Hyt.Model.WorkflowStatus.FinanceStatus.收款来源类型.销售单, entity.OrderSysNO);
            decimal havePaid = 0;

            if (f != null && f.Status != (int)Hyt.Model.WorkflowStatus.FinanceStatus.收款单状态.作废)
            {
                havePaid = f.ReceivedAmount;//预付金额
            }
            var delivery = new LgDelivery()
            {
                DeliveryUserSysNo = user.SysNo,
                DeliveryTypeSysNo = entity.DeliveryTypeSysNo,
                CreatedBy         = user.SysNo,
                CreatedDate       = DateTime.Now,
                Status            = (int)LogisticsStatus.配送单状态.已结算,
                StockSysNo        = entity.WarehouseSysNo,
                IsEnforceAllow    = 0,
                PaidAmount        = havePaid,
                CODAmount         = payMoney.HasValue ? payMoney.Value : 0
            };
            var deliverySysNo = Hyt.DataAccess.Logistics.ILgDeliveryDao.Instance.CreateLgDelivery(delivery);//生成结算单
            var deliveryItem  = new LgDeliveryItem()
            {
                DeliverySysNo    = deliverySysNo,
                NoteType         = (int)Hyt.Model.WorkflowStatus.LogisticsStatus.配送单据类型.出库单,
                NoteSysNo        = entity.SysNo,
                Status           = (int)Hyt.Model.WorkflowStatus.LogisticsStatus.配送单明细状态.已签收,
                AddressSysNo     = entity.ReceiveAddressSysNo,
                TransactionSysNo = entity.TransactionSysNo,
                StockOutAmount   = entity.StockOutAmount,
                PaymentType      = payMoney.HasValue ? (int)Hyt.Model.WorkflowStatus.BasicStatus.支付方式类型.到付 : (int)Hyt.Model.WorkflowStatus.BasicStatus.支付方式类型.预付,
                Receivable       = payMoney.HasValue ? payMoney.Value : 0,
                IsCOD            = payMoney.HasValue ? (int)Hyt.Model.WorkflowStatus.LogisticsStatus.是否到付.是 : (int)Hyt.Model.WorkflowStatus.LogisticsStatus.是否到付.否,
                Remarks          = "【门店自提系统自动创建】",
                CreatedBy        = user.SysNo,
                CreatedDate      = DateTime.Now
            };

            Hyt.DataAccess.Logistics.ILgDeliveryDao.Instance.AddDeliveryItem(deliveryItem);
            var settlement = new LgSettlement
            {
                AuditDate         = DateTime.Now,
                AuditorSysNo      = user.SysNo,
                CODAmount         = payMoney.HasValue ? payMoney.Value : 0,
                CreatedBy         = user.SysNo,
                CreatedDate       = DateTime.Now,
                DeliveryUserSysNo = user.SysNo,
                PaidAmount        = havePaid,
                TotalAmount       = payMoney.HasValue ? payMoney.Value : 0,
                Status            = (int)LogisticsStatus.结算单状态.已结算,
                WarehouseSysNo    = entity.WarehouseSysNo,
                Remarks           = "【门店自提系统自动创建】"
            };
            int settlementSysNo = Hyt.DataAccess.Logistics.ILgSettlementDao.Instance.Create(settlement);
            var settlementItem  = new LgSettlementItem
            {
                CreatedBy          = user.SysNo,
                CreatedDate        = DateTime.Now,
                DeliverySysNo      = deliverySysNo,
                DeliveryItemStatus = (int)LogisticsStatus.结算单状态.已结算,
                PayAmount          = payMoney.HasValue ? payMoney.Value : 0,
                SettlementSysNo    = settlementSysNo,
                TransactionSysNo   = entity.TransactionSysNo,
                Status             = (int)Hyt.Model.WorkflowStatus.LogisticsStatus.结算单明细状态.已结算,
                StockOutSysNo      = entity.SysNo,
                PayType            = PaymentType
            };

            Hyt.DataAccess.Logistics.ILgSettlementItemDao.Instance.Create(settlementItem);
        }
Exemplo n.º 10
0
        /// <summary>
        /// 二期业务数据三段 仓库物流
        /// </summary>
        /// <param name="listObject"></param>
        private void AddBaseTaskObject2ToList4(List <BaseTask> listObject)
        {
            //BaseTask bsAT = new BsArea();

            //BaseTask crCustomer = new CrCustomer();
            //BaseTask crCL = new CrCustomerLevel();
            //BaseTask crCQ = new CrCustomerQuestion();
            //BaseTask crRA = new CrReceiveAddress();

            //BaseTask feArticle = new FeArticle();
            //BaseTask feAC = new FeArticleCategory();
            //BaseTask feCS = new FeCommentSupport();
            //BaseTask fepc = new FeProductComment();
            //BaseTask fePCI = new FeProductCommentImage();
            //BaseTask fePCR = new FeProductCommentReply();

            //BaseTask fninvoice = new FnInvoice();

            //BaseTask fnpv = new FnReceiptVoucher();
            //BaseTask fnReceiptVoucherItem = new FnReceiptVoucherItem();
            //BaseTask fnop = new FnOnlinePayment();
            //BaseTask fnPaymentVoucher = new FnPaymentVoucher();
            //BaseTask fnPaymentVoucherItem = new FnPaymentVoucherItem();

            //BaseTask lgDelivery = new LgDelivery();
            //BaseTask lgDI = new LgDeliveryItem();
            //BaseTask lgDS = new LgDeliveryScope();

            //BaseTask lgDUC = new LgDeliveryUserCredit();

            //BaseTask lgsettlement = new LgSettlement();
            //BaseTask lgSI = new LgSettlementItem();

            //BaseTask pdAttribute = new PdAttribute();
            //BaseTask pdAG = new PdAttributeGroup();
            //BaseTask pdAGA = new PdAttributeGroupAssociation();
            //BaseTask pdAO = new PdAttributeOption();
            //BaseTask pdBrand = new PdBrand();
            //BaseTask pdCGA = new PdCatAttributeGroupAso();
            //BaseTask pdCategory = new PdCategory();
            //BaseTask pdCA = new PdCategoryAssociation();
            //BaseTask pdPrice = new PdPrice();
            //BaseTask pdProduct = new PdProduct();
            //BaseTask pdPA = new PdProductAssociation();
            //BaseTask pdProductAttribute = new PdProductAttribute();
            //BaseTask pdPI = new PdProductImage();
            //BaseTask pdTemplate = new PdTemplate();

            //BaseTask soOrder = new SoOrder();
            //BaseTask soOrderItem = new SoOrderItem();
            //BaseTask soRA = new SoReceiveAddress();

            BaseTask lgDelivery = new LgDelivery();
            BaseTask lgDI       = new LgDeliveryItem();

            BaseTask lgsettlement = new LgSettlement();
            BaseTask lgSI         = new LgSettlementItem();

            BaseTask whStockOut     = new WhStockOut();
            BaseTask whStockOutItem = new WhstockOutItem();

            BaseTask whstockin     = new WhStockIn();
            BaseTask whstockinItem = new WHStockinItem();
            BaseTask rcReturn      = new RCReturn();
            BaseTask rcReturnItem  = new RcReturnItem();

            //listObject.Add(bsAT);

            ////listObject.Add(bsOrganization);
            //listObject.Add(crCustomer);
            //listObject.Add(crCL);
            //listObject.Add(crCQ);
            //listObject.Add(crRA);

            //listObject.Add(feArticle);
            //listObject.Add(feAC);
            //listObject.Add(feCS);
            //listObject.Add(fePCI);
            //listObject.Add(fePCR);
            //listObject.Add(fepc);

            //listObject.Add(fnpv);
            //listObject.Add(fnReceiptVoucherItem);
            //listObject.Add(fnop);
            //listObject.Add(fninvoice);

            //listObject.Add(fnPaymentVoucher);
            //listObject.Add(fnPaymentVoucherItem);

            //listObject.Add(lgDelivery);
            //listObject.Add(lgDI);
            //listObject.Add(lgDS);
            //listObject.Add(lgsettlement);
            //listObject.Add(lgSI);

            //listObject.Add(pdAttribute);
            //listObject.Add(pdAG);
            //listObject.Add(pdAGA);
            //listObject.Add(pdAO);
            //listObject.Add(pdBrand);
            //listObject.Add(pdCGA);
            //listObject.Add(pdCategory);
            //listObject.Add(pdCA);
            //listObject.Add(pdPrice);
            //listObject.Add(pdProduct);
            //listObject.Add(pdPA);
            //listObject.Add(pdProductAttribute);
            //listObject.Add(pdTemplate);
            //listObject.Add(pdPI);

            //listObject.Add(soOrder);
            //listObject.Add(soOrderItem);
            //listObject.Add(soRA);



            listObject.Add(whStockOut);
            listObject.Add(whStockOutItem);
            listObject.Add(whstockin);
            listObject.Add(whstockinItem);

            listObject.Add(rcReturn);
            listObject.Add(rcReturnItem);

            listObject.Add(lgDelivery);
            listObject.Add(lgDI);

            listObject.Add(lgsettlement);
            listObject.Add(lgSI);
        }
Exemplo n.º 11
0
 /// <summary>
 /// 新增出库单
 /// </summary>
 /// <param name="model">用于新增出库单的实体</param>
 /// <returns>返回出库单系统编号</returns>
 /// <remarks>2013-06-08 周瑜 创建</remarks>
 public abstract int Insert(WhStockOut model);
Exemplo n.º 12
0
 /// <summary>
 /// 修改出库单(用于事务处理)
 /// </summary>
 /// <param name="model">用于修改出库单的实体</param>
 /// <param name="status">状态</param>
 /// <returns>返回受影响的行数</returns>
 /// <remarks>2014-08-01 余勇 创建</remarks>
 public abstract int UpdateStockOutByStatus(WhStockOut model, int status);
Exemplo n.º 13
0
 /// <summary>
 /// 修改出库单状态
 /// </summary>
 /// <param name="model">用于修改出库单的实体</param>
 /// <returns>返回受影响的行数</returns>
 /// <remarks>2013-06-08 周瑜 创建</remarks>
 public abstract int Update(WhStockOut model);
Exemplo n.º 14
0
        /// <summary>
        /// 订单分配出库
        /// </summary>
        /// <param name="datas">出库商品列表:Model.Quantity 为出库数量</param>
        /// <param name="warehouseSysNo">仓库编号</param>
        /// <param name="user">操作人</param>
        /// <returns></returns>
        /// <remarks>
        /// 2013-07-16 黄伟 创建
        /// 2013-12-19 黄志勇 修改订单日志
        /// </remarks>
        private WhStockOut CreateOutStock(IList <Model.SoOrderItem> datas, int warehouseSysNo, SyUser user)
        {
            if (datas == null || !datas.Any())
            {
                return(null);
            }
            if (warehouseSysNo < 1)
            {
                throw new ArgumentNullException("warehouseSysNo", @"必需选择一个仓库");
            }
            var so      = SoOrderBo.Instance.GetEntity(datas[0].OrderSysNo);
            var soItems = SoOrderBo.Instance.GetOrderItemsByOrderId(so.SysNo);

            var whStockOut = new WhStockOut()
            {
                ContactBeforeDelivery = so.ContactBeforeDelivery,
                CreatedBy             = user.SysNo,
                CreatedDate           = DateTime.Now,
                ReceiveAddressSysNo   = so.ReceiveAddressSysNo,
                CustomerMessage       = so.CustomerMessage,
                DeliveryRemarks       = so.DeliveryRemarks,
                DeliveryTime          = so.DeliveryTime,
                DeliveryTypeSysNo     = so.DeliveryTypeSysNo,
                InvoiceSysNo          = so.InvoiceSysNo,
                IsCOD = 1,
                IsPrintedPackageCover = 1,
                IsPrintedPickupCover  = 1,
                LastUpdateBy          = user.SysNo,
                LastUpdateDate        = DateTime.Now,
                OrderSysNO            = so.SysNo,
                Receivable            = so.CashPay,
                Remarks          = so.Remarks,
                Status           = (int)WarehouseStatus.出库单状态.待配送,
                StockOutAmount   = so.OrderAmount,
                TransactionSysNo = so.TransactionSysNo,
                WarehouseSysNo   = warehouseSysNo,
                StockOutDate     = DateTime.Now,
                StockOutBy       = user.SysNo
            };

            //note:调用保存出库单主表的方法
            whStockOut.SysNo = IOutStockDao.Instance.InsertMain(whStockOut);

            foreach (var data in datas)
            {
                var whStockOutItem = new WhStockOutItem()
                {
                    CreatedBy        = user.SysNo,
                    CreatedDate      = DateTime.Now,
                    LastUpdateBy     = user.SysNo,
                    LastUpdateDate   = DateTime.Now,
                    Measurement      = "",
                    OrderSysNo       = so.SysNo,
                    OriginalPrice    = data.OriginalPrice,
                    ProductName      = data.ProductName,
                    ProductQuantity  = data.Quantity,
                    RealSalesAmount  = data.SalesAmount / data.Quantity * data.RealStockOutQuantity,
                    ProductSysNo     = data.ProductSysNo,
                    Status           = 1,
                    StockOutSysNo    = whStockOut.SysNo,
                    TransactionSysNo = so.TransactionSysNo,
                    Weight           = 0m,
                    OrderItemSysNo   = data.SysNo
                };

                //调用保存出库单明细表的方法
                IOutStockDao.Instance.InsertItem(whStockOutItem); //朱成果 添加
                var soItem = soItems.First(p => p.SysNo == data.SysNo);
                //更新当前出库明细中的出库数量
                soItem.RealStockOutQuantity += data.Quantity;
                //出库数量到数据库
                ISoOrderItemDao.Instance.UpdateOutStockQuantity(soItem.SysNo, soItem.RealStockOutQuantity);
            }

            //更新销售单主表
            so.Status       = (int)OrderStatus.销售单状态.已创建出库单;
            so.OnlineStatus = Constant.OlineStatusType.已发货;

            //调用更新销售单主表方法
            so.DefaultWarehouseSysNo = warehouseSysNo;

            SoOrderBo.Instance.UpdateOrder(so); //更新订单 余勇修改为调用业务层方法  ISoOrderDao.Instance.Update(so); //更新订单状态,默认出库仓库

            var warehouseName = WhWarehouseBo.Instance.GetWarehouseEntity(warehouseSysNo).WarehouseName;

            SoOrderBo.Instance.WriteSoTransactionLog(so.TransactionSysNo,
                                                     string.Format(Constant.ORDER_TRANSACTIONLOG_OUTSTOCK_CREATE,
                                                                   warehouseName, whStockOut.SysNo), user.UserName);

            return(whStockOut);
        }