Open gubacelar opened 9 years ago
Não sei se é a melhor solução, mas fiz um reescrevi o controller e sobrescrevi o método. Não é muito elegante mas esta funcionando. Alguma solução?
public function check_taxvatAction()
{
$taxvat = $this->getRequest()->getParam('taxvat');
$is_edit = false;
if (Mage::getSingleton('customer/session')->isLoggedIn()) {
$referer = array_values(array_filter(explode('/', parse_url($_SERVER['HTTP_REFERER'], PHP_URL_PATH))));
$is_edit = $referer[0] == 'customer' && $referer[1] == 'account' && $referer[2] == 'edit';
}
$data['result'] = 'clean';
if ($taxvat) {
$storeId = Mage::app()->getStore()->getId();
$cli = Mage::getResourceModel('customer/customer_collection')
->addAttributeToFilter('taxvat', array('eq' => $taxvat))
->addAttributeToFilter('store_id', $storeId);
//Se a página de onde a requisição veio for a customer/account/edit remove o usuario logado
// da pesquisa de cpf
if($is_edit) {
$customer_id = Mage::getSingleton('customer/session')->getCustomer()->getId();
$cli = $cli->addAttributeToFilter('entity_id', array('neq' => $customer_id));
}
$cli = $cli ->setPageSize(1)
->count();
if ($cli) {
$data['result'] = 'exists';
} else {
$taxvat = preg_replace("/[^0-9]/", "", $taxvat);
$cli = Mage::getResourceModel('customer/customer_collection')
->addAttributeToFilter('taxvat', array('eq' => $taxvat))
->addAttributeToFilter('store_id', $storeId)
->getSize();
if ($cli) {
$data['result'] = 'exists';
}
}
}
$this->getResponse()->setBody(Zend_Json::encode($data));
}
ola @gubacelar voce pode tirar no próprio arquivo a inclusão da classe de validação. https://github.com/deivisonarthur/OSC-Magento-Brasil-6-Pro/blob/master/app/design/frontend/base/default/template/onestepcheckout/customer/form/edit.phtml#L166
remove $('taxvat').addClassName('validate-taxvat'); acredito que resolva seu problema.
ps. não costumo deixar o email e cpf ser alterado ate por questão de segurança.
Ola @isaaclopes, obrigado pela resposta. Mas removendo essa validação o usuário ainda vai poder colocar um CPF igual a de outra pessoa ja cadastrada na hora da edição.
Acredito que a melhor forma seria não deixar o CPF editável mesmo. Vou propor para o pessoal aqui.
Muito obrigado.
Olá, estou com um problema. Ao tentar editar os dados de um usuário em
customer/account/edit/
, ele alerta que o CPF informado ja existe.frontend/base/default/onesetpcheckout/js/validation.js
Ele faz uma requisição para
/onestepcheckout/ajax/check_taxvat/
onde é feita uma pesquisa se o CPF já existe. Caso exista ele vai falar dar um erro informando que o CPF já existe, porém ele não verifica se o CPF existente é o do usuário logado que quer editar seus outros dados. Sendo assim se torna impossível editar os dados do usuário pois o CPF cadastrado já existe (o dele).controllers/AjaxController.php