jelikož nejsem plátce DPH a tudíž v OpenCart nepoužívám daně, nefungovala mi korektně funkce na přidání/odebrání zboží do/z existující objednávky. Vždy se mi zobrazila hláška "failed", přestože operace proběhla v pořádku a mezi součty se mi zobrazil prázdný řádek s nulou. Pokud jste na tom stejně jako já, zde je oprava, jak chybu vyřešit:
V souboru "admin/controller/sale/order.php" stačí zakomentovat řádky 60 až 70 (TU START až TU END). Tím se vypne počítání daně a úpravy fungují korektně.
Toto zakomentovat:
Code: Select all
// TU START
$query = $this->db->query("SELECT order_total_id, value FROM " . DB_PREFIX . "order_total WHERE sort_order = '" . (int)$data['tax']['sort_order'] . "' AND order_id = '" . (int)$order_id . "' LIMIT 1");
$tax_value = $query->row;
if($tax_value) {
$new_value = $tax_value['value'] + ($data['tax']['rate'] / 100) * $data['price'] * $data['quantity'];
$this->db->query("UPDATE " . DB_PREFIX . "order_total SET text = '" . $this->db->escape($this->currency->format($new_value, $data['currency'], $data['currency_value'], true)) . "', value = '" . (float)$this->currency->format($new_value, $data['currency'], $data['currency_value'], false) . "' WHERE order_total_id = '" . $tax_value['order_total_id'] . "'");
} else {
$new_value = ($data['tax']['rate'] / 100) * $data['price'] * $data['quantity'];
$this->db->query("INSERT INTO " . DB_PREFIX . "order_total (order_id, title, text, value, sort_order) VALUES ('" . (int)$order_id . "', '" . $this->db->escape($data['tax']['description'] . ':') . "', '" . $this->db->escape($this->currency->format($new_value, $data['currency'], $data['currency_value'], true)) . "', '" . (float)$this->currency->format($new_value, $data['currency'], $data['currency_value'], false) . "', '" . (int)$data['tax']['sort_order'] . "')");
}
// TU END