Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

Suporte geral sobre problemas técnicos para OpenCart v3.x.
#87048
Bom dia pessoal
Eu gostaria de não retornar ao estoque os produtos após cancelar um pedido!

A nível de conhecimento, penso em escrever algo para canalizar isso, exemplo a loja vende com boleto que demora X dias para ser pago, quando o pedido é cancelado o produto volta ao estoque, mas eu gostaria de interromper isso e alertar o gestor do painel para que ele o faça manualmente, assim ele opta por continuar a vender o item ou não.

se alguém tiver uma dica onde eu devo modificar pra isso, sou grato. :D
#87054
Olá @reds , tente da forma abaixo que irá funcionar;

Arquivo catalog\model\checkout\order.php

Localize:
Código: Selecionar todos
				// Restock
				$order_products = $this->getOrderProducts($order_id);

				foreach($order_products as $order_product) {
					$this->db->query("UPDATE `" . DB_PREFIX . "product` SET quantity = (quantity + " . (int)$order_product['quantity'] . ") WHERE product_id = '" . (int)$order_product['product_id'] . "' AND subtract = '1'");

					$order_options = $this->getOrderOptions($order_id, $order_product['order_product_id']);

					foreach ($order_options as $order_option) {
						$this->db->query("UPDATE " . DB_PREFIX . "product_option_value SET quantity = (quantity + " . (int)$order_product['quantity'] . ") WHERE product_option_value_id = '" . (int)$order_option['product_option_value_id'] . "' AND subtract = '1'");
					}
				}

Substitua por: Altere o ORDER_STATUS_ID pelo ID que seu status tem
Código: Selecionar todos
                // Restock
                if ($order_status_id !== 'ORDER_STATUS_ID') {
                    $order_products = $this->getOrderProducts($order_id);

                    foreach($order_products as $order_product) {
                        $this->db->query("UPDATE `" . DB_PREFIX . "product` SET quantity = (quantity + " . (int)$order_product['quantity'] . ") WHERE product_id = '" . (int)$order_product['product_id'] . "' AND subtract = '1'");

                        $order_options = $this->getOrderOptions($order_id, $order_product['order_product_id']);

                        foreach ($order_options as $order_option) {
                            $this->db->query("UPDATE " . DB_PREFIX . "product_option_value SET quantity = (quantity + " . (int)$order_product['quantity'] . ") WHERE product_option_value_id = '" . (int)$order_option['product_option_value_id'] . "' AND subtract = '1'");
                        }
                    }
                }
reds gostou disso
#87057
@veteranodf

Cara obrigado pela dica,
Então eu desejo que os pedidos cancelados não façam o re-stock, ai modifiquei assim, e em teste esta ok
Código: Selecionar todos
	// Restock
					$order_products = $this->getOrderProducts($order_id);
					
				// =========== no re-stock
				//============================
				if ($order_status_id !== '7') {
					foreach($order_products as $order_product) {
						$this->db->query("UPDATE `" . DB_PREFIX . "product` SET quantity = (quantity + " . (int)$order_product['quantity'] . ") WHERE product_id = '" . (int)$order_product['product_id'] . "' AND subtract = '1'");

						$order_options = $this->getOrderOptions($order_id, $order_product['order_product_id']);

						foreach ($order_options as $order_option) {
							$this->db->query("UPDATE " . DB_PREFIX . "product_option_value SET quantity = (quantity + " . (int)$order_product['quantity'] . ") WHERE product_option_value_id = '" . (int)$order_option['product_option_value_id'] . "' AND subtract = '1'");
						}
					}
				} 
				//=========================
				//=========================
Mas estou testando ainda para ser mais preciso.
#87075
@veteranodf
Uma ajudinha se possível,
Caso eu queira pegar mais que 1 status como eu consigo fazer isso?
Por exemplo, quero pegar os status 1, 2,3,4 assim por adiante.
#87079
Muito obrigado @veteranodf

Fiz um teste aqui e retornou um erro com a linha abaixo.
Código: Selecionar todos
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
OK
<b>ParseError</b>: syntax error, unexpected 'foreach' (T_FOREACH) no arquivo <b>C:\wamp\www\store_test\system\storage\modification\catalog\model\checkout\order.php</b> na linha <b>385</b>
:D