Fórum OpenCart Brasil

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

#592
### Para quem tem o sistema de alerta de vendas funcionando direitinho, use o ultimo codigo ( 2.0 ) alerta de baixo estoque. E mais limpo e funciona muito bem. Lhe da todas as informacoes importantes. Se o estoque de algum item estiver baixo "O alerta aparece no titulo do email de alerta de venda do OC"

### Para quem tem problemas de receber os emails de alerta, a primeira modificacao funciona tambem.


Ola para todos.

Aqui vai uma modificacao que manda um email de alerta cara vez que uma venda e realizada com sucesso, e um outro email de alerta quando o estoque de qualquer item cai abaixo de X. No momento esta configurado quando estoque esta abaio de 2.

Atencao, nao e um modulo novo, e uma alteracao de um arquivo do codigo fonte. Com certeza existem os usuarios que vao dizer que nao e uma boa ideia alterar o codigo fonte. Minha opiniao e, nao e problema nenhum alteracoes do codigo. Guarde uma copia do arquivo original que voce vai trocar, se precisar e so reinstalar e tudo volta ao normal.

Vamos la:
Essa modificacao e bem simples. Voce vai receber um email todas as vezes que uma venda e concluida e se o estoque de qualquer item for abaixo de 2.

Ajustes: Se voce nao quer receber email de algum item onde o valor de estoque sempre 0, ou menor que 2.... faca que seu item tenha acima de 2 items em estoque, e a cada venda nao tem reducao desse numero.

Como instalar;

1. Faca uma copia do arquivo catalog/model/checkout/order.php e quarde no seu comp.

2. Abra o arquivo order.php no servidor e troque o codigo abaixo.

3. Mude o email "seu_email@domain.com" pelo email que vc gostaria de receber os alertas

4. Espero que gostem

Encontre esse codigo:
Código: Selecionar todos
$this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = (quantity - " . (int)$product['quantity'] . ") WHERE product_id = '" . (int)$product['product_id'] . "' AND subtract = '1'");

Trocar por: Use o copiar e colar
Código: Selecionar todos
$this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = (quantity - " . (int)$product['quantity'] . ") WHERE product_id = '" . (int)$product['product_id'] . "' AND subtract = '1'");
				
				
			//Q: Alerta baixo estoque
               $qry = $this->db->query("SELECT quantity, model FROM " . DB_PREFIX . "product WHERE product_id = '" . (int)$product['product_id'] . "'");
               if ($qry->row['quantity'] < 2) {
// O numero 2 acima apos 'quantity' representa a quantidade minina para acionar o ALERTA de baixo estoque. Se precisar e so mudar o valor. 
// Adicionar seu email aqui
$to = 'seu_email@domain.com';
//Titulo email
$subject = 'Alerta: Estoque Baixo';
//Mensagem. Cada linha separada por \n
$message = "Estoque baixo um dos items";
//Headers - From = seuemail@seuemail.com    Reply-to  seuemail@seuemail.com  
$headers = "From: seu_email@domain.com\r\nReply-To: seu_email@domain.com";
//send the email
$mail_sent = @mail( $to, $subject, $message, $headers );

               }
               
               $qry = $this->db->query("SELECT quantity, model FROM " . DB_PREFIX . "product WHERE product_id = '" . (int)$product['product_id'] . "'");
               if ($qry->row['quantity']) {
               
$to = 'seu_email@domain.com';
//Titulo email
$subject = 'Venda Concluida';
//Mensagem. Cada linha separada por \n
$message = "Venda Concluida";
//Headers - From = seuemail@seuemail.com    Reply-to  seuemail@seuemail.com  
$headers = "From: seu_email@domain.com\r\nReply-To: seuemail@domain.com";
//send the email
$mail_sent = @mail( $to, $subject, $message, $headers );

               }
               //	
Editado pela última vez por fab26x em 01 Nov 2010, 20:05, em um total de 1 vez.
Por fab26x
#596
Uma observacao importante. O Alerta de Venda nao e necessario se o alerta do Opencart esta funcionando perfeitamente. Opencart antigos tiveram muitos problemas anteriormente.

Esse codigo manda somente o alerta se o estoque esta baixo:
Código: Selecionar todos
$this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = (quantity - " . (int)$product['quantity'] . ") WHERE product_id = '" . (int)$product['product_id'] . "' AND subtract = '1'");
            
            
         //Q: Alerta baixo estoque
               $qry = $this->db->query("SELECT quantity, model FROM " . DB_PREFIX . "product WHERE product_id = '" . (int)$product['product_id'] . "'");
               if ($qry->row['quantity'] < 2) {
// O numero 2 acima apos 'quantity' representa a quantidade minina para acionar o ALERTA de baixo estoque. Se precisar e so mudar o valor.
// Adicionar seu email aqui
$to = 'seu_email@domain.com';
//Titulo email
$subject = 'Alerta: Estoque Baixo';
//Mensagem. Cada linha separada por \n
$message = "Estoque baixo um dos items";
//Headers - From = seuemail@seuemail.com    Reply-to  seuemail@seuemail.com 
$headers = "From: seu_email@domain.com\r\nReply-To: seu_email@domain.com";
//send the email
$mail_sent = @mail( $to, $subject, $message, $headers );

                                                          }
               
               //   
