NBlack Posted January 26, 2014 Share Posted January 26, 2014 (edited) Buenas tardes chicos, Me he encontrado con el siguiente caso: - Tengo productos que representan una reparación (Ida y vuelta), por lo que he creado un transportista que se llama IDA Y VUELTA y he asociado el transportista al producto. - Tengo productos físicos que se venden y tienen 2 transportistas pero no IDA Y VUELTA. Cuando inserto un producto de cada al carro me aparece en al ir a cerrar el pedido ESTO: http://prntscr.com/2mqmi5 Cuando lo que quiero es que si se envía algo a reparar, los portes sean gratis y a la vuelta se envía con el aparato el producto. Tengo el módulo Ship to pay pero he comprobado que no afecta. La única opción viable que veo es poner el módulo IDA Y VUELTA a todos los productos pero eso es un error... ¿A alguien se le ocurre algo? ¡Gracias! Edited January 26, 2014 by NBlack (see edit history) Link to comment Share on other sites More sharing options...
NBlack Posted January 26, 2014 Author Share Posted January 26, 2014 Yo mismo me respondo. Habilito los 3 tipos de pago siempre. Se trata de hacer un foreach que compruebe si el principio de la referencia de todos los productos es REP o INS (truncate de 3) y si existe muestra este transportista, en caso contrario no. En cuanto lo haya tipeado lo pongo aquí. Link to comment Share on other sites More sharing options...
NBlack Posted January 26, 2014 Author Share Posted January 26, 2014 (edited) ¡Solucionado!. Como todos los servicios que tengo empiezan por PRE, INS o REP solo he tenido que extraer la lista de artículos en la cesta y si existe alguno con esa referencia generar una variable temporal con un 1. Después si existe esa variable el transporte con nombre X tiene el circulo inhabilitado (podría borrar toda la tabla pero me llevará más tiempo porque está en varios foreach). En el archivo order-carrier.tpl quedaría así: {* AQUI EMPIEZA LA EXTRACCION DE LOS TIPOS DE ENVIO *} <div class="delivery_options"> {assign var="esReparacion" value="0"} {foreach $option_list as $key => $option} {foreach $option.carrier_list as $carrier} {foreach $carrier.product_list as $product} {* SI EXISTE EN LOS 3 PRIMEROS CARACTERES DE LA REFERENCIA REP PRE O INS CAMBIA LA VARIABLE *} {if {$product.reference|truncate:3:""} == "REP" || {$product.reference|truncate:3:""} =="INS" || {$product.reference|truncate:3:""} =="PRE"} {* ESTE ES EL NACIMIENTO TEMPORAL DE LA VARIABLE ESREPARACION *} {assign var="esReparacion" value="1"} {* CON UN SOLO ARTICULO QUE SEA DE ESE TIPO NOS BASTA, NOS SALIMOS *} {break} {/if} {/foreach} {if {$carrier.instance->name} == "Reparacion / modificación de equipo" && {$esReparacion} !="1"} <div class="delivery_option {if ($option@index % 2)}alternate_{/if}item"> <label for="delivery_option_{$id_address}_{$option@index}"> <table class="resume"> <tr> <td> <input type="radio" disabled="disabled" name="delivery_option[{$id_address}]"/> </td> {else} <div class="delivery_option {if ($option@index % 2)}alternate_{/if}item"> <label for="delivery_option_{$id_address}_{$option@index}"> <table class="resume"> <tr> <td> <input class="delivery_option_radio" type="radio" name="delivery_option[{$id_address}]" onchange="{if $opc}updateCarrierSelectionAndGift();{else}updateExtraCarrier('{$key}', {$id_address});{/if}" id="delivery_option_{$id_address}_{$option@index}" value="{$key}" {if isset($delivery_option[$id_address]) && $delivery_option[$id_address] == $key}checked="checked"{/if} /> </td> {/if} {/foreach} Edited January 26, 2014 by NBlack (see edit history) Link to comment Share on other sites More sharing options...
nadie Posted January 26, 2014 Share Posted January 26, 2014 Como veo que el autor del tema, tiene agregada la palabra "Solucionado" en el titulo del tema, procedo a cerrar el tema.Gracias a todos por colaborar con la Comunidad de Prestashop. Link to comment Share on other sites More sharing options...
Recommended Posts