Jump to content

SOLUCIONADO Indicar días que tardará cada envío


Recommended Posts

Hola,

 

Debido a temas de logística y diferentes proveedores, tengo que indicar plazos de entrega diferentes según un producto u otro (los que son con envío gratis, productos digitales, no hay problema, esto solo afecta a los físicos).

 

Dónde puedo indicar el plazo de entrega de cada artículo?

 

Además, al final del proceso de compra, a pesar de estar todo bien configurado con mi transportista, aparece el texto en inglés "deliver next day", como lo cambio? Muchas gracias !

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

Hola Ventura,

 

Exacto. Lo ideal sería esto. Si no puede ser, lo añadiría al final de pedido, aunque ya no es tan óptimo...Hay tipos de producto que se pueden enviar en cosa de 24h -48h, pero otros pueden tardar 10 o 15 días...

Link to comment
Share on other sites

Si, todos los productos tienen transportistas. La mitad, que son servicios, tienen transportista gratuito. La otra mitad, productos, tienen transportista normal de pago. Ambos los transportistas están activados...

 

Creo que lo mejor será indicarlo en el texto o similar. No sería posible indicarlo debajo o encima del precio. O, quizás, debajo de la descripción corta como un pequeño campo aparte?

Link to comment
Share on other sites

Pues que raro... Tiene que ser algo de donde se introducen las sentencias que indicabas. Te pregunto más abajo las dudas

 

En el archivo

classes/Product.php

Añade esta funcion debajo de la getCarriers por ejemplo, asi tendrás los transportistas y el plazo de entrega que tienen

/**
* getCarriersDelay return an array of carriers name and delays
** @return array with carriers dates
*/

public function getCarriersDelay()     DONDE, en que linea o espacio?
{
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT cl.`delay`, c.`name`
FROM `'
._DB_PREFIX_.'carrier_lang` cl
LEFT JOIN`'
._DB_PREFIX_.'product_carrier` pc
ON (pc.`id_carrier_reference` = cl.`id_carrier`)
LEFT JOIN `'
._DB_PREFIX_.'carrier` c
ON (c.`id_reference` = pc.`id_carrier_reference` AND c.`deleted` = 0)
WHERE pc.`id_product` = '
.(int)$this->id.'
AND cl.`id_lang`='
.(int)$this->id_lang.'
ORDER BY c.name ASC'
);
}

 

 

Luego en el archivo

controllers/front/ProductController.php

Añade esto en la funcion

public function initContent()      DONDE, en que linea o espacio?

 

 

En la parte:

$this->context->smarty->assign(array(

 Añades otra linea con este codigo ( no olvidar la coma al final)

 'carriersdelay' => $this->product->getCarriersDelay($this->context->language->id),

 

 

DONDE, en que linea o espacio? ** EN ESTE caso, hay varias lineas de código con  $this->context->smarty->assign(array(    En cual de ellas?

 

Despues en el archivo 

themes/tu_tema/product.tpl

 

En la parte que quieras que aparezca colocas esto:

 {if $carriersdelay}
 <p>{l s='Carriers list'}<p/>
{foreach from=$carriersdelay item=carrier}
{$carrier.name} : {$carrier.delay}"><br/>
{/foreach}
 {/if}

 

Puede ponerse al final del código directamente?

Link to comment
Share on other sites

Creo que lo mejor será se hagas esto.

 

 

Añade el archivo adjunto en esta ruta

override/classes/

Luego en el archivo

controllers/front/ProductController.php

En el array linea 255 aprox,

$this->context->smarty->assign(array(

añades esta variable junto con las que hay, donde quieras


'carriersdelay' => $this->product->getCarriersDelay($this->context->language->id),

Y por ultimo en el archivo

themes/tu_tema/product.tpl

Si quieres que aparezca debajo de la descripcion corta, ponlo asi

			{if $product->description_short || $packItems|@count > 0}
				<div id="short_description_block">
					{if $product->description_short}
						<div id="short_description_content" class="rte align_justify" itemprop="description">{$product->description_short}</div>
					
<!-- Empieza lista de carriers -->

{/if}
					 {if $carriersdelay}
 <p><strong>{l s='Carriers list'}</strong><p/>
{foreach from=$carriersdelay item=carrier}
<strong>{$carrier.name}</strong> : {$carrier.delay|escape:'html':'UTF-8'}<br/>

{/foreach}
 {/if}

<!-- Termina lista de carriers -->

Es conveniente que borres archivo

caches/class_index.php

Y vaciar el cache desde

Parametros avanzados/ Rendimiento

Product.php

Link to comment
Share on other sites

Hola de nuevo Ventura,

 

Perfecto! Ahora me aparece esto para los productos físicos que tienen gastos de envío:

 

 

Carriers list

Transportista Courier : Delivery next day!

 

Para los que tienen envío Gratis, no sale nada. Esto es correcto, verdad?

En relación a esto, ahora como edito el texto de "Carriers List" y lo de "Delivery next day!) para indicar los plazos de entrega de cada producto?

Link to comment
Share on other sites

Te deben aparecer todos los transportistas que tenga seleccionado el producto, gratuito o no. El texto que aparece es el que tiene asociado el transportista desde

TRANSPORTE  / TRANSPORTISTA
Tiempo de transito --->Delivery next day!

Y el de Carriers list

LOCALIZACIÓN  / TRADUCCIONES --> Traducciones del Front office

Elige la plantilla y el idioma a editar
+ Expande todos los campos

Y buscas el texto 

Control+F  para sacar el buscador del navegador

Está en product

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

Ya veo. Los que tengo como productos gratuitos, no están asociados a ningún transportista y no aparece nada. Ya me va bien, porque son servicios con tiempos muy variables de entrega, dependiendo de carga de trabajo y demás.

 

 

Por el tema del deliver Next day, ya estaba bien traducido y también he buscado en las traducciones de front office, pero está todo bien. Algo hay, que no deja que actualice bien, a pesar que en el back office aparece todo correctamente traducido...

 

En qué archivo podría modificarlo ni que sea manualmente?

Link to comment
Share on other sites

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