Bekerja dengan pesanan melalui panel admin OpenCart, lihat dari dalam

Kandungan





  • Antarmuka





  • Perubahan pesanan





  • Menyimpan perubahan pesanan





  • Hasil





Saat mengembangkan modul untuk OpenCart, saya perlu menambahkan bidang ekstra ke item pesanan. Tetapi pertama-tama, Anda perlu mempelajari  bagaimana pengaturan kerja dengan pesanan melalui panel admin . Ternyata, skema tersebut tidak sederhana dan sedikit membingungkan, tetapi ini sekilas.





Data tentang barang pesanan disimpan dalam tabel di  order_product



mana barang dengan pesanan dihubungkan oleh  id



 ( order_id



product_id



). Omong-omong, informasi pesanan disimpan dalam beberapa tabel  order_



.





Antarmuka

Buka panel admin  "Pesanan-Penjualan"  dan pilih pesanan apa pun untuk diedit.





Halaman pengeditan order terdiri dari 5 tab yang masing-masing hanya dapat diakses dari tab sebelumnya (dengan mengklik tombol "Lanjutkan" ), saat berpindah ke beberapa tab, permintaan ajax terjadi  , berdasarkan respon yang diisi tab tersebut .





Jika  js dinonaktifkan di browser, pengeditan pesanan tidak akan tersedia . Anda tidak bisa membuka tab sewenang-wenang.





 admin/view/teplate/sale/order_form.tpl



 (OpenCart 2.3).   , "" (  #button-customer



   #button-refresh



  )   ajax ,   .





javascript.





"".





ajax  route=api/cart/add



.  catalog/controller/api/cart.php



   add



   $this->cart



  Cart



 (),  add



. ,    cart



,  order_



.





 cart



   session_id



, ,  $_SESSION



.    cart



   .





,  ajax OpenCart    API OpenCart.





- ( cart



), ( order_



)





"", "".





 route=api/order/edit



.  catalog/controller/api/order.php



   edit



,  order_data



  ($this->cart->getProducts()



).





, :





// Products
$order_data['products'] = array();
 
foreach ($this->cart->getProducts() as $product) {
    $option_data = array();
 
    //...
 
    $order_data['products'][] = array(
        'product_id' => $product['product_id'],
        'name'       => $product['name'],
        'model'      => $product['model'],
        'option'     => $option_data,
        'download'   => $product['download'],
        'quantity'   => $product['quantity'],
        'subtract'   => $product['subtract'],
        'price'      => $product['price'],
        'total'      => $product['total'],
        'tax'        => $this->tax->getTax($product['price'], $product['tax_class_id']),
        'reward'     => $product['reward']
    );
}
      
      



 checkout/order



   order_product



:





$this->model_checkout_order->editOrder($order_id, $order_data);
      
      



:





$this->model_checkout_order->addOrderHistory($order_id, $order_status_id);
      
      



... :)





 order_product



:





 cart



  :





(cart



), (order



)?    . !





  ,  api/order/edit



 :





  • token



     





  • order_id



     





 checkout/order



   editOrder



  :





$this->db->query("DELETE FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'");
$this->db->query("DELETE FROM " . DB_PREFIX . "order_option WHERE order_id = '" . (int)$order_id . "'");
      
      



:





   .





, , , .





, OpenCart eCommerce  BuiltWith. :)





, .





Skema ini tidak sepenuhnya jelas, sekilas mungkin tampak membingungkan. Namun, setelah dikaji secara detail, konsepnya menjadi jelas, yang intinya adalah kesederhanaan pengelolaan data. Saya tidak dapat mengatakan bahwa saya menyukai solusi ini, tetapi jelas bahwa ini cukup berhasil.





Penulis: Vitaly Buturlin








All Articles