Por fab26x
#1204
Amigos,

Aqui vai a versao 2.0 .... e mais limpa e diria que melhor que a primeira. Esse e no caso que seu carrinho de compras esta funcionando bem, mandando os emails de alerta de vendas sem problemas. Nessa versao 2.0, voce nao precisa incluir um email externo. O sistema vai usar o email interno mesmo.

1, nao use o primeiro alerta que foi postado. Use essa nova modificacao. O primeiro alerta de baixo estoque e otimo para quem tem problemas de receber emails atravez de seu sistema.

Vamos la, essa nova modificacao vai mandar para o seu email no titulo do alerta de vendas a palavra ( "ALERTA" Estoque Baixo ). Se o estoque ficar abaixo de 3 unidade o alerta dispara.

Qualquer duvida... estamos aqui.

Procure esse codigo:
Código: Selecionar todos
	if ($this->config->get('config_alert_mail')) {
				
				// HTML
				$template->data['text_greeting'] = $language->get('text_received') . "\n\n";
				$template->data['invoice'] = '';
				$template->data['text_invoice'] = '';
				
				if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/mail/order_confirm.tpl')) {
					$html = $template->fetch($this->config->get('config_template') . '/template/mail/order_confirm.tpl');
				} else {
					$html = $template->fetch('default/template/mail/order_confirm.tpl');
				}
				
				$subject = sprintf($language->get('text_subject'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'), $order_id . ' (' . $order_total . ')');
				
				$mail->setSubject($subject);
				$mail->setTo($this->config->get('config_email'));
				$mail->setHtml($html);
				$mail->send();
				
				// Send to additional alert emails
				$emails = explode(',', $this->config->get('config_alert_emails'));
				foreach ($emails as $email) {
					$mail->setTo($email);
					$mail->send();
				}
				

E troque por
Código: Selecionar todos
if ($this->config->get('config_alert_mail')) {
				
				// HTML
				$template->data['text_greeting'] = $language->get('text_received') . "\n\n";
				$template->data['invoice'] = '';
				$template->data['text_invoice'] = '';
				
				if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/mail/order_confirm.tpl')) {
					$html = $template->fetch($this->config->get('config_template') . '/template/mail/order_confirm.tpl');
				} else {
					$html = $template->fetch('default/template/mail/order_confirm.tpl');
				}
				
				$qry = $this->db->query("SELECT quantity, model FROM " . DB_PREFIX . "product WHERE product_id = '" . (int)$product['product_id'] . "'");
               if ($qry->row['quantity'] < 3) {
               
                $subject = sprintf($language->get('text_subject'), html_entity_decode($this->config->get(''), ENT_QUOTES, ''), $order_id . ' (' . $order_total . ') "ALERTA" Estoque Baixo');
                }  else {
				$subject = sprintf($language->get('text_subject'), html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'), $order_id . ' (' . $order_total . ')');
				
				}
				
				
				$mail->setSubject($subject);
				$mail->setTo($this->config->get('config_email'));
				$mail->setHtml($html);
				$mail->send();
				
				// Send to additional alert emails
				$emails = explode(',', $this->config->get('config_alert_emails'));
				foreach ($emails as $email) {
					$mail->setTo($email);
					$mail->send();
				}
				
Na parte : if ($qry->row['quantity'] < 3) o numero 3 e a quantidade minima de estoque. Para produtos que vendem em grandes quantidades, pode se mudar o numero para 100, 300, ou 1000. Fica ao seu criterio.

Boa Sorte..

Fabio
Editado pela última vez por fab26x em 02 Nov 2010, 00:32, em um total de 1 vez.
#1205
Ultima coisa..... essa modificacao deve ser feita no codigo original, sem mudancas. Outra coisas, essa mudanca o email de alerta que voce vai receber tem todas as informacoes da venda. Ex; Pedido 172 (R$3.623,55) "ALERTA" Estoque Baixo . Dentro do email voce recebe a informacao de qual produto esta em baixa.

Buenas....

Fabio
#59614
Tenho uma dúvida, como fazer para receber um aviso de baixa de estoque mais por opção.

Exemplo:

Tenho 10 de Chocolate e 1 de Morango, gostaria de ser avisado por e-mail que a opção morango está com baixa de estoque.

Alguém tem alguma ideia ou módulo pra isso????
Uso Opencart 2.0.1.1

Vlw galera

Olá! Tudo bem? Verifique as configura&cced[…]

Olá! Tudo bem? Trabalho com Opencart h&aac[…]

Imagem do Carrinho de Compras

Olá! Tudo bem? São vários lo[…]

Discover new facets of pleasure, one night only R[…]