Jump to content

Enviar email pedido según el producto comprado


Adrian1312

Recommended Posts

Buenas tardes,

lanzo una consulta por si podéis ayudarme.

Necesito que, a la hora de comprar un producto, según el producto que sea, se emita el pedido tanto al administrador por defecto de la tienda, como a otro segundo email, que puede variar.

No sé si actualmente existe algún plugin para ello, la idea es que dentro de una tienda, haya producto de diferentes proveedores, donde todo lo administra una misma persona, y notifique a cada proveedor cuando se realice un pedido de su producto, pero el pago va todo al administrador.

Gracias de antemano!

Link to comment
Share on other sites

Hola @Adrian1312

Te recomiendo que hagas lo siguiente:

  • Tabla _DB_PREFIX_orders crees un nuevo campo "notify_supplier" type boolean default 0. (Debes agregarlo también a la clase order/Orders.php en el Override.
  • Crees un archivo PHP demo.php en una carpeta "procesos" dentro de public_html/procesos (Sólo elegí este nombre).
  • Ve archivo demo.php que adjunto, te servirá lo suficiente.
  • Aquí tienes la documentación para hacer el envío del e-mail https://devdocs.prestashop.com/1.7/development/mail/
<?php
/*
@Author: 	Ricardopxl
@URL: 		https://digitag.cl
@Date: 		17-02-2020
*/
require('../config/config.inc.php');

$listManufacturer = array();

foreach (getOrdersPendingSendMail() as $key => $order) {
	$order = new Order($order['id_order']);

	foreach ($order->getOrderDetailList() as $key => $p) {
		$product = new Product($p['product_id']);

		$mail = getMailIdManufacturer($product->id_manufacturer);
		
		if ($mail!=false && !isset($listManufacturer[$product->id_manufacturer])) {
			$listManufacturer[$order['id_order']][$product->id_manufacturer] = $mail;
			// SEND EMAIL
				// SEND MAIL HERE
			// END SEND EMAIL

			$order->notify_supplier = 1; // After send mail, save order with complete process "notify";
			$order->save();
		}

	}
}
/**
 * Get order pending send email to manufacturer
 *
 * @return array orders
 */
function getOrdersPendingSendMail(){
	#$sql = 'SELECT id_order FROM '._DB_PREFIX_.'orders WHERE valid = 1;';
	$sql = 'SELECT id_order FROM '._DB_PREFIX_.'orders WHERE notify_supplier = 1;';
	return Db::getInstance()->ExecuteS($sql);
}
/**
 * Get mail from ID manufacturer (Manual List), you can modify Manufacturer Objet to add new property "email"
 *
 * @param int $id - ID Manufacturer
 *
 * @return string email
 */
function getMailIdManufacturer($id){
	$m[1] = '[email protected]';
	$m[2] = '[email protected]';
	$m[3] = '[email protected]';
	$m[4] = '[email protected]';
	$m[5] = '[email protected]';
	$m[6] = '[email protected]';
	$m[7] = '[email protected]';
	$m[8] = '[email protected]';
	$m[9] = '[email protected]';
	$m[10] = '[email protected]';
	if (isset($m[$id])) {
		return $m[$id];
	}else{
		return false;
	}
}

 

demo.php

Link to comment
Share on other sites

  • 2 years later...

Hola buenas tardes, alguien podría por favor, indicar como proceder para hacer esto mismo, poner un email a cada artículo de la tienda y enviar una notificación a esas direcciones de correo cada vez que se venda ese artículo?

¿Y los campos de personalización, rellenados por el cliente durante la compra, se pueden añadir también a ese email?

 

Gracias.

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...