gr_fenix Posted February 28, 2014 Share Posted February 28, 2014 Buenos días, Me presento con el nombre de GR_Fenix. Partiendo del módulo de Prestashop de "Retome contacto con sus clientes", quiero hacer una modificación para que muestre de la siguiente forma el correo de los carritos abandonados (Opción 1). Un ejemplo de lo que quiero hacer: El módulo de PS solo muestra un texto así: Hola {firstname} {lastname}, Su cesta de {shop_name} Nos dimos cuenta de que durante su última visita en {shop_name}, que no ha validado la orden que había comenzado. Su carrito ha sido guardado, puede reanudar su solicitud por visitar nuestra tienda:{shop_url} Como excepción, le ofrecemos un descuento del {amount}% de descuento en su próximo pedido! Esta oferta es válida para {days} días, así que no pierdas un instante! Aquí está tu cupón: {voucher_num} Introduzca este código en tu carrito de compras para obtener el descuento. Para llegar a este fin, he modificado el modulo original de PS. El archivo followup.php. He modificado la llamada a la base de datos para obtener la ID del Producto que están en la cesta y el nombre: $sql = ' SELECT c.id_cart, c.id_lang, cu.id_customer, cu.firstname, cu.lastname, cu.email, cp.id_product, pl.name FROM '._DB_PREFIX_.'cart c LEFT JOIN '._DB_PREFIX_.'orders o ON (o.id_cart = c.id_cart) LEFT JOIN '._DB_PREFIX_.'customer cu ON (cu.id_customer = c.id_customer) LEFT JOIN '._DB_PREFIX_.'cart_product cp ON (cp.id_cart = c.id_cart) LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (pl.id_product = cp.id_product) WHERE DATE_SUB(CURDATE(),INTERVAL 7 DAY) <= c.date_add AND cu.id_customer IS NOT NULL AND o.id_order IS NULL AND pl.id_lang = 3'; if (!empty($emailLogs)) $sql .= ' AND c.id_cart NOT IN ('.join(',', $emailLogs).')'; $emails = Db::getInstance()->ExecuteS($sql); if ($count OR !sizeof($emails)) return sizeof($emails); $conf = Configuration::getMultiple(array('PS_FOLLOW_UP_AMOUNT_1', 'PS_FOLLOW_UP_DAYS_1')); foreach ($emails AS $email) { $voucher = $this->createDiscount(1, (float)($conf['PS_FOLLOW_UP_AMOUNT_1']), (int)($email['id_customer']), strftime('%Y-%m-%d', strtotime('+'.(int)($conf['PS_FOLLOW_UP_DAYS_1']).' day')), $this->l('Discount for your cancelled cart')); if ($voucher !== false) { $templateVars = array('{email}' => $email['email'], '{lastname}' => $email['lastname'], '{firstname}' => $email['firstname'], '{id_product}' => $email['id_product'],'{name}' => $email['name'], '{amount}' => $conf['PS_FOLLOW_UP_AMOUNT_1'], '{days}' => $conf['PS_FOLLOW_UP_DAYS_1'], '{voucher_num}' => $voucher->name); $result = Mail::Send((int)($email['id_lang']), 'followup_1', Mail::l('Your cart and your discount', $email['id_lang']), $templateVars, $email['email'], $email['id_product'], $email['name'], $email['firstname'].' '.$email['lastname'], NULL, NULL, dirname(__FILE__).'/mails/'); $this->logEmail(1, (int)($voucher->id), (int)($email['id_customer']), (int)($email['id_cart'])); } } El problema es que no hay un bucle para mostrar más de un producto. La pregunta es: ¿Cómo puedo hacer un For Each para mostrar cada uno de los productos que el cliente tiene en el carrito? Gracias Link to comment Share on other sites More sharing options...
gr_fenix Posted March 3, 2014 Author Share Posted March 3, 2014 Algún comentario? Link to comment Share on other sites More sharing options...
rafaelamargo Posted July 25, 2014 Share Posted July 25, 2014 Hola gr_fenix, Me interesa este tema, si has conseguido desarrollarlo al final ¿Puedes compartirlo? Gracias ! Link to comment Share on other sites More sharing options...
gr_fenix Posted July 25, 2014 Author Share Posted July 25, 2014 Hola Rafael, Conseguí que mostrara el producto, nombre, cantidad etc que tenía el cliente en el carrito, pero como comenté en rojo, solo me muestra 1. No hay recorrido "for each" de cada artículo. Podríamos avanzar en conjunto con este tema. Saludos Link to comment Share on other sites More sharing options...
Recommended Posts