コード例 #1
0
        /// <summary>
        /// 打印快递单
        /// </summary>
        /// <param name="deliveryOrder"></param>
        /// <param name="preview"></param>
        private void PrintExpressReceipt(OPC_ShippingSale deliveryOrder, bool preview)
        {
            if (deliveryOrder == null)
            {
                MvvmUtility.ShowMessageAsync("请选择一张快递单", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }
            if (!deliveryOrder.SalesOrders.Any())
            {
                MvvmUtility.ShowMessageAsync("没有对应的销售单信息", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }
            if (deliveryOrder.ShipViaId == null)
            {
                MvvmUtility.ShowMessageAsync("尚未生成快递单", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }
            var selectedShippingVia = ShippingViaList.Where(shippingVia => shippingVia.Id == deliveryOrder.ShipViaId.Value).FirstOrDefault();

            if (selectedShippingVia == null)
            {
                MvvmUtility.ShowMessageAsync("无效的快递公司", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }
            if (string.IsNullOrEmpty(selectedShippingVia.TemplateName))
            {
                MvvmUtility.ShowMessageAsync("暂不支持此快递公司的打印", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }

            var reportName = string.Format("Print//{0}.rdlc", selectedShippingVia.TemplateName);
            var salesOrder = deliveryOrder.SalesOrders.First();
            var order      = salesOrder.Order;
            var expressReceiptPrintModel = new PrintExpressModel()
            {
                CustomerAddress = order.CustomerAddress,
                CustomerName    = order.CustomerName,
                CustomerPhone   = order.CustomerPhone,
                StoreName       = salesOrder.StoreName,
                StoreAddress    = salesOrder.StoreAddress,
                StoreTel        = salesOrder.StoreTelephone,
                ExpressFee      = deliveryOrder.ExpressFee.ToString("f2")
            };

            Action print = () =>
            {
                IPrint reporter = new PrintWin();
                reporter.PrintExpress(reportName, expressReceiptPrintModel, !preview);
            };

            MvvmUtility.PerformActionOnUIThread(print);

            if (!preview)
            {
                DeliveryOrderService.Print(deliveryOrder, ReceiptType.ExpressReceipt);
            }
        }
コード例 #2
0
        private void OnOrderOfHandOverLoad(OPC_ShippingSale deliveryOrder)
        {
            if (deliveryOrder == null)
            {
                OrderOfHandOver = null;
                return;
            }
            var salesOrder = deliveryOrder.SalesOrders.FirstOrDefault();

            OrderOfHandOver = salesOrder == null ? null : new List <Order> {
                salesOrder.Order
            };
        }
コード例 #3
0
        private void PrintDeliveryOrder(OPC_ShippingSale deliveryOrder, bool preview)
        {
            const string ReportName = "Print//DeliveryReceipt.rdlc";

            if (deliveryOrder == null)
            {
                MvvmUtility.ShowMessageAsync("请选择一张发货单", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }
            if (!deliveryOrder.SalesOrders.Any())
            {
                MvvmUtility.ShowMessageAsync("没有对应的销售单信息", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                return;
            }
            var order             = deliveryOrder.SalesOrders.First().Order;
            var salesOrders       = deliveryOrder.SalesOrders;
            var salesOrderDetails = new List <OPC_SaleDetail>();

            salesOrders.ForEach(salesOrder =>
            {
                var details = SalesOrderDetailService.QueryAll(new QuerySalesOrderDetailBySalesOrderNo {
                    SalesOrderNo = salesOrder.SaleOrderNo
                });
                salesOrderDetails.AddRange(details);
            });

            Action print = () =>
            {
                IPrint reporter = new PrintWin();
                reporter.PrintDeliveryOrder(ReportName, order, salesOrders, salesOrderDetails, !preview);
            };

            MvvmUtility.PerformActionOnUIThread(print);

            if (!preview)
            {
                DeliveryOrderService.Print(deliveryOrder, ReceiptType.DeliveryOrder);
            }
        }
コード例 #4
0
        public bool CreateShippingSale(int userId, ShippingSaleCreateDto shippingSaleDto)
        {
            var dt   = DateTime.Now;
            var user = _accountService.GetByUserID(userId);

            _orderRepository.SetCurrentUser(user);

            _shippingSaleRepository.SetCurrentUser(user);
            _sectionRepository.SetCurrentUser(user);
            _saleRepository.SetCurrentUser(user);

            var order = _orderRepository.GetOrderByOrderNo(shippingSaleDto.OrderNo);

            foreach (var saleID in shippingSaleDto.SaleOrderIDs)
            {
                var     saleOrder = _saleRepository.GetBySaleNo(saleID);
                Section section   = null;;
                if (saleOrder != null)
                {
                    section = _sectionRepository.GetByID((int)saleOrder.SectionId);
                }

                var sale = new OPC_ShippingSale();
                sale.CreateDate = dt;
                sale.CreateUser = userId;
                sale.UpdateDate = dt;
                sale.UpdateUser = userId;
                sale.OrderNo    = shippingSaleDto.OrderNo;

                sale.ShipViaId             = shippingSaleDto.ShipViaID;
                sale.ShippingCode          = shippingSaleDto.ShippingCode;
                sale.ShippingFee           = (decimal)(shippingSaleDto.ShippingFee);
                sale.ShippingStatus        = EnumSaleOrderStatus.PrintInvoice.AsId();
                sale.ShipViaName           = shippingSaleDto.ShipViaName;
                sale.ShippingAddress       = order.ShippingAddress;
                sale.ShippingContactPerson = order.ShippingContactPerson;
                sale.ShippingContactPhone  = order.ShippingContactPhone;
                if (section != null)
                {
                    sale.StoreId = section.StoreId;
                }

                //sale.BrandId = order.BrandId;


                //验证是否已经生成过发货单
                var lst = _shippingSaleRepository.GetBySaleOrderNo(saleID);

                if (lst != null)
                {
                    throw new ShippingSaleExistsException(shippingSaleDto.ShippingCode);
                }
                //验证发货单号 是否重复
                var e = _shippingSaleRepository.GetByShippingCode(shippingSaleDto.ShippingCode, 1, 1);
                if (e.TotalCount > 0)
                {
                    throw new ShippingSaleExistsException(shippingSaleDto.ShippingCode);
                }

                var pSale = _saleRepository.GetBySaleNo(saleID);
                pSale.ShippingCode   = sale.ShippingCode;
                pSale.ShippingStatus = sale.ShippingStatus;
                _saleRepository.Update(pSale);

                var bl = _shippingSaleRepository.Create(sale);
                _saleRepository.UpdateSatus(saleID, EnumSaleOrderStatus.PrintExpress, userId);
            }

            return(true);
        }
コード例 #5
0
        public void CreatePackage(ShippingSaleCreateDto package, int uid)
        {
            using (var db = new YintaiHZhouContext())
            {
                var order = db.Orders.FirstOrDefault(x => x.OrderNo == package.OrderNo);
                if (order == null)
                {
                    throw new PackageException("订单无效");
                }

                var shippingSale =
                    db.OPC_ShippingSales.FirstOrDefault(
                        x => x.OrderNo == package.OrderNo && x.ShippingCode == package.ShippingCode);
                if (shippingSale != null)
                {
                    shippingSale.ShippingCode = package.ShippingCode;
                    shippingSale.ShipViaName  = package.ShipViaName;
                    shippingSale.ShipViaId    = package.ShipViaID;
                    shippingSale.ShippingFee  = package.ShippingFee;
                    shippingSale.UpdateDate   = DateTime.Now;
                    shippingSale.UpdateUser   = uid;
                    db.SaveChanges();
                }
                else
                {
                    shippingSale = new OPC_ShippingSale()
                    {
                        CreateDate            = DateTime.Now,
                        CreateUser            = uid,
                        UpdateDate            = DateTime.Now,
                        UpdateUser            = uid,
                        OrderNo               = package.OrderNo,
                        ShipViaId             = package.ShipViaID,
                        ShippingCode          = package.ShippingCode,
                        ShippingFee           = (decimal)(package.ShippingFee),
                        ShippingStatus        = EnumSaleOrderStatus.PrintInvoice.AsId(),
                        ShipViaName           = package.ShipViaName,
                        ShippingAddress       = order.ShippingAddress,
                        ShippingContactPerson = order.ShippingContactPerson,
                        ShippingContactPhone  = order.ShippingContactPhone,
                        //StoreId = section.StoreId,
                    };
                    shippingSale = db.OPC_ShippingSales.Add(shippingSale);
                    db.SaveChanges();
                }

                using (var ts = new TransactionScope())
                {
                    foreach (var saleOrderNo in package.SaleOrderIDs)
                    {
                        var saleOrder = db.OPC_Sales.FirstOrDefault(x => x.SaleOrderNo == saleOrderNo);
                        if (saleOrder == null)
                        {
                            continue;
                            //throw new PackageException("包裹中包含无效的销售单");
                        }
                        saleOrder.ShippingSaleId = shippingSale.Id;
                        saleOrder.ShipViaId      = package.ShipViaID;
                        saleOrder.ShippingCode   = package.ShippingCode;
                        saleOrder.ShippingStatus = shippingSale.ShippingStatus;
                        saleOrder.UpdatedDate    = DateTime.Now;
                        saleOrder.UpdatedUser    = uid;
                        saleOrder.Status         = (int)EnumSaleOrderStatus.PrintExpress;
                        saleOrder.ShippingFee    = package.ShippingFee;
                        db.SaveChanges();
                    }
                    ts.Complete();
                }
            }
        }
コード例 #6
0
 /// <summary>
 /// 打印快递单
 /// </summary>
 private void OnExpressReceiptPrint(OPC_ShippingSale deliveryOrder)
 {
     PrintExpressReceipt(deliveryOrder, false);
 }
コード例 #7
0
 /// <summary>
 /// 打印预览快递单
 /// </summary>
 private void OnExpressReceiptPreview(OPC_ShippingSale deliveryOrder)
 {
     PrintExpressReceipt(deliveryOrder, true);
 }
コード例 #8
0
 private void OnDeliveryOrderPreview(OPC_ShippingSale deliveryOrder)
 {
     PrintDeliveryOrder(deliveryOrder, true);
 }
コード例 #9
0
 private void OnDeliveryOrderPrint(OPC_ShippingSale deliveryOrder)
 {
     PrintDeliveryOrder(deliveryOrder, false);
 }
コード例 #10
0
        public IHttpActionResult PostOrder([FromBody] CreateShippingSaleOrderRequest request, [UserId] int userId, [UserProfile] UserProfile userProfile)
        {
            //不同的销售单可以生成同一个出库单
            if (!ModelState.IsValid || request == null || request.SalesOrderNos == null || request.SalesOrderNos.Count == 0)
            {
                return(BadRequest("参数错误"));
            }

            //验证用户合法性
            if (userProfile.StoreIds != null && !userProfile.StoreIds.Any())
            {
                return(BadRequest("您没有门店信息,请先维护门店信息"));
            }

            var stores   = userProfile.StoreIds == null ? null : userProfile.StoreIds.ToList();
            var saleList = _saleOrderRepository.GetListByNos(request.SalesOrderNos, new SaleOrderFilter
            {
                DataRoleStores = stores,
                // HasDeliveryOrderGenerated = false,
                Status = (int)EnumSaleOrderStatus.ShipInStorage
            });

            if (saleList.Count != request.SalesOrderNos.Count)
            {
                return(BadRequest("获取销售单信息不一致,请重新选择销售单"));
            }

            var s = saleList[0];

            //目前规则只能 单订单 1对1 出货单
            foreach (var item in saleList)
            {
                if (s.OrderNo != item.OrderNo)
                {
                    return(BadRequest(String.Format("订单ID的不一致,请确认。订单号:{0} vs {1}", s.OrderNo, item.OrderNo)));
                }
            }

            var order   = _orderRepository.GetOrderByOrderNo(s.OrderNo);
            var section = _sectionRepository.GetByID(s.SectionId ?? 0);

            var entity = new OPC_ShippingSale
            {
                CreateDate            = DateTime.Now,
                CreateUser            = userId,
                UpdateDate            = DateTime.Now,
                UpdateUser            = userId,
                OrderNo               = order.OrderNo,
                PrintTimes            = 0,
                RmaNo                 = String.Empty,
                ShipViaId             = 0,
                ShipViaName           = String.Empty,
                ShippingAddress       = order.ShippingAddress,
                ShippingCode          = String.Empty,
                ShippingContactPerson = order.ShippingContactPerson,
                ShippingContactPhone  = order.ShippingContactPhone,
                ShippingFee           = 0m,
                ShippingRemark        = String.Empty,
                ShippingStatus        = (int)EnumSaleOrderStatus.PrintInvoice,
                ShippingZipCode       = order.ShippingZipCode,
                StoreId               = section == null ? order.StoreId : section.StoreId,//拿销售单storeid
            };

            var model = _shippingOrderRepository.CreateBySaleOrder(entity, saleList, userId, String.Empty);

            var dto = Mapper.Map <ShippingOrderModel, ShippingSaleDto>(model);

            return(RetrunHttpActionResult(dto));
        }