PrinterContent.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace addon\cashier\event;
  11. use addon\cashier\model\Cashier;
  12. use addon\printer\model\Printer;
  13. use addon\printer\model\PrinterTemplate;
  14. /**
  15. * 打印内容
  16. */
  17. class PrinterContent
  18. {
  19. public function handle($params)
  20. {
  21. if ($params[ 'type' ] == 'change_shifts') {
  22. $print_model = new Printer();
  23. $printer_data = $print_model->getPrinterList([ [ 'site_id', '=', $params[ 'site_id' ] ], [ 'store_id', '=', $params[ 'store_id' ] ], [ 'change_shifts_open', '=', 1 ] ])[ 'data' ] ?? [];
  24. if (empty($printer_data)) return error(-1, '未找到可用的打印机');
  25. if (isset($params[ 'record_id' ]) && !empty($params[ 'record_id' ])) {
  26. $shifts_data = ( new Cashier() )->getChangeShiftsRecordInfo([
  27. [ 'r.site_id', '=', $params[ 'site_id' ] ], [ 'r.store_id', '=', $params[ 'store_id' ] ], [ 'r.id', '=', $params[ 'record_id' ] ]
  28. ], 'r.*,u.username', 'r', [ [ 'user u', 'r.uid = u.uid', 'inner' ] ])[ 'data' ];
  29. if (empty($shifts_data)) return error(-1, '未查询到交班记录');
  30. $userinfo = [
  31. 'username' => $shifts_data[ 'username' ]
  32. ];
  33. } else {
  34. $shifts_data = ( new Cashier() )->getShiftsData($params[ 'site_id' ], $params[ 'store_id' ]);
  35. $userinfo = $params[ 'userinfo' ];
  36. }
  37. $res_data = [];
  38. foreach ($printer_data as $k => $v) {
  39. //此处应该根据打印机不同分别设置返回不同的数据。当前为易联云
  40. $array = [];
  41. $array[ 'printer_info' ] = $v;
  42. $template_id = $v[ 'change_shifts_template_id' ];
  43. $print_num = $v[ 'change_shifts_print_num' ];
  44. $print_template_model = new PrinterTemplate();
  45. $print_template = $print_template_model->getPrinterTemplateInfo([ [ 'template_id', '=', $template_id ] ])[ 'data' ];
  46. if (empty($print_template)) continue;
  47. $array[ 'printer_code' ] = $v[ 'printer_code' ]; //商户授权机器码
  48. $array[ 'origin_id' ] = time();
  49. $array[ 'content' ] = $this->handleChangeShiftsPrintContent($print_num, $print_template, $userinfo, $shifts_data);
  50. $res_data[] = $array;
  51. }
  52. return $res_data;
  53. }
  54. }
  55. /**
  56. * 获取收银交班打印内容
  57. * @param $print_num
  58. * @param $print_template
  59. * @param $userinfo
  60. * @param $shifts_data
  61. * @return string
  62. */
  63. private function handleChangeShiftsPrintContent($print_num, $print_template, $userinfo, $shifts_data)
  64. {
  65. $content = "<MN>" . $print_num . "</MN>";
  66. //小票名称
  67. if ($print_template[ 'title' ] != '') {
  68. $content .= "<center>" . $print_template[ 'title' ] . "</center>";
  69. $content .= str_repeat('.', 32);
  70. }
  71. //商城名称
  72. if ($print_template[ 'head' ] == 1) {
  73. $content .= "<FH2><FS><center>" . $print_template[ 'site_name' ] . "</center></FS></FH2>";
  74. $content .= str_repeat('.', 32);
  75. }
  76. $content .= "交班员工:" . $userinfo[ 'username' ] . "\n";
  77. $content .= "上班时间:" . ( $shifts_data[ 'start_time' ] ? date("Y-m-d H:i:s", $shifts_data[ 'start_time' ]) : '初始化' ) . "\n";
  78. $content .= "交班时间:" . date("Y-m-d H:i:s", $shifts_data[ 'end_time' ]) . "\n";
  79. $content .= str_repeat('.', 32);
  80. $content .= "<FH2><FS>总销售</FS></FH2>\n";
  81. $content .= "开单销售:¥" . $shifts_data[ "billing_money" ] . "\n";
  82. $content .= "售卡销售:¥" . $shifts_data[ "buycard_money" ] . "\n";
  83. $content .= str_repeat('.', 32);
  84. $content .= "<FH2><FS>会员充值</FS></FH2>\n";
  85. $content .= "会员充值:¥" . $shifts_data[ "recharge_money" ] . "\n";
  86. $content .= str_repeat('.', 32);
  87. $content .= "<FH2><FS>应收金额</FS></FH2>\n";
  88. $content .= "开单销售:¥" . $shifts_data[ "billing_money" ] . "\n";
  89. $content .= "售卡销售:¥" . $shifts_data[ "buycard_money" ] . "\n";
  90. $content .= "会员充值:¥" . $shifts_data[ "recharge_money" ] . "\n";
  91. $content .= "订单退款:¥" . $shifts_data[ "refund_money" ] . "\n";
  92. $content .= str_repeat('.', 32);
  93. if ($shifts_data[ "billing_money" ] > 0 || $shifts_data[ "buycard_money" ] > 0 || $shifts_data[ "recharge_money" ] > 0) {
  94. $content .= "<FH2><FS>支付统计</FS></FH2>\n";
  95. if ($shifts_data[ "cash" ] > 0) $content .= "现金收款:¥" . $shifts_data[ "cash" ] . "\n";
  96. if ($shifts_data[ "wechatpay" ] > 0) $content .= "微信收款:¥" . $shifts_data[ "wechatpay" ] . "\n";
  97. if ($shifts_data[ "alipay" ] > 0) $content .= "支付宝收款:¥" . $shifts_data[ "alipay" ] . "\n";
  98. if ($shifts_data[ "own_wechatpay" ] > 0) $content .= "个人微信收款:¥" . $shifts_data[ "own_wechatpay" ] . "\n";
  99. if ($shifts_data[ "own_alipay" ] > 0) $content .= "个人支付宝收款:¥" . $shifts_data[ "own_alipay" ] . "\n";
  100. if ($shifts_data[ "own_pos" ] > 0) $content .= "个人POS收款:¥" . $shifts_data[ "own_pos" ] . "\n";
  101. }
  102. return $content;
  103. }
  104. }