Сделал статусы для каждого товара в заказе. Делал по аналогии со статусами заказов. Текущий статус товара хранится в таблице order_product.
Когда в заказе один товар, то все работает нормально:
-новый статус в базе пишется и перезаписывается.
-история статусов пишутся (новая таблица order_history_prod).
НО когда в заказе несколько товаров, то при смене статуса новый статус не записывается в, а в историю order_history_prod создается новая запись, но id товара не того, которому пытался поменять, а id последнего товара (нижнего) из списка товаров в текущем заказе и статус сохраняется старый. Посмотрел по консоли браузера и там в методе POST статус OK
Кто может подсказать, где смотреть.
order_info.tpl
<?php foreach ($products as $product) { ?>
...
<select name="order_status_prod_id">
<?php foreach ($order_statuses_prod as $order_statuse_prod) { ?>
<option value="<?php echo $order_statuse_prod['order_status_prod_id']; ?>" selected="selected"><?php echo $order_statuse_prod['name']; ?></option>
<?php } ?>
</select><a style="height: 6px; line-height: 5px;" id="button-history_prod" class="button"><?php echo $button_add_history_prod; ?></a>
...
<?php } ?>
<script type="text/javascript"><!--
$('#button-history_prod').live('click', function() {
$.ajax({
url: 'index.php?route=sale/order/history_prod&token=<?php echo $token; ?>&order_product_id=<?php echo $product['order_product_id']; ?>',
type: 'post',
dataType: 'html',
data: 'order_status_prod_id=' + encodeURIComponent($('select[name=\'order_status_prod_id\']').val()),
beforeSend: function() {
$('.success, .warning').remove();
$('#button-history_prod').attr('disabled', true);
$('#history_prod').prepend('<div class="attention"><img src="view/image/loading.gif" alt="" /> <?php echo $text_wait; ?></div>');
},
complete: function() {
$('#button-history_prod').attr('disabled', false);
$('.attention').remove();
},
success: function(html) {
$('#history_prod').html(html);
$('#order-status-prod').html($('select[name=\'order_status_prod_id\'] option:selected').text());
}
});
});
//--></script>
Модель order.php
public function addOrderHistoryProd($order_product_id, $data) {
$this->db->query("UPDATE `" . DB_PREFIX . "order_product` SET order_status_prod_id = '" . (int)$data['order_status_prod_id'] . "' WHERE order_product_id = '" . (int)$order_product_id . "'");
$this->db->query("INSERT INTO " . DB_PREFIX . "order_history_prod SET order_product_id = '" . (int)$order_product_id . "', order_status_prod_id = '" . (int)$data['order_status_prod_id'] . "', date_added = NOW()");
$order_info = $this->getOrder($order_product_id);
}