PrintService.kt 21.1 KB
Newer Older
jiangjiantao's avatar
jiangjiantao committed
1 2
package com.miya.fastcashier.service

jiangjiantao's avatar
jiangjiantao committed
3
import android.text.TextUtils
jiangjiantao's avatar
jiangjiantao committed
4
import com.miya.fastcashier.beans.SelfCashierAccountInfo
gaodapeng's avatar
gaodapeng committed
5
import com.miya.fastcashier.beans.ViewOrderStatisticsInfo
jiangjiantao's avatar
jiangjiantao committed
6
import com.miya.fastcashier.utils.DateUtils
jiangjiantao's avatar
jiangjiantao committed
7 8
import com.miya.fastcashier.utils.MiYaPayPlantformPayWayEnum
import com.miya.fastcashier.utils.StringPriceFormat
gaodapeng's avatar
gaodapeng committed
9
import com.miya.fastcashier.utils.isEmpty
10
import com.miya.fastcashier.utils.manage.OrderRecordManageKit
jiangjiantao's avatar
jiangjiantao committed
11 12 13
import com.miya.print.IPrinter
import com.miya.print.PrinterManager
import com.miya.print.utils.Page58MmPrintUtils
jiangjiantao's avatar
jiangjiantao committed
14
import com.sdy.miya.moblie.component.pay.platform.bean.PayServiceResponse
jiangjiantao's avatar
jiangjiantao committed
15
import java.util.*
jiangjiantao's avatar
jiangjiantao committed
16

gaodapeng's avatar
gaodapeng committed
17
object PrintService {
jiangjiantao's avatar
jiangjiantao committed
18

gaodapeng's avatar
gaodapeng committed
19
    private var payServiceResponse: PayServiceResponse? = null;
jiangjiantao's avatar
jiangjiantao committed
20

jiangjiantao's avatar
jiangjiantao committed
21 22 23
    /**
     * 退款
     */
gaodapeng's avatar
gaodapeng committed
24 25 26 27
    fun refundPrint(
        selfCashierAccountInfo: SelfCashierAccountInfo,
        payServiceResponse: PayServiceResponse
    ) {
jiangjiantao's avatar
jiangjiantao committed
28 29 30 31 32
        val printer = PrinterManager.getInstance().printer
        printer.beginPrint()
        //检查打印机状态
        printer.printerStatus
        printer.set58mm()
gaodapeng's avatar
gaodapeng committed
33
        refundPrintCashier(printer, payServiceResponse, selfCashierAccountInfo)
zhaopengxiang's avatar
zhaopengxiang committed
34
        refundPrintCustomer(printer, payServiceResponse, selfCashierAccountInfo)
jiangjiantao's avatar
jiangjiantao committed
35 36 37 38
        printer.feedPaper()
        printer.endPrint()
    }

39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
    /**
     * 查询订单单项打印
     */
    fun printSearchOrder(
        selfCashierAccountInfo: SelfCashierAccountInfo,
        payServiceResponse: PayServiceResponse,
        isRefund: Boolean
    ) {

        if (isRefund) {
            refundPrint(selfCashierAccountInfo, payServiceResponse)
        } else {
            val printer = PrinterManager.getInstance().printer
            printer.beginPrint()
            //检查打印机状态
            printer.printerStatus
            printer.set58mm()
zhaopengxiang's avatar
zhaopengxiang committed
56 57 58 59 60 61 62
//            if (BuildConfig.DEBUG) {
//                printCashier(
//                    printer,
//                    payServiceResponse,
//                    selfCashierAccountInfo,
//                    OrderRecordManageKit.getSerialNoByOrderNo(payServiceResponse.shopTradeNo))
//            } else {
63 64 65 66 67 68 69 70 71 72 73 74
                printCashier(
                    printer,
                    payServiceResponse,
                    selfCashierAccountInfo,
                    OrderRecordManageKit.getSerialNoByOrderNo(payServiceResponse.shopTradeNo)
                )
                printCustomer(
                    printer,
                    payServiceResponse,
                    selfCashierAccountInfo,
                    OrderRecordManageKit.getSerialNoByOrderNo(payServiceResponse.shopTradeNo)
                )
zhaopengxiang's avatar
zhaopengxiang committed
75
//            }
76 77 78 79 80
            printer.feedPaper()
            printer.endPrint()
        }
    }

jiangjiantao's avatar
jiangjiantao committed
81 82 83
    /**
     * 打印上一单
     */
gaodapeng's avatar
gaodapeng committed
84 85
    fun printLastOrderInfo() {
        if (payServiceResponse == null) {
jiangjiantao's avatar
jiangjiantao committed
86
            throw java.lang.RuntimeException("暂无上一单信息")
gaodapeng's avatar
gaodapeng committed
87
        } else {
jiangjiantao's avatar
jiangjiantao committed
88
            AccountService.getAccountInfo()?.let { payInfoPrint(payServiceResponse!!, it) }
jiangjiantao's avatar
jiangjiantao committed
89 90 91
        }
    }

jiangjiantao's avatar
jiangjiantao committed
92 93 94
    /**
     * 扣款信息打印
     */
gaodapeng's avatar
gaodapeng committed
95 96 97 98
    fun payInfoPrint(
        payServiceResponse: PayServiceResponse,
        selfCashierAccountInfo: SelfCashierAccountInfo
    ) {
jiangjiantao's avatar
jiangjiantao committed
99 100 101 102
        //保存上一单信息
        this.payServiceResponse = payServiceResponse

        //记录流水号,退款要用
103 104
        val serialNumber = OrderRecordManageKit.getSerialNumber()
        OrderRecordManageKit.setSerialNoByOrderNo(payServiceResponse.shopTradeNo, serialNumber)
jiangjiantao's avatar
jiangjiantao committed
105

jiangjiantao's avatar
jiangjiantao committed
106 107 108 109
        val printer = PrinterManager.getInstance().printer
        printer.beginPrint()
        //检查打印机状态
        printer.printerStatus
jiangjiantao's avatar
jiangjiantao committed
110
        printer.set58mm()
zhaopengxiang's avatar
zhaopengxiang committed
111 112 113 114 115 116
//        if (BuildConfig.DEBUG) {
//            printCashier(printer, payServiceResponse, selfCashierAccountInfo, serialNumber)
//        } else {
        printCashier(printer, payServiceResponse, selfCashierAccountInfo, serialNumber)
        printCustomer(printer, payServiceResponse, selfCashierAccountInfo, serialNumber)
//        }
gaodapeng's avatar
gaodapeng committed
117 118 119 120 121 122 123 124 125 126
        printer.feedPaper()
        printer.endPrint()
    }

