桌碼支付后小票無法打印問題
等了幾天了沒有回應(yīng)就自己處理了
1.找到文件app/services/order/StoreOrderServices.php
orderPrint方法
$print = store_config($store_id, 'store_printing_timing');這里改成$print = [store_config($store_id, 'store_printing_timing')];
這里得到結(jié)果為2,因?yàn)橄旅嬗信袛?is_array($print),所以導(dǎo)致該方法直接返回,沒有繼續(xù)往下執(zhí)行去打印小票
2.到了orderPrint方法最后可以看到打印的時(shí)候執(zhí)行的是setPrinterContent,這個(gè)方是打印收銀小票和小程序下單小票的,所以這里并沒有去做一個(gè)判斷該訂單是不是桌碼訂單,其實(shí)這樣處理已經(jīng)可以去打印小票,但是只是打印出來的小票并不是桌碼的小票。
crmeb/services/printer/storage/YiLianYun.php 這個(gè)文件可以看到setPrinterContent和setPrinterTableContent兩個(gè)方法,其中setPrinterTableContent才是打印桌碼小票的方法。
所以
找到文件app/services/order/StoreOrderServices.php
orderPrint方法
$order = $this->dao->get($id);改成$order = $this->dao->get($id, [], ['user_collage_code']);
這里需要添加關(guān)聯(lián)關(guān)系
在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();
}
到此修改完成。