/// <summary>
        /// 预览或打印退货单
        /// </summary>
        /// <param name="flag"></param>
        /// <returns></returns>
        private bool PrintCommon(bool flag = false)
        {
            if (SelectedRma == null)
            {
                MvvmUtility.ShowMessageAsync("请选择退货单", "提示", MessageBoxButton.OK, MessageBoxImage.Warning);
                return(false);
            }
            try
            {
                IPrint pr       = new PrintWin();
                string xsdName  = "InvoiceDataSet";
                string rdlcName = "Print//PrintRMA.rdlc";

                var invoiceModel = new ReturnGoodsPrintModel();
                invoiceModel.RmaDT = new List <RMADto> {
                    SelectedRma
                };
                invoiceModel.RMADetailDT = RmaDetailList;
                invoiceModel.OrderDT     = AppEx.Container.GetInstance <IPackageService>()
                                           .GetOrderByOrderNo(SelectedRma.OrderNo)
                                           .ToList();

                pr.PrintReturnGoods(xsdName, rdlcName, invoiceModel, flag);
                return(true);
            }
            catch (Exception Ex)
            {
                MvvmUtility.ShowMessageAsync("打印退货单失败," + Ex.Message, "提示", MessageBoxButton.OK, MessageBoxImage.Error);
                return(false);
            }
        }
Beispiel #2
0
        private bool PrintCommon(bool previewOnly = false, bool isRecoveredPrint = false)
        {
            const string XsdName    = "InvoiceDataSet";
            const string ReportName = "Print//SalesOrder.rdlc";

            if (SaleList == null || SaleSelected == null)
            {
                MvvmUtility.ShowMessageAsync("请选择要打印预览的销售单");
                return(false);
            }

            SaleSelected.IsRecoveredPrint = isRecoveredPrint;

            var printModel = new PrintModel
            {
                SaleDT = new List <SaleDto> {
                    SaleSelected
                },
                SaleDetailDT = InvoiceDetail4List,
            };

            MvvmUtility.PerformActionOnUIThread(
                () =>
            {
                IPrint print = new PrintWin();
                print.Print(XsdName, ReportName, printModel, previewOnly);
            });

            return(true);
        }
        /// <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);
            }
        }
        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);
            }
        }