    /**
     * 统计,给两个时间,
     */
    fun printStatisticInfo(
        viewOrderStatisticsInfo: ViewOrderStatisticsInfo,
        selfCashierAccountInfo: SelfCashierAccountInfo,
gaodapeng's avatar
gaodapeng committed
127
        isBalance: Boolean
gaodapeng's avatar
gaodapeng committed
128 129 130 131 132 133
    ) {
        val printer = PrinterManager.getInstance().printer
        printer.beginPrint()
        //检查打印机状态
        printer.printerStatus
        printer.set58mm()
gaodapeng's avatar
gaodapeng committed
134
        doPrintStatisticInfo(printer, viewOrderStatisticsInfo, selfCashierAccountInfo, isBalance)
jiangjiantao's avatar
jiangjiantao committed
135 136 137 138 139
        printer.feedPaper()
        printer.endPrint()
    }


gaodapeng's avatar
gaodapeng committed
140 141 142
    private fun doPrintStatisticInfo(
        printer: IPrinter,
        orderStatisticsInfo: ViewOrderStatisticsInfo,
gaodapeng's avatar
gaodapeng committed
143 144
        accountInfo: SelfCashierAccountInfo,
        isBalance: Boolean
gaodapeng's avatar
gaodapeng committed
145
    ) {
gaodapeng's avatar
gaodapeng committed
146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163

        if (accountInfo.shopInfo == null) {
            throw RuntimeException("无商户配置数据")
        }
        val shopInfo = accountInfo.shopInfo
        printer.printText(IPrinter.ALIGN_CENTER, 3, accountInfo.shopInfo?.storeName ?: "", true)
        if (isBalance) {
            printer.printText(IPrinter.ALIGN_CENTER, 3, "结算总计单", true)
        } else {
            printer.printText(IPrinter.ALIGN_CENTER, 3, "交易汇总表", true)
        }

        printer.setAlign(IPrinter.ALIGN_LEFT)
        printer.printText("商户名称:converse")
        printer.printText("商户编号:${shopInfo.saasid}")
        printer.printText("终端编号:${shopInfo.posId}")
        printer.printText("门店编号:${shopInfo.storeId}")

gaodapeng's avatar
gaodapeng committed
164 165 166 167 168 169 170
        //统计时间
        printer.printText(0, 0, "开始时间:" + orderStatisticsInfo.beginDate, true)
        printer.printText(0, 0, "结束时间:" + orderStatisticsInfo.endDate, true)

        val totalStatistics: ViewOrderStatisticsInfo.StatisticBean? =
            orderStatisticsInfo.totalStatistic
        if (totalStatistics != null) {
171 172
            var tradeCount = totalStatistics.tradeCount + totalStatistics.refundCount

gaodapeng's avatar
gaodapeng committed
173 174 175 176
            printer.printText(0, 0, Page58MmPrintUtils.printDivideLineString(), true)
            printer.printText(
                Page58MmPrintUtils.printTwoData(
                    "总交易笔数",
177
                    "" + tradeCount
gaodapeng's avatar
gaodapeng committed
178 179
                )
            )
180 181

            var tradeTotalAmount = totalStatistics.tradeTotalAmount - totalStatistics.refundTotalAmount
gaodapeng's avatar
gaodapeng committed
182 183 184
            printer.printText(
                Page58MmPrintUtils.printTwoData(
                    "总交易金额",
185
                    "" + StringPriceFormat.transStringPriceToDecimalString(tradeTotalAmount.toString())
gaodapeng's avatar
gaodapeng committed
186 187 188
                )
            )
        }
gaodapeng's avatar
gaodapeng committed
189 190 191 192

        if (!isEmpty(orderStatisticsInfo.typeStatistic)) {
            val typedStatisticList: List<ViewOrderStatisticsInfo.StatisticBean> =
                orderStatisticsInfo.typeStatistic
gaodapeng's avatar
gaodapeng committed
193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217
            var statisticBean: ViewOrderStatisticsInfo.StatisticBean
            for (i in typedStatisticList.indices) {
                if (typedStatisticList[i] == null) {
                    continue
                }
                statisticBean = typedStatisticList[i]
                printer.printText(0, 0, Page58MmPrintUtils.printDivideLineString(), true)
                printer.printText(
                    Page58MmPrintUtils.printTwoData(
                        "支付方式",
                        statisticBean.payType
                    )
                )
                printer.printText(
                    Page58MmPrintUtils.printTwoData(
                        "交易笔数",
                        "" + statisticBean.tradeCount
                    )
                )
                printer.printText(
                    Page58MmPrintUtils.printTwoData(
                        "交易金额",
                        "" + StringPriceFormat.transStringPriceToDecimalString(statisticBean.tradeTotalAmount.toString())
                    )
                )
gaodapeng's avatar
gaodapeng committed
218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235

                if (statisticBean.refundCount > 0) {
                    printer.printText(
                        Page58MmPrintUtils.printTwoData(
                            "退款笔数",
                            "" + statisticBean.refundCount
                        )
                    )
                }

                if (statisticBean.refundTotalAmount > 0) {
                    printer.printText(
                        Page58MmPrintUtils.printTwoData(
                            "退款金额",
                            "" + StringPriceFormat.transStringPriceToDecimalString(statisticBean.refundTotalAmount.toString())
                        )
                    )
                }
gaodapeng's avatar
gaodapeng committed
236 237
            }
        }
gaodapeng's avatar
gaodapeng committed
238 239

        printer.printText("\n\n")
gaodapeng's avatar
gaodapeng committed
240 241 242
    }


jiangjiantao's avatar
jiangjiantao committed
243 244 245
    /**
     * 打印收银员联
     */
gaodapeng's avatar
gaodapeng committed
246 247 248
    private fun printCashier(
        printer: IPrinter,
        payServiceResponse: PayServiceResponse,
249 250
        selfCashierAccountInfo: SelfCashierAccountInfo,
        serialNumber: String
gaodapeng's avatar
gaodapeng committed
251
    ) {
jiangjiantao's avatar
jiangjiantao committed
252

jiangjiantao's avatar
jiangjiantao committed
253
        val shopInfo = selfCashierAccountInfo.shopInfo
gaodapeng's avatar
gaodapeng committed
254
        printer.printText(IPrinter.ALIGN_CENTER, 3, shopInfo.storeName, true)
jiangjiantao's avatar
jiangjiantao committed
255 256 257 258 259 260
        printer.setAlign(IPrinter.ALIGN_LEFT)
        printer.printText("商户编号:${shopInfo.saasid}")
        printer.printText("终端编号:${shopInfo.posId}")
        printer.printText("商户名称:converse")
        printer.printText(Page58MmPrintUtils.printDivideLineString())
        printer.printText("交易类型:")
gaodapeng's avatar
gaodapeng committed
261 262 263 264 265 266
        printer.printText(
            IPrinter.ALIGN_LEFT,
            3,
            "    ${MiYaPayPlantformPayWayEnum.MiyaPayType.find(payServiceResponse.chanelTag).desc}",
            true
        )
jiangjiantao's avatar
jiangjiantao committed
267 268
        printer.printText(Page58MmPrintUtils.printDivideLineString())
        printer.printText("日期/时间:${DateUtils.format18(Date())}")
269
        printer.printText("流水号:${serialNumber}")
jiangjiantao's avatar
jiangjiantao committed
270 271 272 273 274
        printer.printText("商户订单号:")
        printer.printText(payServiceResponse.shopTradeNo)
        printer.printText("支付平台交易号:")
        printer.printText(payServiceResponse.chanelSerialNumber)
        printer.printText("金额:")
gaodapeng's avatar
gaodapeng committed
275 276 277 278 279 280
        printer.printText(
            IPrinter.ALIGN_LEFT,
            3,
            "    RMB${StringPriceFormat.transStringPriceToDecimalString(payServiceResponse.tradPrice)}",
            true
        )
jiangjiantao's avatar
jiangjiantao committed
281 282 283 284 285 286 287 288 289 290 291 292
        printer.printText(Page58MmPrintUtils.printDivideLineString())
        printer.printText("备注:")

        val couponDetail: Array<String> = payServiceResponse.transformCouponMessage
        if (couponDetail.size >= 2 && !TextUtils.isEmpty(couponDetail[1]) && couponDetail[1] != "0" && couponDetail[1] != "0.00") {
            val shopCoupon = couponDetail[1]
            //打印商家优惠
            printer.printText("商家优惠:${StringPriceFormat.transStringPriceToDecimalString(shopCoupon)}元")
        }
        if (couponDetail.size >= 3 && !TextUtils.isEmpty(couponDetail[2]) && couponDetail[2] != "0" && couponDetail[2] != "0.00") {
            //平台优惠
            val platformCoupon = couponDetail[2]
gaodapeng's avatar
gaodapeng committed
293 294 295 296 297 298 299 300 301
            val channel =
                MiYaPayPlantformPayWayEnum.MiyaPayType.find(payServiceResponse.chanelTag).desc
            printer.printText(
                "$channel 优惠:${
                    StringPriceFormat.transStringPriceToDecimalString(
                        platformCoupon
                    )
                }"
            )
jiangjiantao's avatar
jiangjiantao committed
302 303 304 305 306 307 308 309 310 311 312 313 314 315 316
        }
        if (couponDetail.isNotEmpty() && !TextUtils.isEmpty(couponDetail[0])) {
            val payPrice = couponDetail[0]
            printer.printText("客户支付:${StringPriceFormat.transStringPriceToDecimalString(payPrice)}元")
        }

