gamdev Posted December 1, 2015 Share Posted December 1, 2015 (edited) Hola a todos, Necesito enviar el campo supplier_reference, al hacer un pedido desde prestashop ¿Donde puedo configurarlo para que envíe ese campo? Utilizo el prestashop 1.6.1.0 Muchas gracias a todos =) Edited February 12, 2016 by ventura (see edit history) Link to comment Share on other sites More sharing options...
Dionisio_Fonseca Posted December 1, 2015 Share Posted December 1, 2015 ¿Enviarlo a donde? Link to comment Share on other sites More sharing options...
gamdev Posted December 2, 2015 Author Share Posted December 2, 2015 (edited) por email al que recoge el pedido, es decir, cuando se hace un pedido se envía un email al que tiene que preparar el envío, es en ese email donde tengo que enviar el campo. Edited December 2, 2015 by gamdev (see edit history) Link to comment Share on other sites More sharing options...
josefespejo Posted February 9, 2016 Share Posted February 9, 2016 (edited) ¿Alguien lo ha solucionado? Yo he llegado hasta modificar el fichero que está en mails/es/order_conf_product_list.tpl (en español, claro) Aquí viene el código que saca la referencia de los productos listados en el pedido (linea 8 del código en versión 1.6.0.14): <font size="2" face="Open-sans, sans-serif" color="#555454"> {$product['reference']} </font> Bien, pues cambio reference por supplier_reference y me sale vacío. Entiendo que habrá alguna clase donde esté cargando una SELECT y este campo no está. ¿Alguien sabría dónde habría que añadirlo para poder usarlo?, con esto quedaría resuelto el tema. Gracias Edited February 9, 2016 by josefespejo (see edit history) Link to comment Share on other sites More sharing options...
ventura Posted February 10, 2016 Share Posted February 10, 2016 (edited) Prueba con product_supplier_reference Hará falta añadirlo tambien en el array product_var_tpl \classes\PaymentModule.php Edited February 10, 2016 by ventura (see edit history) 1 Link to comment Share on other sites More sharing options...
josefespejo Posted February 11, 2016 Share Posted February 11, 2016 Hola Ventura, Gracias por responder. Lo que estoy haciendo es lo siguiente (siguiendo tu consejo). En el fichero \classes\PaymentModule.php agrego lo que está en rojo $product_var_tpl = array( 'reference' => $product['reference'], 'name' => $product['name'].(isset($product['attributes']) ? ' - '.$product['attributes'] : ''), 'unit_price' => Tools::displayPrice($product_price, $this->context->currency, false), 'price' => Tools::displayPrice($product_price * $product['quantity'], $this->context->currency, false), 'quantity' => $product['quantity'], 'customization' => array(), 'product_supplier_reference' => $product['supplier_reference'] ); y en mails/es/order_conf_product_list.tpl lo pongo así: <font size="2" face="Open-sans, sans-serif" color="#555454"> {$product['product_supplier_reference']} </font> He probado con product_supplier_reference, sólo con supplier_reference, creo que todas las combinaciones, y no funciona. ¿Qué estoy haciendo mal? Link to comment Share on other sites More sharing options...
ventura Posted February 11, 2016 Share Posted February 11, 2016 (edited) ¿Qué estoy haciendo mal? Nada, entonces es que el registro no se incluye en esa funcion. Haz esto. en el $product_var_tpl_list = array(); foreach ($order->product_list as $product) { debajo añade $reference_supplier = ProductSupplier::getProductSupplierReference((int)$product['id_product'], ($product['id_product_attribute'] ? (int)$product['id_product_attribute'] : null), $product['id_supplier']); y luego mas abajo en el $product_var_tpl = array( añade 'product_supplier_reference' => $reference_supplier, Edited February 11, 2016 by ventura (see edit history) 2 Link to comment Share on other sites More sharing options...
josefespejo Posted February 11, 2016 Share Posted February 11, 2016 (edited) Lo he puesto como indicas $reference_supplier = ProductSupplier::getProductSupplierReference((int)$product['id_product'], ($product['id_product_attribute'] ? (int)$product['id_product_attribute'] : null), $product['id_supplier']); $product_var_tpl = array( 'reference' => $product['reference'], 'name' => $product['name'].(isset($product['attributes']) ? ' - '.$product['attributes'] : ''), 'unit_price' => Tools::displayPrice($product_price, $this->context->currency, false), 'price' => Tools::displayPrice($product_price * $product['quantity'], $this->context->currency, false), 'quantity' => $product['quantity'], 'customization' => array(), 'product_supplier_reference' => $reference_supplier ); y en mails/es/order_conf_product_list.tpl: <font size="2" face="Open-sans, sans-serif" color="#555454"> {$product['product_supplier_reference]} </font> No me sale nada en el lugar de ese campo en el mail... Edited February 11, 2016 by josefespejo (see edit history) Link to comment Share on other sites More sharing options...
ventura Posted February 11, 2016 Share Posted February 11, 2016 No debes de estar colocando el codigo de manera correcta. Te adjunto archivo de la clase sobreescrita (version de prestashop 1.6.1.4). subelo a override\classes borra el archivo /cache/class_index.php y deja el order_conf_product_list.tpl: conforme lo tienes PaymentModule.php Link to comment Share on other sites More sharing options...
josefespejo Posted February 11, 2016 Share Posted February 11, 2016 Nada, sigue saliendo blanco. Por favor, pásame también tu order_conf_product_list.tpl porque no entiendo ya por qué no sale. Gracias Link to comment Share on other sites More sharing options...
ventura Posted February 11, 2016 Share Posted February 11, 2016 Seria poner la variable como la tienes, dentro del foreach {$product['product_supplier_reference']} Revisa la carpeta themes/ por si tienes en ella otra carpeta mails que sobreescriba a la de por defecto Link to comment Share on other sites More sharing options...
josefespejo Posted February 12, 2016 Share Posted February 12, 2016 He probado lo siguiente en la línea que me indicas de PaymentModule.php En lugar de poner: $reference_supplier = ProductSupplier::getProductSupplierReference((int)$product['id_product'], ($product['id_product_attribute'] ? (int)$product['id_product_attribute'] : null), $product['id_supplier']); He puesto: $reference_supplier = 'PRUEBA'; Y sale corréctamente en la columna el texto 'PRUEBA', por lo cual entiendo que la función ProductSupplier::getProductSupplierReference no me está retornando nada. He probado cambiar parámetros pero nada. Link to comment Share on other sites More sharing options...
ventura Posted February 12, 2016 Share Posted February 12, 2016 No lo sé compañero. Las pruebas que no te imprimen la referencia del proveedor son con atributos y referencia en ella ¿?. Entiendo que en la tabla ps_product_supplier tienes los registros correspondientes a esas referencias guardadas Link to comment Share on other sites More sharing options...
josefespejo Posted February 12, 2016 Share Posted February 12, 2016 Has dado en la clave, lo que yo necesito es sacar el valor del campo supplier_reference de ps_product. En la tabla de ps_product_supplier no tengo información. Link to comment Share on other sites More sharing options...
ventura Posted February 12, 2016 Share Posted February 12, 2016 Alli se te deberian de estar guardando las referencias del proveedor asociadas a cada producto Link to comment Share on other sites More sharing options...
josefespejo Posted February 12, 2016 Share Posted February 12, 2016 Es que la base de datos se alimenta por una aplicación externa, de forma que al rellenar la tabla ps_product se rellena este campo con una referencia que es la que el cliente quiere que aparezca, de hecho, lo tengo cambiado en la lista de productos, en la ficha de producto y el resumen del carrito. ¿No hay forma de acceder al contenido de ese campo a través del id del artículo? ¿Alguna función get como la que me has dicho pero que saque este campo de ps_product? Link to comment Share on other sites More sharing options...
josefespejo Posted February 12, 2016 Share Posted February 12, 2016 No es un campo nuevo, el campo supplier_reference existe en la table ps_product. Es el que necesito agregar. Link to comment Share on other sites More sharing options...
ventura Posted February 12, 2016 Share Posted February 12, 2016 Entiendo entonces que tienes creado un campo nuevo en ps_product con esa referencia. Si es asi solo haria falta añadirla en el array de la clase Link to comment Share on other sites More sharing options...
ventura Posted February 12, 2016 Share Posted February 12, 2016 Añadelo en el array de la clase entonces. Link to comment Share on other sites More sharing options...
josefespejo Posted February 12, 2016 Share Posted February 12, 2016 Es lo que probé primero con tus indicaciones: En el array añadir: 'product_supplier_reference' => $product['supplier_reference'] No lo coge, así que imagino que tendrá que ser algo distinto $product['supplier_reference'] o como decía al principio que haya una select en algún lado donde no está incluida??? Link to comment Share on other sites More sharing options...
josefespejo Posted February 12, 2016 Share Posted February 12, 2016 Solucionado Tirando de otros hilos donde tú también has participado. En classes/Cart.php En función public function getProducts($refresh = false, $id_product = false, $id_country = null) Hay que añadir este campo a la select que no estaba: // Build SELECT $sql->select('cp.`id_product_attribute`, p.`supplier_reference` AS supplier_reference2 , cp.`id_product`, cp.`quantity` AS cart_quantity, cp.id_shop, pl.`name`, p.`is_virtual`, pl.`description_short`, pl.`available_now`, pl.`available_later`, product_shop.`id_category_default`, p.`id_supplier`, p.`id_manufacturer`, product_shop.`on_sale`, product_shop.`ecotax`, product_shop.`additional_shipping_cost`, product_shop.`available_for_order`, product_shop.`price`, product_shop.`active`, product_shop.`unity`, product_shop.`unit_price_ratio`, stock.`quantity` AS quantity_available, p.`width`, p.`height`, p.`depth`, stock.`out_of_stock`, p.`weight`, p.`date_add`, p.`date_upd`, IFNULL(stock.quantity, 0) as quantity, pl.`link_rewrite`, cl.`link_rewrite` AS category, CONCAT(LPAD(cp.`id_product`, 10, 0), LPAD(IFNULL(cp.`id_product_attribute`, 0), 10, 0), IFNULL(cp.`id_address_delivery`, 0)) AS unique_id, cp.id_address_delivery, product_shop.advanced_stock_management, ps.product_supplier_reference supplier_reference, IFNULL(sp.`reduction_type`, 0) AS reduction_type'); Una vez hecho esto se puede agregar al array de \classes\PaymentModule.php el campo supplier_reference2 ya declarado en Cart.php $product_var_tpl = array( 'reference' => $product['reference'], 'product_supplier_reference' => $product['supplier_reference2'] 'name' => $product['name'].(isset($product['attributes']) ? ' - '.$product['attributes'] : ''), 'unit_price' => Tools::displayPrice($product_price, $this->context->currency, false), 'price' => Tools::displayPrice($product_price * $product['quantity'], $this->context->currency, false), 'quantity' => $product['quantity'], 'customization' => array() ); Por último ya podemos utilizarlo en mails/es/order_conf_product_list.tpl: <font size="2" face="Open-sans, sans-serif" color="#555454"> {$product['product_supplier_reference]} </font> Madre mía, que follón, pero al fin todo queda más claro, y muchísimas gracias a tí ventura, gracias a tus indicaciones por fin hemos llegado a la solución.
Recommended Posts