✏️ 正在编辑: Cliente.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/library/Core/Banco/Planilha/Bonsucesso/Cliente.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Core_Banco_Planilha_Bonsucesso_Cliente { protected $_inicioLaco = 2; protected $_dateFormat = 'dd/MM/yyyy'; protected $colunas = array( //cliente 'nome_cliente' => 'H', 'cpf_cliente' => 'A', 'data_nascimento' => 'I', 'rg' => 'E', 'orgao_expedidor' => 'F', 'data_expedicao' => 'G', 'endereco' => 'N', 'numero' => 'O', 'complemento' => 'P', 'bairro' => 'Q', 'cidade' => 'R', 'uf' => 'T', 'cep' => 'S', 'fone' => 'V', 'celular' => 'W', 'email' => 'X', 'sexo' => '', 'estado_civil' => 'J', 'nome_pai' => 'K', 'nome_mae' => 'L', 'conjuge' => '', ); protected $colunasOpcionais = array(); protected $naoImportados = array(); protected $contratosImportados = array(); private $_arquivoOrigem = NULL; protected $_extensoesAceitas = array( "csv" ); function getInicioLaco() { return $this->_inicioLaco; } function setInicioLaco($inicioLaco) { if( !is_null($inicioLaco) ){ $this->_inicioLaco = $inicioLaco; } } function getExtensoesAceitas() { return $this->_extensoesAceitas; } function setExtensoesAceitas(array $extensoesAceitas) { $this->_extensoesAceitas = $extensoesAceitas; } public function __construct($extensao = null) { $this->validarExtensao($extensao); } public function setArquivoOrigem($arquivoOrigem) { $this->_arquivoOrigem = $arquivoOrigem; return $this; } public function getArquivoOrigem() { return $this->_arquivoOrigem; } function getExtensao() { return $this->_extensao; } function setExtensao($extensao) { $this->_extensao = $extensao; } public function getColuna($coluna) { return isset($this->colunas[$coluna]) ? trim($this->colunas[$coluna]) : null; } public function getColunas() { return $this->colunas; } public function validarExtensao($extensao) { if( $extensao ){ if( !in_array($extensao, $this->_extensoesAceitas) ){ throw new Core_Exception("Formato do arquivo inválido para importação. Extensões permitidas para esta importação: " . implode(', ', $this->_extensoesAceitas)); } } } public function validarColunas(array $sheetData) { $colunas = array_flip($this->getColunas()); $colunas = array_diff($colunas, $this->colunasOpcionais); unset($colunas['']); $colunas = array_keys($colunas); $sheetDataColunas = array_keys(current($sheetData)); $colunasFaltando = array_diff($colunas, $sheetDataColunas); if( $colunasFaltando ){ asort($colunasFaltando); $msg = count($colunasFaltando) == 1 ? "A coluna '" . current($colunasFaltando) . "' não existe na planilha enviada. " : 'As seguintes colunas não existem na planilha enviada:<br />' . implode(', ', $colunasFaltando) . '. '; $msg .= '<br />Confira na planilha padrão deste banco o que está diferente.'; throw new Core_Exception($msg); } } public function excluirLinhasVazias(array $sheetData) { $cont = $this->_inicioLaco; $newSheetData = array(); if( $this->_inicioLaco > 0 ){ $cont = $this->_inicioLaco - 1; } foreach ( $sheetData as $l => $linha ) { if( !empty($linha[$this->getColuna('cpf_cliente')]) ){ $newSheetData[$cont++] = $linha; } } return $newSheetData; } protected function _getCpf(array $sheetData, array &$dados) { $dados['cpf'] = String_Refatorar::formatarCpf($sheetData[$this->getColuna('cpf_cliente')]); //acrescenta o zero quando cpf tem zero no inicio } protected function _getNome(array $sheetData, array &$dados) { $dados['nome'] = $sheetData[$this->getColuna('nome_cliente')]; } protected function _getRg(array $sheetData, array &$dados) { $dados['rg'] = $sheetData[$this->getColuna('rg')]; } protected function _getDataNascimento(array $sheetData, array &$dados) { $dataNascimento = null; if( $sheetData[$this->getColuna('data_nascimento')] ){ try { $data = new Zend_Date($sheetData[$this->getColuna('data_nascimento')], Zend_Date::DATES, 'pt'); $dataNascimento = $data->toString('yyyy-MM-dd'); } catch ( Zend_Date_Exception $e ) { echo $e->getMessage(); $dataNascimento = null; } } $dados['data_nascimento'] = $dataNascimento; } protected function _getNomePai(array $sheetData, array &$dados) { $dados['nome_pai'] = $sheetData[$this->getColuna('nome_pai')]; } protected function _getNomeMae(array $sheetData, array &$dados) { $dados['nome_mae'] = $sheetData[$this->getColuna('nome_mae')]; } protected function _getEndereco(array $sheetData, array &$dados) { $dados['endereco'] = $sheetData[$this->getColuna('endereco')]; if( $sheetData[$this->getColuna('numero')] ){ $dados['endereco'] .= ", " . $sheetData[$this->getColuna('numero')]; } } protected function _getComplemento(array $sheetData, array &$dados) { $dados['complemento'] = $sheetData[$this->getColuna('complemento')]; } protected function _getBairro(array $sheetData, array &$dados) { $dados['bairro'] = $sheetData[$this->getColuna('bairro')]; } protected function _getCidade(array $sheetData, array &$dados) { $dados['cidade'] = $sheetData[$this->getColuna('cidade')]; } protected function _getUf(array $sheetData, array &$dados) { $dados['uf'] = $sheetData[$this->getColuna('uf')]; } protected function _getCep(array $sheetData, array &$dados) { $dados['cep'] = $sheetData[$this->getColuna('cep')]; } protected function _getFone(array $sheetData, array &$dados) { $filter = new Zend_Filter_Digits(); $fone = $filter->filter($sheetData[$this->getColuna('fone')]); if( !empty($fone) ){ $dados['fone'] = $sheetData[$this->getColuna('fone')]; } } protected function _getCelular(array $sheetData, array &$dados) { $filter = new Zend_Filter_Digits(); $celular = $filter->filter($sheetData[$this->getColuna('celular')]); if( !empty($celular) ){ $dados['celular'] = $sheetData[$this->getColuna('celular')]; } } protected function _getEstadoCivil(array $sheetData, array &$dados) { $dados['estado_civil'] = $sheetData[$this->getColuna('estado_civil')]; } protected function _getEmail(array $sheetData, array &$dados) { $dados['email'] = $sheetData[$this->getColuna('email')]; } public function importar(array $sheetData) { $this->validarColunas($sheetData); $sheetData = $this->excluirLinhasVazias($sheetData); end($sheetData); $lastKey = key($sheetData); reset($sheetData); //laço começa em 2 pois a planilha possui um cabeçalho if( count($sheetData) > 0 ){ for ( $i = $this->getInicioLaco(); $i <= $lastKey; $i++ ) { $dados = array( 'nome' => null, 'cpf' => null, 'data_nascimento' => null, 'rg' => null, 'orgao_expedidor' => null, 'data_expedicao' => null, 'endereco' => null, 'complemento' => null, 'bairro' => null, 'cidade' => null, 'uf' => null, 'cep' => null, 'fone' => null, 'celular' => null, 'email' => null, 'sexo' => null, 'estado_civil' => null, 'nome_pai' => null, 'nome_mae' => null, 'conjuge' => null, ); try { $this->_getEmpresaId($sheetData[$i], $dados); $this->_getBairro($sheetData[$i], $dados); $this->_getCelular($sheetData[$i], $dados); $this->_getCep($sheetData[$i], $dados); $this->_getCidade($sheetData[$i], $dados); $this->_getComplemento($sheetData[$i], $dados); $this->_getCpf($sheetData[$i], $dados); $this->_getDataNascimento($sheetData[$i], $dados); $this->_getEndereco($sheetData[$i], $dados); $this->_getEstadoCivil($sheetData[$i], $dados); $this->_getFone($sheetData[$i], $dados); $this->_getEmail($sheetData[$i], $dados); $this->_getNome($sheetData[$i], $dados); $this->_getNomeMae($sheetData[$i], $dados); $this->_getRg($sheetData[$i], $dados); $this->_getUf($sheetData[$i], $dados); $this->contratosImportados[] = $dados['cpf']; $this->salvarLinha($sheetData[$i], $dados); } catch ( Exception $e ) { $this->_addNaoImportado( $dados, $sheetData[$i], $this->naoImportados, $e->getMessage() ); } } } return $this->naoImportados; } protected function salvarLinha($sheetData, &$dados) { /* Apenas para LOG */ $urlSistema = Yuppie_Auth::getSiteKey(); $writer = new Zend_Log_Writer_Stream("/var/log/sistemayuppie/zf_log_planilha_{$urlSistema}_" . Zend_Date::now()->get("ddMMyyyy") . ".txt"); $classeChamada = get_class($this); $log = new Zend_Log($writer); $log->log('#######################', Zend_Log::INFO); $log->log("IMPORTAÇÃO: " . $classeChamada, Zend_Log::INFO); $log->log("Usuário logado: " . Yuppie_Auth::getIdentity()->login, Zend_Log::INFO); $result = 0; $newCliente = new Model_DbTable_Cliente(); //verifica se o CPF existe $dadosCliente = isset($dados['cpf']) && $dados['cpf'] ? $newCliente->fetchRow("cpf = '" . $dados['cpf'] . "'") : null; if( $dadosCliente == null ){ try { $log->log("Tentativa de inserção do cliente: {$dadosCliente['cpf']}", Zend_Log::INFO); foreach ( $dados as $key => $value ) { $log->log("[{$key}] => {$value}", Zend_Log::INFO); } $result = $newCliente->insert($dados); if( $result > 0 ){ $log->log("Cliente adicionado.", Zend_Log::INFO); } else { $log->log("Cliente NAO foi foi adicionado.", Zend_Log::INFO); } if( $result <= 0 ){ $this->_addNaoImportado( $dados, $sheetData, $this->naoImportados, 'Cliente não inserido.' ); } } catch ( Exception $e ) { $log->log("[Exception] Erro ao adicionar cliente. " . $e->getMessage(), Zend_Log::INFO); $this->_addNaoImportado( $dados, $sheetData, $this->naoImportados, $e->getMessage() ); } } else { $dados['id'] = $dadosCliente['id']; $dados = $this->_getCamposAtualizacao($dados); try { $log->log("Tentativa de atualizaçao do cliente: {$dadosCliente['cpf']}.", Zend_Log::INFO); foreach ( $dados as $key => $value ) { $log->log("[{$key}] => {$value}", Zend_Log::INFO); } $result = $newCliente->update($dados, "id = {$dadosCliente['id']}"); if( $result > 0 ){ $log->log("Cliente atualizado.", Zend_Log::INFO); } else { $log->log("Cliente NAO foi foi atualizado.", Zend_Log::INFO); } } catch ( Exception $e ) { $log->log("[Exception] Erro ao atualizar cliente. " . $e->getMessage(), Zend_Log::INFO); $this->_addNaoImportado( $dados, $sheetData, $this->naoImportados, $e->getMessage() ); } } } public function _getEmpresaId($sheetData, &$dados) { $dados['empresa_id'] = Yuppie_Auth::getIdentity()->empresa_id; } protected function _addNaoImportado(array $dados, array $sheetData, array &$naoImportados, $motivo = '') { array_push($naoImportados, array( 'cpf' => isset($sheetData[$this->getColuna('cpf_cliente')]) ? $sheetData[$this->getColuna('cpf_cliente')] : null, 'cliente' => isset($sheetData[$this->getColuna('nome_cliente')]) ? $sheetData[$this->getColuna('nome_cliente')] : null, 'motivo' => $motivo )); } protected function _getCamposAtualizacao(array &$dados) { $dadosAtualizacao = $dados; unset($dadosAtualizacao['cpf']); return $dadosAtualizacao; } }
💾 保存文件
← 返回文件管理器