Fórum OpenCart Brasil

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

#23031
Na loja que estou montando precisei vender produtos sob encomenda, porém não podia vender produtos que estão esgotados e também não podia desativa-los.
É uma modificação super simples somente em um arquivo. Não sou programador, então se tiver algo estranho, por favor avisem. Testado na versão 1.5.3.1.

Antes de modificar o arquivo é necessário fazer duas pequenas modificações:
Vá em Sistema>Configurações>Editar | Selecione a aba "Opções", permita a venda sem estoque e salve. Se preferir você pode deixar a opção "Exibir Aviso de Sem Estoque" selecionada e no arquivo da tradução (catalog/language/portuguese-br/checkout/cart.php) mudar o texto para algo como "Produtos marcados com *** estão disponíveis somente para encomendas! O prazo de entrega é de 15 dias mais prazo dos correios." para lembrar mais uma vez que o produto será somente sob encomenda/pre-order.
Agora vá em: Sistema>Localização>Situações de Estoque. Adicione a situação "Encomendar".
Finalmente vamos modificar o arquivo "product.tpl" (catalog/view/theme/SEU-TEMA/template/product/product.tpl):
Procure a linha q contem o seguinte código (no template default fica na linha 209):
Código: Selecionar todos
<input type="button" value="<?php echo $button_cart; ?>" id="button-cart" class="button" />
e substitua por:
Código: Selecionar todos
<!--BOTÃO ENCOMENDAR-->
<?php if ($product_info['quantity'] >= 1) {?>
	<input type="button" value="<?php echo $button_cart; ?>" id="button-cart" class="button" />
<?php } elseif ($product_info['stock_status'] == "Encomendar"){ ?>
	<input type="button" value="<?php echo $stock; ?>" id="button-cart" class="button" />
<?php } else { ?>
	<input type="button" value="<?php echo $stock; ?>" id="button-cart"class="button" disabled />						
<?php } ?>
<!--FIM ENCOMENDAR-->
Se você desejar substituir "Encomendar" por outro termo como "Pré-venda", na opção "Situações de Estoque" crie o termo desejado e no código substitua "Encomendar" pelo termo cadastrado.
Agora é só mudar na Aba dados do produto a opção "Situação se Indisponível:" para "Encomendar" e mudar a opção "Quantidade" para 0. O único problema é q vc não tem controle de estoque.
O legal desta modificação é que o botão comprar muda para "Encomendar" quando o produto está disponível para encomenda. Quando está esgotado o botão é desativado e muda para esgotado.

Update para a versão 1.5.5.1:
Houve uma pequena mudança nas variáveis da versão 1.5.5.1, use este código abaixo se vc estiver utilizando esta versão:
Código: Selecionar todos
<!--BOTÃO ENCOMENDAR-->
<?php if ($stock == 'Em Estoque') {?>
<input type="button" value="<?php echo $button_cart; ?>" id="button-cart" class="button" />
<?php } elseif ($stock == "Encomendar"){ ?>
<input type="button" value="<?php echo $stock; ?>" id="button-cart" class="button" />
<?php } else { ?>
 <input type="button" value="<?php echo $stock; ?>" id="button-cart"class="button" disabled />                  
<?php } ?>
<!--FIM ENCOMENDAR-->
Espero q ajude alguém :D!
Editado pela última vez por unknown1140 em 15 Mar 2013, 17:49, em um total de 1 vez.
#23303
Olá Unkwown1140,

Ainda não testei seu tutorial, mas parece ser muito legal e pode ser exatamente o que eu estou procurando.
Gostaria de tirar uma dúvida.
Estou desenvolvendo uma loja onde alguns produtos serão vendidos normalmente e com estoque, e outros funcionarão com um catálogo online,
que os clientes poderão solicitar uma 'encomenda' ou 'orçamento' ao ecommerce.

Seu tutorial serve neste caso?
#37331
planovisual escreveu:Olá Unkwown1140,

Ainda não testei seu tutorial, mas parece ser muito legal e pode ser exatamente o que eu estou procurando.
Gostaria de tirar uma dúvida.
Estou desenvolvendo uma loja onde alguns produtos serão vendidos normalmente e com estoque, e outros funcionarão com um catálogo online,
que os clientes poderão solicitar uma 'encomenda' ou 'orçamento' ao ecommerce.

Seu tutorial serve neste caso?
Creio que com algumas adequações pode servir bem. No meu caso a loja da minha empresa tem parcerias com fornecedores para compras em quantidades minimas e multiplas de 1. Nesse caso quando o produto está no meu estoque, aparece a disponibilidade "Em estoque" e o botão "Comprar". Quando o produto está em estoque porém em um parceiro meu ou diretamente em meu fornecedor tanto a disponibilidade quanto o botão aparecem "Sob encomenda". Para produtos indisponíveis em todas as situações anteriores tanto a disponibilidade quanto o botão aparecem "Indisponível no momento".

O Curioso nesse tutorial é que, no meu caso que uso a versão 1.5.5.1, o cliente só era direcionado ao carrinho de compras (tenho um codigo vqmod pra direcionar diretamente para o carrinho após clicar em comprar) quando o estoque era superior a 0 ou seja, 1 em diante... impossibilitando o cliente que clicar no "Sob encomenda" ir diretamente para o carrinho e fazer seu pedido e aguardar o prazo vigente.

Uma simples alteração no codigo original reaolveu o problema. Na linha onde se linha "Encomendar" eu troquei por 'Encomendar'. Em vez de duas aspas usei apenas uma. A partir daí o cliente foi redirecionado e o funcionamento está perfeito e quando o produto está mesmo indisponível o cliente não consegue avancar para o pagamento do produto.

