PrestashopTrackglobe Posted December 26, 2011 Share Posted December 26, 2011 Hola a todos: Despues de mucho tiempo en modo real con la tienda me he dado cuenta de que hay un error algo "grave", y es que si algun cliente se registra desde aqui: http://www.eluniversodelperro.com/autenticacion al introducir todos los datos (DNI incluido) se puede ver que nos devuelve este error: Fatal error (Address -> dni is empty) No obstante, aunque aparece este error el cliente se registra perfectamente. No se cual puede ser el problema, cache lo tengo activado. ¿Alguna idea? Muchas gracias. Link to comment Share on other sites More sharing options...
buddychrist Posted January 11, 2012 Share Posted January 11, 2012 Hola Victor. A mi también me pasaba lo mismo con la versión 1.3.2.3. Al final conseguí poner el dni obligatorio y solucionar problemas de funcionamiento de la tienda realizando las siguientes modificaciones: Dentro del tema que estés usando authentication.tpl Al comienzo asegúrate de que aparece lo siguiente: valueDni = {if isset($smarty.post.dni) && $smarty.post.dni}{$smarty.post.dni}{else}false{/if}; Al final del fichero asegúrate de incluir lo siguiente: <fieldset class="account_creation dni"> <h3>{l s='Tax identification'}</h3> <p class="required text"> <label for="dni">{l s='Identication number'}</label> <input type="text" class="text" name="dni" id="dni" value="{if isset($smarty.post.dni)}{$smarty.post.dni}{/if}" /> <sup>*</sup> <span class="form_info">{l s='DNI / NIF / NIE'}</span> </p> </fieldset> adress.tpl Incluye el siguiente código dentro del fieldset en la posición que quieras: <p class="required text"> <label for="dni">{l s='Identication number'}</label> <input type="text" class="text" name="dni" id="dni" value="{if isset($smarty.post.dni)}{$smarty.post.dni}{else}{$address->dni|escape:'htmlall':'UTF-8'}{/if}" /> <sup>*</sup> <span class="form_info">{l s='DNI / NIF / NIE'}</span> </p> addresses.tpl (opcional) Si quieres mostrar el DNI/CIF en la lista de direcciones del cliente, incluye esta línea a continuación de por ejemplo <li class="address_name">{$address.firstname} {$address.lastname}</li>: <li class="address_name">{$address.firstname} {$address.lastname}</li> {if $address.dni}<li class="address_name">{$address.dni}</li>{/if} Dentro del directorio "classes" Address.php Tras la línea 60 incluir: /** @var string DNI */ public $dni; A partir de la línea 83 sustituye las variables $fieldsRequired, $fieldsSize y $fieldsValidate por las siguientes: protected $fieldsRequired = array('id_country', 'alias', 'lastname', 'firstname', 'address1', 'postcode', 'city','dni'); protected $fieldsSize = array('alias' => 32, 'company' => 32, 'lastname' => 32, 'firstname' => 32, 'address1' => 128, 'address2' => 128, 'postcode' => 12, 'city' => 64, 'other' => 300, 'phone' => 16, 'phone_mobile' => 16, 'dni' => 16); protected $fieldsValidate = array('id_customer' => 'isNullOrUnsignedId', 'id_manufacturer' => 'isNullOrUnsignedId', 'id_supplier' => 'isNullOrUnsignedId', 'id_country' => 'isUnsignedId', 'id_state' => 'isNullOrUnsignedId', 'alias' => 'isGenericName', 'company' => 'isGenericName', 'lastname' => 'isName', 'firstname' => 'isName', 'address1' => 'isAddress', 'address2' => 'isAddress', 'postcode' => 'isPostCode', 'city' => 'isCityName', 'other' => 'isMessage', 'phone' => 'isPhoneNumber', 'phone_mobile' => 'isPhoneNumber', 'dni' => 'isDni', 'deleted' => 'isBool'); Tras la línea 151 incluye el siguiente código: $fields['dni'] = pSQL($this->dni); Customer.php Asegúrate de que está declarada la variable: /** @var string dni */ public $dni; Cambia esta línea protected $fieldsRequired = array('lastname', 'passwd', 'firstname', 'email'); por esta otra protected $fieldsRequired = array('lastname', 'passwd', 'firstname', 'email', 'dni'); En la base de datos tabla ps_address Añade un nuevo campo llamado dni tipo varchar(16) que permita valores nulos y cuyo valor predeterminado sea NULL. A continuación ejecuta la siguiente consulta: UPDATE ps_address SET dni='-' WHERE dni IS NULL; Listo. Con esto tendrás el CIF/DNI obligatorio y los clientes podrán darse de alta especificando una o varias direcciones y realizar pedidos sin ningún problema. Suerte ;-) Link to comment Share on other sites More sharing options...
ClanMayo Posted January 15, 2012 Share Posted January 15, 2012 Hola, a mi me pasaba lo mismo, me ha funcionado desinstalando el módulo, luego volviendo a instalarlo y activarlo. Link to comment Share on other sites More sharing options...
vte46 Posted June 13, 2012 Share Posted June 13, 2012 A mi me funcionó sacando dni en Clientes/Direcciones/Definir campos obligatorios para esta sección. A falta que falle otra cosa... Salut! Link to comment Share on other sites More sharing options...
Recommended Posts