Magento – Erro no campo data de aniversário no cadastro de cliente

Mais uma dica preciosa pra quem trabalha com Magento.

Problema

Instalei uma loja Magento 1.5 e no cadastro de novos clientes estava dando erro no campo data de aniversário. Todas as datas até o mês 07 funcionam perfeitamente, do mês 08 em diante é mostrada a mensagem “Please enter a valid full date” (Por favor, informe uma data válida).

Metodologia

Pesquisei em praticamente todos os fóruns, listas de discussão e não encontrei quase nada sobre esse problema. Após revirar o código das classes Customer* no php identifiquei que o problema estava na validação do campo pelo javascript.

Voi lá! Fui até o arquivo js/varien/js.js e procurei pela classe DateElement para analisar a função validate, e realmente o erro estava lá.

 var error = false, day = parseInt(this.day.value) || 0, month = parseInt(this.month.value) || 0, year = parseInt(this.year.value) || 0;

Nesse trecho de código é feito um parseInt nos valores dos campos, porém essa função tem um bug. Toda string começada por ‘0’ é tratada como um número octal(base 8), e como o número ’08’ não existe na base-8 então o parseInt retorna ‘0’;

parseInt('8');      // => 8 
parseInt('08');     // => 0 
parseInt('08', 10); // => 8 

A solução para o problema então é simplesmente inserir o parâmetro 10 nas chamadas ao parseInt, indicando que os números passados tem que ser tratados na base-10.

var error = false, day = parseInt(this.day.value, 10) || 0, month = parseInt(this.month.value, 10) || 0, year = parseInt(this.year.value, 10) || 0;

Espero que tenha ajudado e em breve novas dicas!

Abraços!!

Publicidade