Page 1 of 1

Problemas ao desenvolver no OpenCart: Orçamento

Posted: Wed Sep 30, 2015 3:11 am
by guisoliver
Minha idéia é desenvolver um módulo de orçamento para o OpenCart 2. Este módulo consiste em inicialmente fazer pedidos com preço zerado para enviar um orçamento. Após a aprovação
deste orçamento, os preços serão modificados externamente por um webservice que se comunica com um ERP. Os preços da tabela oc_order_product deverão ser modificados.

Eu fiz duas telas de checkout distintas. Uma delas é para gerar o orçamento, que grava diretamente na oc_product sem as informações de pagamento, envio e uma segunda tela que é
o checkout normal que haverá após a aprovação do orçamento.

Para isso eu criei um novo método chamado reorderOrcamento que tem a finalidade de pegar um pedido que inicialmente era um orçamento e transformar em um pedido de compra. O que
diferencia orçamento de pedido de compra é apenas o preço dos produtos estarem zerados. Com isso consigo suprir a necessidade com o mínimo de alterações no OpenCart.


public function reorderOrcamento() {
$this->load->model('account/order');
$this->load->model('catalog/product');

$codigo_orcamento = $this->request->get['order_id'];
$orcamento = $this->model_account_order->getOrder($codigo_orcamento);
$produtos_orcamento = $this->model_account_order->getOrderProducts($codigo_orcamento);

$this->cart->clear();

for ($i = 0; $i < sizeof($produtos_orcamento); $i++) {
$order_product_id = $produtos_orcamento[$i]['order_product_id'];
$order_id = $produtos_orcamento[$i]['order_id'];
$product_id = $produtos_orcamento[$i]['product_id'];
$name = $produtos_orcamento[$i]['name'];
$model = $produtos_orcamento[$i]['model'];
$quantity = $produtos_orcamento[$i]['quantity'];
$price = $produtos_orcamento[$i]['price'];
$total = $produtos_orcamento[$i]['total'];
$tax = $produtos_orcamento[$i]['tax'];
$reward = $produtos_orcamento[$i]['reward'];

$this->cart->add($product_id, $quantity, $productOption);
}

// $this->response->redirect($this->url->link('checkout/confirm'));
}

Neste método $this->cart->add é possível passar produto, quantidades e existe um $productOption para se realizar modificações extras neste pedido. Mas eu queria passar um preço
qualquer para este pedido.

Tentei passar um array --> $opcoes = array();
$opcoes = [['price'] = 3000];

Preciso fazer com que o preço deste novo pedido sejam idênticos ao preço do oc_order_product e não pegue o preço original do pedido pois ele estará zerado devido a necessidade
de se fazer um orçamento. O preço será definido no orçamento pois dependendo da quantidade, o valor pode ser menor.

Como eu faço isso?