Re: [TUTORIAL] Retornar estoque ao deletar pedido v1.5.1.3
Enviado: 17 Jul 2013, 15:36
por nmauricio
é que são 2 arquivos que precisam ser mudados: Um para mudança de status manual e outra para retorno dos módulos de pagamento. pelo que vi este vqmode somente altera o arquivo de retorno de estoque com mundana de status manual (admin/model/sale/order.php) . Tem que aplicar as alterações no arquivo catalog/model/checkout/order.php tambem conforme postado acima.
não esqueça de que, se utilizar array de codigos de retorno, ajustar os códigos de acordo com o seu site também.
ah! outra coisa. Existe um modulo do cadastro Brasil que, caso voce use, precisa incluir alguns campos manualmente ( numero da casa, complemento), Não esqueça de fazer isto, caso você use os códigos gentilmente cedido pelos nossos colegas acima.
at;
Re: [TUTORIAL] Retornar estoque ao deletar pedido v1.5.1.3
Enviado: 14 Abr 2014, 22:27
por cgsoratto
rgtobr escreveu:Pessoal, vejo que tem muita gente batendo a cabeça aí por causa da reposição do produto em estoque.
No início eu disse que é possível fazer os produtos voltarem ao estoque ao excluir o pedido, sim, basta fazer os ajustes que comentei. Vejo que vocês estão tendo a necessidade de reabastecer o estoque somente ao adicionar no histórico do pedido a situação CANCELADO, correto?
Então segue a solução:
1. edite o arquivo /admin/model/sale/order.php
2. procure pelo comentário // Send out any gift voucher mails por volta da linha 490, este comentário fica dentro da function addOrderHistory, então adicione o código abaixo uma linha acima deste comentário:
Código: Selecionar todos // Retorna ao estoque se cancelado (verificar a tabela ORDER_STATUS se o item CANCELED é número 7 e mudar na linha abaixo este número se necessário)
if ((int)$data['order_status_id'] == 7) {
$order_query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "order` WHERE order_status_id > '0' AND order_id = '" . (int)$order_id . "'");
if ($order_query->num_rows) {
$product_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'");
foreach($product_query->rows as $product) {
$this->db->query("UPDATE `" . DB_PREFIX . "product` SET quantity = (quantity + " . (int)$product['quantity'] . ") WHERE product_id = '" . (int)$product['product_id'] . "'");
$option_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_option WHERE order_id = '" . (int)$order_id . "' AND order_product_id = '" . (int)$product['order_product_id'] . "'");
foreach ($option_query->rows as $option) {
$this->db->query("UPDATE " . DB_PREFIX . "product_option_value SET quantity = (quantity + " . (int)$product['quantity'] . ") WHERE product_option_value_id = '" . (int)$option['product_option_value_id'] . "' AND subtract = '1'");
}
}
}
}
* se precisarem que os produtos retornem ao estoque em outras situações além do CANCELADO, modifique a condição "if" ajustando-a para as suas necessidades
Espero ter ajudado mais uma vez.
*************************************
OBSERVAÇÃO IMPORTANTE: caso utilize este recurso com o módulo da MoIP, cuidado com as mensagens de retorno automático que retornam o status "cancelado", pois, se a MoIP retornar o status de "cancelado" mais de uma vez, é provável que os produtos sejam adicionados várias vezes. Portanto, se isto ocorrer, edite o arquivo retorno_moip.php, no final há o código abaixo:
Código: Selecionar todos if (isset($errors)){
header("HTTP 200");
} else {
header("HTTP 500");
}
Então substitua essas linhas por:
... até que alguém encontre uma solução melhor. Esta sugestão obtive após a leitura da documentação* disponível no sandbox da MoIP, já que notei que a variável $errors nestas linhas não estava definida em lugar algum, portanto, a resposta para a MoIP era sempre "que houve erro".
* = https://desenvolvedor.moip.com.br/sandb ... nManual.do[/i]
Obrigado!!!!!
Re: [TUTORIAL] Retornar estoque ao deletar pedido v1.5.1.3
Enviado: 28 Abr 2014, 15:59
por lrodrigues
Cara, fiz esse procedimento na minha versão 1.5.6 e funcionou legal!
Obrigado.
Re: [TUTORIAL] Retornar estoque ao deletar pedido v1.5.1.3
Enviado: 29 Abr 2015, 18:49
por Marcel Diogo
Parabéns pelo tutorial rgtobr!
Funcionou perfeitamente aqui... Sucesso até logo
Obrigado