/// <summary> /// 打印 /// </summary> /// <returns></returns> public async Task RenderPrinterAsync(CardOrder page) { try { #region 验证信息 var orderNoList = GetSelectOrderNoList(page.DataGridOrderList); if ((orderNoList?.Count ?? 0) <= 0) { _onTipRender.ExecuteTip(page.BodyPanel, "请选择要打印的订单"); return; } var data = _onControlRender.ConvertObject <CardOrderItemResponse>(page.DataGridOrderList.Items); var orderList = FindOrderNos(data, orderNoList); if ((orderList?.Count ?? 0) <= 0) { _onTipRender.ExecuteTip(page.BodyPanel, "未找到要打印的订单"); return; } #endregion var outOrderNoList = new List <string>(); var printer = PrintFactory.GetPrintRender(_onDeviceSettingPlugins.GlobalConfig.PrintConfig); var respVerify = printer.Verify(); if (!(respVerify?.IsSuccess ?? false)) { _onTipRender.ExecuteTip(page.BodyPanel, $"{respVerify?.Msg}"); return; } foreach (var item in orderList) { var resp = await ExecutePrinter(printer, item); if (!resp) { outOrderNoList.Add(item.OrderNo); } } if ((outOrderNoList?.Count ?? 0) > 0) { _onTipRender.ExecuteTip(page.BodyPanel, $"{string.Join(",", outOrderNoList.ToArray())} 打印失败"); return; } _onTipRender.ExecuteTip(page.BodyPanel, "打印成功", UControl.EnumResultType.OK); } catch (Exception ex) { TextHelper.Error("RenderPrinterAsync 异常", ex); _onTipRender.ExecuteTip(page.BodyPanel, "打印异常"); } }
public async void ExecuteRefundAsync(CardOrder page, string orderNo, decimal refundAmount, decimal totalAmount, decimal receiveAmount, string refundPassword) { if (string.IsNullOrWhiteSpace(refundPassword)) { refundPassword = await _onCashierRequest.FindRefundPassword(AccountCache.Persist.CashId); } var resp = await _onOrderRequest.ExecuteRefundAsync(orderNo, refundPassword, refundAmount); if (!(resp.IsSuccess) || (resp?.Data ?? null) == null) { _onTipRender.ExecuteTip(page.BodyPanel, resp?.Msg ?? "退款失败"); return; } await this.RenderListAsync(page); #region 打印退款小票 TextHelper.LogInfo($"打印退款小票储蓄卡退款小票开始"); var printer = PrintFactory.GetPrintRender(_onDeviceSettingPlugins.GlobalConfig.PrintConfig); var printerResp = await printer.ExecuteRefundAsync(new Model.RefundContentRequest() { IsRepair = false, TotalAmount = totalAmount, ReceiptAmount = receiveAmount, RefundAmount = resp.Data.RefundFee, IsCard = true, PayType = resp.Data.PayType.ToPayType().GetDescription(), TradeNo = resp.Data.OutTradeNo, TradeTime = string.IsNullOrEmpty(resp.Data.RefundTime) ? DateTime.Now : Convert.ToDateTime(resp.Data.RefundTime) }, AccountCache.ToMerchantResponse(), true); #endregion _onSystemRender.ExecuteVideoAsync(refundAmount, EnumOptionPayType.Refund); _onTipRender.ExecuteTip(page.BodyPanel, "退款成功", UControl.EnumResultType.OK); }