Caso queiram conferir como ficou, basta acessar: http://www.shop.misterdrums.net

Grande abraço aos amigos que tanto tem me ajudado por aqui incuindo o grande Manoel Vidal.

OBS.: Não sou programador portanto perdoem os erros de conceitos ou termos aqui utilizados.
#37332
unknown1140 escreveu:Pelo q entendi o cliente só vai pedir o orçamento/encomenda, vcs receberiam o pedido mas o cliente não irá pagar logo. Posteriormente q vcs enviariam a solicitação de pagamento?
Opa...

No meu caso ele está sendo redirecionado para o carrinho de compras e finalização normal do pedido.

Veja em www.shop.misterdrums.net
#37360
unknown1140 escreveu:Na loja que estou montando precisei vender produtos sob encomenda, porém não podia vender produtos que estão esgotados e também não podia desativa-los.
É uma modificação super simples somente em um arquivo. Não sou programador, então se tiver algo estranho, por favor avisem. Testado na versão 1.5.3.1.

Antes de modificar o arquivo é necessário fazer duas pequenas modificações:
Vá em Sistema>Configurações>Editar | Selecione a aba "Opções", permita a venda sem estoque e salve. Se preferir você pode deixar a opção "Exibir Aviso de Sem Estoque" selecionada e no arquivo da tradução (catalog/language/portuguese-br/checkout/cart.php) mudar o texto para algo como "Produtos marcados com *** estão disponíveis somente para encomendas! O prazo de entrega é de 15 dias mais prazo dos correios." para lembrar mais uma vez que o produto será somente sob encomenda/pre-order.
Agora vá em: Sistema>Localização>Situações de Estoque. Adicione a situação "Encomendar".
Finalmente vamos modificar o arquivo "product.tpl" (catalog/view/theme/SEU-TEMA/template/product/product.tpl):
Procure a linha q contem o seguinte código (no template default fica na linha 209):
Código: Selecionar todos
<input type="button" value="<?php echo $button_cart; ?>" id="button-cart" class="button" />
e substitua por:
Código: Selecionar todos
<!--BOTÃO ENCOMENDAR-->
<?php if ($product_info['quantity'] >= 1) {?>
	<input type="button" value="<?php echo $button_cart; ?>" id="button-cart" class="button" />
<?php } elseif ($product_info['stock_status'] == "Encomendar"){ ?>
	<input type="button" value="<?php echo $stock; ?>" id="button-cart" class="button" />
<?php } else { ?>
	<input type="button" value="<?php echo $stock; ?>" id="button-cart"class="button" disabled />						
<?php } ?>
<!--FIM ENCOMENDAR-->
Se você desejar substituir "Encomendar" por outro termo como "Pré-venda", na opção "Situações de Estoque" crie o termo desejado e no código substitua "Encomendar" pelo termo cadastrado.
Agora é só mudar na Aba dados do produto a opção "Situação se Indisponível:" para "Encomendar" e mudar a opção "Quantidade" para 0. O único problema é q vc não tem controle de estoque.
O legal desta modificação é que o botão comprar muda para "Encomendar" quando o produto está disponível para encomenda. Quando está esgotado o botão é desativado e muda para esgotado.

Update para a versão 1.5.5.1:
Houve uma pequena mudança nas variáveis da versão 1.5.5.1, use este código abaixo se vc estiver utilizando esta versão:
Código: Selecionar todos
<!--BOTÃO ENCOMENDAR-->
<?php if ($stock == 'Em Estoque') {?>
<input type="button" value="<?php echo $button_cart; ?>" id="button-cart" class="button" />
<?php } elseif ($stock =="Encomendar"){ ?>
<input type="button" value="<?php echo $stock; ?>" id="button-cart" class="button" />
<?php } else { ?>
 <input type="button" value="<?php echo $stock; ?>" id="button-cart"class="button" disabled />                  
<?php } ?>
<!--FIM ENCOMENDAR-->
Espero q ajude alguém :D!

Estava precisando de uma alteração dessas.

Para a versão 1.5.5.1 é necessário alterar o código de "Encomendar" para 'Encomendar'.

Se no sistema estiver configurado para exibir as quantidades, quando tiver o produto no estoque, no botão irá aparecer a quantidade do produto disponível.

Para ficar perfeito, seria bom colocar no e-mail enviado (e no pedido na conta do usuário) a informação do item que foi comprado sob encomenda. Vou pesquisar a melhor forma de fazer isto.
#37688
taxipack escreveu:Caso o cliente peça mais do que tem no estoque por exemplo tem 10 e o cliente quer comprar 15 ??? como ficaria a conclusao da compra ????

Se for colocado a condição de estoque necessária para vender sem estoque, a venda das 15 unidades deve ser concluída normalmente.

Entretanto, caso a situação padrão do produto seja "Esgotado" não sei como se procederá a compra (se ocorrerá a venda de apenas 10 unidades, se ocorrerá a venda das 15 unidades ou se ocorrerá outra coisa).

Mais tarde, irei testar essas situações e, posteriormente, descrevo os resultados.
#37723
No meu caso eu uso o estoque apenas como moderador de quantidade .... nao controlo o estoque pelo site e a minha intencao era deixar o cliente concluir o pedido independentemente da quantidade comprada .. se fosse poucos itens a entrega ficaria normal caso contrario como no exemplo dado acima .. tem 10 pede 15 .. ai jogaria o pedido como encomenda entendeu ?