Aqui também aconteceu isso seguindo a dica do Newerton. Resolvi adicionando o dado "salt" também na parte que trada da administração próximo da linha 952. Ficou assim:
Código: Selecionar todos <!-- Inicio: Admin/Model/Sale/Customer -->
<file name="admin/model/sale/customer.php">
<operation>
<search position="replace" index="1"><![CDATA[$this->db->query("INSERT INTO " . DB_PREFIX . "customer SET firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['lastname']) . "', email = '" . $this->db->escape($data['email']) . "', telephone = '" . $this->db->escape($data['telephone']) . "', fax = '" . $this->db->escape($data['fax']) . "', newsletter = '" . (int)$data['newsletter'] . "', customer_group_id = '" . (int)$data['customer_group_id'] . "', salt = '" . $this->db->escape($salt = substr(md5(uniqid(rand(), true)), 0, 9)) . "', password = '" . $this->db->escape(sha1($salt . sha1($salt . sha1($data['password'])))) . "', status = '" . (int)$data['status'] . "', date_added = NOW()");]]></search>
<add><![CDATA[
if ($this->config->get('fields_register_brazil_status')){
if ($data['data_nascimento'] == ""){
$dataparts[0] = "00";
$dataparts[1] = "00";
$dataparts[2] = "0000";
}else{
$dataparts = explode("/",$data['data_nascimento']);
}
$data['firstname'] = ucwords(strtr(strtolower($data['firstname']),"ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÜÚÞß","àáâãäåæçèéêëìíîïðñòóôõö÷øùüúþÿ"));
$data['lastname'] = ucwords(strtr(strtolower($data['lastname']),"ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÜÚÞß","àáâãäåæçèéêëìíîïðñòóôõö÷øùüúþÿ"));
$data['email'] = strtr(strtolower($data['email']),"ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÜÚÞß","àáâãäåæçèéêëìíîïðñòóôõö÷øùüúþÿ");
$data['telephone'] = preg_replace('/([^0-9])/i','',$data['telephone']);
$data['fax'] = preg_replace('/([^0-9])/i','',$data['fax']);
$data['cpf'] = preg_replace('/([^0-9])/i','',$data['cpf']);
$data['rg'] = preg_replace('/([^0-9])/i','',$data['rg']);
$data['cnpj'] = preg_replace('/([^0-9])/i','',$data['cnpj']);
$data['inscricao_estadual'] = preg_replace('/([^a-z0-9])/i','',$data['inscricao_estadual']);
$this->db->query("INSERT INTO " . DB_PREFIX . "customer SET firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['lastname']) . "', email = '" . $this->db->escape($data['email']) . "', telephone = '" . $this->db->escape($data['telephone']) . "',cpf = '" . $this->db->escape($data['cpf']) . "',rg = '" . $this->db->escape($data['rg']) . "',cnpj = '" . $this->db->escape($data['cnpj']) . "',razao_social = '" . $this->db->escape($data['razao_social']) . "',inscricao_estadual = '" . $this->db->escape($data['inscricao_estadual']) . "',data_nascimento = '" . $this->db->escape($dataparts[2]."-".$dataparts[1]."-".$dataparts[0]) . "',sexo = '" . $this->db->escape($data['sexo']) . "', fax = '" . $this->db->escape($data['fax']) . "', newsletter = '" . (int)$data['newsletter'] . "', customer_group_id = '" . (int)$data['customer_group_id'] . "', salt = '" . $this->db->escape($salt = substr(md5(uniqid(rand(), true)), 0, 9)) . "', password = '" . $this->db->escape(sha1($salt . sha1($salt . sha1($data['password'])))) . "', status = '" . (int)$data['status'] . "', date_added = NOW()");
}else{
$this->db->query("INSERT INTO " . DB_PREFIX . "customer SET firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['lastname']) . "', email = '" . $this->db->escape($data['email']) . "', telephone = '" . $this->db->escape($data['telephone']) . "', fax = '" . $this->db->escape($data['fax']) . "', newsletter = '" . (int)$data['newsletter'] . "', customer_group_id = '" . (int)$data['customer_group_id'] . "', salt = '" . $this->db->escape($salt = substr(md5(uniqid(rand(), true)), 0, 9)) . "', password = '" . $this->db->escape(sha1($salt . sha1($salt . sha1($data['password'])))) . "', status = '" . (int)$data['status'] . "', date_added = NOW()");
}
]]></add>
</operation>
Com essas duas alterações o código ficou perfeitamente funcional no OC 1.5.4.1 que estou usando em
.