2015-10-20 43 views
0

自定義字段中的訂單記錄OC 2.0.3.1Opencart的自定義字段中的訂單記錄

試圖插入兩個自定義字段到訂單歷史記錄。我已經完成了以下代碼編輯並手動將兩列輸入到數據庫(tracking_number和check_number)中,但它不起作用。我沒有收到任何錯誤,所以我不確定我做錯了什麼。任何幫助,將不勝感激。

在我order_history.tpl文件我補充:

<td class="text-left"><?php echo $history['tracking_number']; ?></td> 
<td class="text-left"><?php echo $history['check_number']; ?></td> 

而且

<td class="text-left"><?php echo $column_tracking_number; ?></td> 
<td class="text-left"><?php echo $column_check_number; ?></td> 

在我order_info.tpl文件我補充:

<div class="form-group"> 
       <label class="col-sm-2 control-label" for="input-tracking-number"><?php echo $entry_tracking_number; ?></label> 
       <div class="col-sm-10"> 
       <input type="text" name="tracking_number" id="input-tracking-number" size="50" /> 
       </div> 
      </div> 

在我的控制器order.php文件我加入了適當的語言文件,這爲歷史數組:

'tracking_number'  => $result['tracking_number'], 
'check_number'  => $result['check_number'], 

在我的模型order.php文件我改變了以下內容:

$query = $this->db->query("SELECT oh.date_added, os.name AS status, oh.comment, oh.tracking_number, oh.check_number, oh.notify FROM " . DB_PREFIX . "order_history oh LEFT JOIN " . DB_PREFIX . "order_status os ON oh.order_status_id = os.order_status_id WHERE oh.order_id = '" . (int)$order_id . "' AND os.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY oh.date_added ASC LIMIT " . (int)$start . "," . (int)$limit); 

我結帳/ order.php

$this->db->query("INSERT INTO " . DB_PREFIX . "order_history SET order_id = '" . (int)$order_id . "', order_status_id = '" . (int)$order_status_id . "', notify = '" . (int)$notify . "', comment = '" . $this->db->escape($comment) . "', tracking_number = '" . (int)$tracking_number . "', date_added = NOW()"); 

而且

public function addOrderHistory($order_id, $order_status_id, $comment = '', $tracking_number = '', $notify = false) { 
    $this->event->trigger('pre.order.history.add', $order_id); 

現在,無論如何,tracking_number字段中都會顯示一個「0」。

+0

字段「tracking_number」的數據類型是什麼? –

+0

這是航運公司的唯一編號..例如:BHC21315457896154 –

回答

0

只需從插入查詢中刪除(int)即可。如果您的跟蹤號碼是字母數字形式。您的插入查詢應該如下所示:

$this->db->query("INSERT INTO " . DB_PREFIX . "order_history SET order_id = '" . (int)$order_id . "', order_status_id = '" . (int)$order_status_id . "', notify = '" . (int)$notify . "', comment = '" . $this->db->escape($comment) . "', tracking_number = '" . $this->db->escape($tracking_number) . "', date_added = NOW()"); 

就是這樣。

+0

非常感謝您的幫助我解決問題的可用性,我試圖在刪除(int)之前但結果值(SQL字段)始終爲「0」 –

0

不要忘記將其添加到目錄/ controller/api/order.php文件中的歷史記錄功能。

查找代碼:

$keys = array(
      'order_status_id', 
      'notify', 
      'append', 
      'comment' 
     ); 

if ($order_info) { 
      $this->model_checkout_order->addOrderHistory($order_id, $this->request->post['order_status_id'], $this->request->post['comment'], $this->request->post['notify']); 

您可能還需要將其添加到在AJAX JSON腳本order_info.tpl文件的底部:

$('#button-history').on('click', function() { 
if(typeof verifyStatusChange == 'function'){ 
if(verifyStatusChange() == false){ 
    return false; 
}else{ 
    addOrderInfo(); 
} 
}else{ 
addOrderInfo(); 
} 

$.ajax({ 
    url: 'index.php?route=sale/order/api&token=<?php echo $token; ?>&api=api/order/history&order_id=<?php echo $order_id; ?>', 
    type: 'post', 
    dataType: 'json', 
    data: 'order_status_id=' + encodeURIComponent($('select[name=\'order_status_id\']').val()) + '&notify=' + ($('input[name=\'notify\']').prop('checked') ? 1 : 0) + '&append=' + ($('input[name=\'append\']').prop('checked') ? 1 : 0) + '&comment=' + encodeURIComponent($('textarea[name=\'comment\']').val()), 
    beforeSend: function() { 
     $('#button-history').button('loading');   
    }, 
    complete: function() { 
     $('#button-history').button('reset'); 
    }, 
    success: function(json) { 
     $('.alert').remove(); 

     if (json['error']) { 
      $('#history').before('<div class="alert alert-danger"><i class="fa fa-exclamation-circle"></i> ' + json['error'] + ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>'); 
     } 

     if (json['success']) { 
      $('#history').load('index.php?route=sale/order/history&token=<?php echo $token; ?>&order_id=<?php echo $order_id; ?>'); 

      $('#history').before('<div class="alert alert-success"><i class="fa fa-check-circle"></i> ' + json['success'] + ' <button type="button" class="close" data-dismiss="alert">&times;</button></div>'); 

      $('textarea[name=\'comment\']').val(''); 

      $('#order-status').html($('select[name=\'order_status_id\'] option:selected').text());   
     }   
    },   
    error: function(xhr, ajaxOptions, thrownError) { 
     alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); 
    } 
}); 
}); 
相關問題