Trabalhar com um pedido através do painel de administração do OpenCart, uma visão de dentro

Contente





  • Interface





  • Mudanças no pedido





  • Salvando as alterações do pedido





  • Resultado





Ao desenvolver um módulo para OpenCart, precisei adicionar um campo extra aos itens do pedido. Mas primeiro, você precisa estudar  como é organizado o trabalho com o pedido por meio do painel de administração . Como se viu, o esquema não é simples e um pouco confuso, mas à primeira vista.





Os dados sobre as mercadorias do pedido são armazenados em uma tabela  order_product



onde as mercadorias com os pedidos estão vinculadas por  id



 ( order_id



product_id



). A propósito, as informações do pedido são armazenadas em várias tabelas  order_



.





Interface

Vamos para o painel de administração  "Pedidos de vendas"  e selecione qualquer pedido para edição.





A página de edição do pedido consiste em 5 guias , cada uma das quais só pode ser acessada a partir da anterior ( clicando no botão "Continuar" ), ao alternar para algumas guias, ocorrem  solicitações de ajax , com base nas respostas das quais a guia é preenchida .





Se  js estiver desabilitado no navegador, a edição do pedido não estará disponível . Você não pode acessar uma guia arbitrária.





 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. :)





, .





O esquema não é totalmente óbvio, à primeira vista pode parecer confuso. Porém, após um estudo detalhado, o conceito torna-se claro, cuja essência é a simplicidade do gerenciamento de dados. Não posso dizer que goste desta solução, mas é claro que funciona muito bem.





Autor: Vitaly Buturlin








All Articles