        printer.printText("持卡人签名:")
        printer.printText(Page58MmPrintUtils.printDivideLineString())
        printer.printText("同意以上支付 ")
        printer.printText("\n\n")
    }

    /**
     * 打印顾客联
     */
gaodapeng's avatar
gaodapeng committed
317 318 319
    private fun printCustomer(
        printer: IPrinter,
        payServiceResponse: PayServiceResponse,
320 321
        selfCashierAccountInfo: SelfCashierAccountInfo,
        serialNumber: String
gaodapeng's avatar
gaodapeng committed
322
    ) {
jiangjiantao's avatar
jiangjiantao committed
323
        val shopInfo = selfCashierAccountInfo.shopInfo
gaodapeng's avatar
gaodapeng committed
324
        printer.printText(IPrinter.ALIGN_CENTER, 3, shopInfo.storeName, true)
jiangjiantao's avatar
jiangjiantao committed
325 326 327
        printer.setAlign(IPrinter.ALIGN_LEFT)
        printer.printText("持卡人存根")
        printer.printText(Page58MmPrintUtils.printDivideLineString())
jiangjiantao's avatar
jiangjiantao committed
328
        printer.printText("商户编号:${shopInfo.saasid}")
jiangjiantao's avatar
jiangjiantao committed
329 330 331
        printer.printText("终端编号:${shopInfo.posId}")
        printer.printText("商户名称:converse")
        printer.printText(Page58MmPrintUtils.printDivideLineString())
jiangjiantao's avatar
jiangjiantao committed
332
        printer.printText("交易类型:")
gaodapeng's avatar
gaodapeng committed
333 334 335 336 337 338
        printer.printText(
            IPrinter.ALIGN_LEFT,
            3,
            "    ${MiYaPayPlantformPayWayEnum.MiyaPayType.find(payServiceResponse.chanelTag).desc}",
            true
        )
jiangjiantao's avatar
jiangjiantao committed
339
        printer.printText(Page58MmPrintUtils.printDivideLineString())
jiangjiantao's avatar
jiangjiantao committed
340
        printer.printText("日期/时间:${DateUtils.format18(Date())}")
341
        printer.printText("流水号:${serialNumber}")
jiangjiantao's avatar
jiangjiantao committed
342 343 344 345
        printer.printText("商户订单号:")
        printer.printText(payServiceResponse.shopTradeNo)
        printer.printText("支付平台交易号:")
        printer.printText(payServiceResponse.chanelSerialNumber)
jiangjiantao's avatar
jiangjiantao committed
346
        printer.printText("金额:")
gaodapeng's avatar
gaodapeng committed
347 348 349 350 351 352
        printer.printText(
            IPrinter.ALIGN_LEFT,
            3,
            "    RMB${StringPriceFormat.transStringPriceToDecimalString(payServiceResponse.tradPrice)}",
            true
        )
jiangjiantao's avatar
jiangjiantao committed
353 354 355 356 357 358 359 360 361 362 363 364
        printer.printText(Page58MmPrintUtils.printDivideLineString())
        printer.printText("备注:")

        val couponDetail: Array<String> = payServiceResponse.transformCouponMessage
        if (couponDetail.size >= 2 && !TextUtils.isEmpty(couponDetail[1]) && couponDetail[1] != "0" && couponDetail[1] != "0.00") {
            val shopCoupon = couponDetail[1]
            //打印商家优惠
            printer.printText("商家优惠:${StringPriceFormat.transStringPriceToDecimalString(shopCoupon)}元")
        }
        if (couponDetail.size >= 3 && !TextUtils.isEmpty(couponDetail[2]) && couponDetail[2] != "0" && couponDetail[2] != "0.00") {
            //平台优惠
            val platformCoupon = couponDetail[2]
gaodapeng's avatar
gaodapeng committed
365 366 367 368 369 370 371 372 373
            val channel =
                MiYaPayPlantformPayWayEnum.MiyaPayType.find(payServiceResponse.chanelTag).desc
            printer.printText(
                "$channel 优惠:${
                    StringPriceFormat.transStringPriceToDecimalString(
                        platformCoupon
                    )
                }"
            )
jiangjiantao's avatar
jiangjiantao committed
374 375 376 377 378
        }
        if (couponDetail.isNotEmpty() && !TextUtils.isEmpty(couponDetail[0])) {
            val payPrice = couponDetail[0]
            printer.printText("客户支付:${StringPriceFormat.transStringPriceToDecimalString(payPrice)}元")
        }
