Jump to content

[Solucionado]Enviar El Campo "supplier_Reference" Al Hacer Un Pedido


gamdev

Recommended Posts

  • 2 months later...

¿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 by josefespejo (see edit history)
Link to comment
Share on other sites

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

 

 

¿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 by ventura (see edit history)
  • Like 2
Link to comment
Share on other sites

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 by josefespejo (see edit history)
Link to comment
Share on other sites

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

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

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

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.

 

:lol:  :lol:  :lol:  :lol:  :lol:  :lol:  :lol:

  • Like 1
Link to comment
Share on other sites

Que follon si, y date cuenta que si tienes combinaciones de productos con referencia de proveedor no se incluira al no estar estas en la tabla de product-supplier.

Pero vamos que si te apañas asi estupendo. Me alegro de que lo hayas solucionado, el que no desespera siempre encuentra solución

 

Un saludo.

Link to comment
Share on other sites

  • 5 months later...
  • 1 month later...

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???

Hola,

conseguiste enviar el campo?

Link to comment
Share on other sites

Sí, en la segunda página de este hilo del foro verás las soluciones.

Solución 1; Para campo en ps_product. (Es la que yo necesitaba porque este campo lo relleno yo desde una app externa)

Solución 2; Para campo en combinaciones de productos. (Solución de ventura, es más correcta, la que se rellena en prestashop)

Edited by josefespejo (see edit history)
Link to comment
Share on other sites

En tal caso, gracias a tí queda resuelto también de forma más compleja si es en base a las múltiples referencias por proveedor, no sólamente el campo este por defecto de la tabla ps_product.

 

gamdev ¿Cómo lo ves? ¿Puedes poner el tema como resuelto?

Pues no consigo hacerlo funcionar :S, no me lo pone, a parte, he probado a poner texto plano y se envía al que compra, no al que quiero que prepare el pedido :(

Link to comment
Share on other sites

Hago exactamente lo que dices y me sigue sin enviar el campo supplier_reference :S

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.

 

:lol:  :lol:  :lol:  :lol:  :lol:  :lol:  :lol:

 

 

Link to comment
Share on other sites

  • nadie locked this topic
Guest
This topic is now closed to further replies.
×
×
  • Create New...