Exemplo n.º 1
0
        /// <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, "打印异常");
            }
        }
Exemplo n.º 2
0
        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);
        }