jiangjiantao's avatar
jiangjiantao committed
379 380 381 382 383 384 385
        printer.printText("\n\n")
    }


    /**
     * 打印收银员联 - 退款
     */
gaodapeng's avatar
gaodapeng committed
386 387 388 389 390
    private fun refundPrintCashier(
        printer: IPrinter,
        payServiceResponse: PayServiceResponse,
        selfCashierAccountInfo: SelfCashierAccountInfo
    ) {
jiangjiantao's avatar
jiangjiantao committed
391
        val shopInfo = selfCashierAccountInfo.shopInfo
gaodapeng's avatar
gaodapeng committed
392
        printer.printText(IPrinter.ALIGN_CENTER, 3, shopInfo.storeName, true)
jiangjiantao's avatar
jiangjiantao committed
393 394 395 396 397 398
        printer.setAlign(IPrinter.ALIGN_LEFT)
        printer.printText("商户编号:${shopInfo.saasid}")
        printer.printText("终端编号:${shopInfo.posId}")
        printer.printText("商户名称:converse")
        printer.printText(Page58MmPrintUtils.printDivideLineString())
        printer.printText("交易类型:")
gaodapeng's avatar
gaodapeng committed
399 400 401 402 403 404
        printer.printText(
            IPrinter.ALIGN_LEFT,
            3,
            "    退款(${MiYaPayPlantformPayWayEnum.MiyaPayType.find(payServiceResponse.chanelTag).desc})",
            true
        )
jiangjiantao's avatar
jiangjiantao committed
405 406
        printer.printText(Page58MmPrintUtils.printDivideLineString())
        printer.printText("日期/时间:${DateUtils.format18(Date())}")
407
        printer.printText("流水号:${OrderRecordManageKit.getSerialNoByOrderNo(payServiceResponse.shopTradeNo)}")
jiangjiantao's avatar
jiangjiantao committed
408 409 410 411 412
        printer.printText("商户订单号:")
        printer.printText(payServiceResponse.shopTradeNo)
        printer.printText("支付平台交易号:")
        printer.printText(payServiceResponse.chanelSerialNumber)
        printer.printText("金额:")
gaodapeng's avatar
gaodapeng committed
413 414 415 416 417 418
        printer.printText(
            IPrinter.ALIGN_LEFT,
            3,
            "    RMB${StringPriceFormat.transStringPriceToDecimalString(payServiceResponse.refundPrice)}",
            true
        )
jiangjiantao's avatar
jiangjiantao committed
419 420 421 422 423 424 425 426 427 428 429 430 431 432
        printer.printText("原订单号:")
        printer.printText(payServiceResponse.shopTradeNo)
        printer.printText(Page58MmPrintUtils.printDivideLineString())
        printer.printText("备注:")

        val couponDetail: Array<String> = payServiceResponse.transformCouponMessage
        if (couponDetail.size >= 2 && !TextUtils.isEmpty(couponDetail[1]) && couponDetail[1] != "0" && couponDetail[1] != "0.00") {
            val shopCoupon = couponDetail[1]
            //打印商家优惠
            printer.printText("商家优惠:${StringPriceFormat.transStringPriceToDecimalString(shopCoupon)}元")
        }
        if (couponDetail.size >= 3 && !TextUtils.isEmpty(couponDetail[2]) && couponDetail[2] != "0" && couponDetail[2] != "0.00") {
            //平台优惠
            val platformCoupon = couponDetail[2]
gaodapeng's avatar
gaodapeng committed
433 434 435 436 437 438 439 440 441
            val channel =
                MiYaPayPlantformPayWayEnum.MiyaPayType.find(payServiceResponse.chanelTag).desc
            printer.printText(
                "$channel 优惠:${
                    StringPriceFormat.transStringPriceToDecimalString(
                        platformCoupon
                    )
                }"
            )
jiangjiantao's avatar
jiangjiantao committed
442 443 444 445 446 447 448 449 450 451 452 453 454 455 456
        }
        if (couponDetail.isNotEmpty() && !TextUtils.isEmpty(couponDetail[0])) {
            val payPrice = couponDetail[0]
            printer.printText("客户支付:${StringPriceFormat.transStringPriceToDecimalString(payPrice)}元")
        }

        printer.printText("持卡人签名:")
        printer.printText(Page58MmPrintUtils.printDivideLineString())
        printer.printText("同意以上支付 ")
        printer.printText("\n\n")
    }

    /**
     * 打印顾客联-退款
     */
