桌码支付后小票无法打印问题
等了几天了没有回应就自己处理了
1.找到文件app/services/order/StoreOrderServices.php
orderPrint方法
$print = store_config($store_id, 'store_printing_timing');这里改成$print = [store_config($store_id, 'store_printing_timing')];
这里得到结果为2,因为下面有判断!is_array($print),所以导致该方法直接返回,没有继续往下执行去打印小票
2.到了orderPrint方法最后可以看到打印的时候执行的是setPrinterContent,这个方是打印收银小票和小程序下单小票的,所以这里并没有去做一个判断该订单是不是桌码订单,其实这样处理已经可以去打印小票,但是只是打印出来的小票并不是桌码的小票。
crmeb/services/printer/storage/YiLianYun.php 这个文件可以看到setPrinterContent和setPrinterTableContent两个方法,其中setPrinterTableContent才是打印桌码小票的方法。
所以
找到文件app/services/order/StoreOrderServices.php
orderPrint方法
$order = $this->dao->get($id);改成$order = $this->dao->get($id, [], ['user_collage_code']);
这里需要添加关联关系
在app/model/order/StoreOrder.php模型里面添加
public function userCollageCode()
{
return $this->hasOne(UserCollageCode::class,'oid','id');
}
然后把红框里面原来的代码
app/services/order/StoreOrderServices.php
orderPrint方法里面
改成
if($order['type'] == 10){
$printJob = new PrintJob();
$printJob->tableDoJob($order['user_collage_code']['id'], $order['store_id']);
}else{
$printer = new Printer($name, $configData);
$printer->setPrinterContent([
'name' => sys_config('site_name'),
'orderInfo' => is_object($order) ? $order->toArray() : $order,
'product' => $product
])->startPrinter();
}
到此修改完成。
{{item.user_info.nickname ? item.user_info.nickname : item.user_name}}
作者 管理员 企业
{{itemf.name}}
{{itemc.user_info.nickname}}
{{itemc.user_name}}
回复 {{itemc.comment_user_info.nickname}}
{{itemf.name}}