Prestashop 1.6-存储在数据库和订单页面中后,“已发货”模板中未显示跟踪号

时间:2018-08-27 05:06:22

标签: templates prestashop-1.6

我创建了一个模块,用于在使用某些运营商的新订单上插入跟踪链接。我检查了跟踪号是否已插入数据库中,并且也可以在“订单”页面中找到。在数据库中,它存储在orders_carrier中。

$orderinfo = new Order($params['id_order']);
$carrierinifo = new Carrier($orderinfo->id_carrier);

if ($carrierinifo->name=='Standard Delivery') {
   $ordercarrier = new OrderCarrier($orderinfo->id_carrier);
   if ($ordercarrier->tracking_number=='') {
       $ordercarrier->tracking_number = $this->config['TRACK_PRE'].str_pad($orderinfo->id, $this->config['DIGI'], "0", STR_PAD_LEFT);
       Db::getInstance()->update(
       'order_carrier',
       array('tracking_number'=>$ordercarrier->tracking_number),
       'id_order='.$orderinfo->id
       );

我无法理解为什么跟踪号未显示在“已发货”模板中。仅当我单击“编辑”(在“订单”页面中“运输”选项卡下)并重新保存跟踪号时,它才会成功显示。 (当跟踪号已经保存并显示在“订单”页面中时)。这是额外的步骤,因此我无法自动执行此步骤。

我已在正在使用的运输模板中分配了该变量,当我更改为“已发货”状态时,它将触发。

有人遇到同样的问题吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

这是我使用的代码:

$order = new Order($params['id_order']);
$tracking = 'NUMBER TRACKING';
$id_order_state = 'NUMBER OF STATUS';

if (!empty($tracking) && !is_array($tracking)) {
    $id_order_carrier = Db::getInstance()->getValue('
        SELECT `id_order_carrier`
        FROM `' . _DB_PREFIX_ . 'order_carrier`
        WHERE `id_order` = ' . (int) $order->id);
    if ($id_order_carrier) {
        $order_carrier = new OrderCarrier($id_order_carrier);
        $order_carrier->tracking_number = $tracking;
        $order_carrier->update();
    } else {
        $order->shipping_number = $tracking;
    }

}

if ($id_order_state && ($order->current_state != (int) $id_order_state)) {
        $new_oh = new OrderHistory();
        $new_oh->id_order = $order->id;
        $new_oh->id_order_state = (int) $id_order_state;
        $new_oh->date_add = date('Y-m-d H:i:s');
        $new_oh->add();
        $new_os = new OrderState((int) $id_order_state, $order->id_lang);
        Module::hookExec('actionOrderStatusUpdate', array('newOrderStatus' => $new_os, 'id_order' => (int) $order->id), null, false, true, false, $order->id_shop);
}

致谢

答案 1 :(得分:0)

设法找到问题的根源。我实际上是在更新carrier_order,跟踪号。我还应该更新订单shipping_number。很高兴知道它现在可以工作了。

我没有意识到这一点。与寻求类似问题解决方案的任何人共享。

谢谢。