gaodapeng's avatar
gaodapeng committed
457 458 459 460 461
    private fun refundPrintCustomer(
        printer: IPrinter,
        payServiceResponse: PayServiceResponse,
        selfCashierAccountInfo: SelfCashierAccountInfo
    ) {
jiangjiantao's avatar
jiangjiantao committed
462
        val shopInfo = selfCashierAccountInfo.shopInfo
gaodapeng's avatar
gaodapeng committed
463
        printer.printText(IPrinter.ALIGN_CENTER, 3, shopInfo.storeName, true)
jiangjiantao's avatar
jiangjiantao committed
464 465 466 467 468 469 470 471
        printer.setAlign(IPrinter.ALIGN_LEFT)
        printer.printText("持卡人存根")
        printer.printText(Page58MmPrintUtils.printDivideLineString())
        printer.printText("商户编号:${shopInfo.saasid}")
        printer.printText("终端编号:${shopInfo.posId}")
        printer.printText("商户名称:converse")
        printer.printText(Page58MmPrintUtils.printDivideLineString())
        printer.printText("交易类型:")
gaodapeng's avatar
gaodapeng committed
472 473 474 475 476 477
        printer.printText(
            IPrinter.ALIGN_LEFT,
            3,
            "    退款(${MiYaPayPlantformPayWayEnum.MiyaPayType.find(payServiceResponse.chanelTag).desc})",
            true
        )
jiangjiantao's avatar
jiangjiantao committed
478 479
        printer.printText(Page58MmPrintUtils.printDivideLineString())
        printer.printText("日期/时间:${DateUtils.format18(Date())}")
480
        printer.printText("流水号:${OrderRecordManageKit.getSerialNoByOrderNo(payServiceResponse.shopTradeNo)}")
jiangjiantao's avatar
jiangjiantao committed
481 482 483 484 485
        printer.printText("商户订单号:")
        printer.printText(payServiceResponse.refundOrderNo)
        printer.printText("支付平台交易号:")
        printer.printText(payServiceResponse.chanelSerialNumber)
        printer.printText("金额:")
gaodapeng's avatar
gaodapeng committed
486 487 488 489 490 491
        printer.printText(
            IPrinter.ALIGN_LEFT,
            3,
            "    RMB${StringPriceFormat.transStringPriceToDecimalString(payServiceResponse.refundPrice)}",
            true
        )
jiangjiantao's avatar
jiangjiantao committed
492 493 494 495 496 497 498 499 500 501 502 503 504 505
        printer.printText("原订单号:")
        printer.printText(payServiceResponse.shopTradeNo)
        printer.printText(Page58MmPrintUtils.printDivideLineString())
        printer.printText("备注:")

        val couponDetail: Array<String> = payServiceResponse.transformCouponMessage
        if (couponDetail.size >= 2 && !TextUtils.isEmpty(couponDetail[1]) && couponDetail[1] != "0" && couponDetail[1] != "0.00") {
            val shopCoupon = couponDetail[1]
            //打印商家优惠
            printer.printText("商家优惠:${StringPriceFormat.transStringPriceToDecimalString(shopCoupon)}元")
        }
        if (couponDetail.size >= 3 && !TextUtils.isEmpty(couponDetail[2]) && couponDetail[2] != "0" && couponDetail[2] != "0.00") {
            //平台优惠
            val platformCoupon = couponDetail[2]
gaodapeng's avatar
gaodapeng committed
506 507 508 509 510 511 512 513 514
            val channel =
                MiYaPayPlantformPayWayEnum.MiyaPayType.find(payServiceResponse.chanelTag).desc
            printer.printText(
                "$channel 优惠:${
                    StringPriceFormat.transStringPriceToDecimalString(
                        platformCoupon
                    )
                }"
            )
jiangjiantao's avatar
jiangjiantao committed
515 516 517 518 519 520 521
        }
        if (couponDetail.isNotEmpty() && !TextUtils.isEmpty(couponDetail[0])) {
            val payPrice = couponDetail[0]
            printer.printText("客户支付:${StringPriceFormat.transStringPriceToDecimalString(payPrice)}元")
        }
        printer.printText("\n\n")
    }
jiangjiantao's avatar
jiangjiantao committed
522
}