✏️ 正在编辑: Planilha.php
路径:
/srv/systems_dir/yuppiecred-bkp/library/Core/RetencaoPortabilidade/Planilha.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Core_RetencaoPortabilidade_Planilha { protected $colunas = [ 'banco_origem' => 'A', 'numero_contrato' => 'B', 'numero_ade' => 'C', 'cpf_cliente' => 'D', 'saldo' => 'E', 'data_maxima_retencao' => 'F', 'estimativa_troco1' => 'G', 'estimativa_troco2' => 'H', 'estimativa_oferta' => 'I', 'matricula' => 'J', 'codigo_convenio' => 'K', 'convenio' => 'L', 'parcela' => 'M', 'qtd_parcelas' => 'N', 'taxa_atual' => 'O', 'taxa_concorrencia' => 'P', 'nome_cliente' => 'Q', 'qtd_parcelas_restantes'=> 'R', 'cidade' => 'S', 'banco' => 'T', 'uf' => 'U', 'idade' => 'V', 'data_nascimento' => 'W', 'codigo_loja' => 'X', 'digitador' => 'Y', 'nome_loja' => 'Z', 'ddd1' => 'AA', 'telefone1' => 'AB', 'ddd2' => 'AC', 'telefone2' => 'AD', 'ddd3' => 'AE', 'telefone3' => 'AF', 'ddd4' => 'AG', 'telefone4' => 'AH', 'ddd5' => 'AI', 'telefone5' => 'AJ', 'data_recebimento' => 'AK', ]; protected $naoImportadas = array(); protected function _addNaoImportadas($contrato, $motivo) { return array_push($this->naoImportadas, [ 'numero_contrato' => $contrato['numero_contrato'], 'numero_ade' => $contrato['numero_ade'], 'digitador' => $contrato['digitador'], 'cpf_cliente' => $contrato['cpf_cliente'], 'nome_cliente' => $contrato['nome_cliente'], 'banco' => $contrato['banco'], 'saldo' => $contrato['saldo'], 'motivo' => $motivo ]); } protected function _getColumns() { return [ 'banco_id' => NULL, 'numero_contrato' => NULL, 'numero_ade' => NULL, 'cpf_cliente' => NULL, 'saldo' => NULL, 'data_maxima_retencao' => NULL, 'estimativa_troco1' => NULL, 'estimativa_troco2' => NULL, 'estimativa_oferta' => NULL, 'matricula' => NULL, 'codigo_convenio' => NULL, 'convenio' => NULL, 'parcela' => NULL, 'qtd_parcelas' => NULL, 'taxa_atual' => NULL, 'taxa_concorrencia' => NULL, 'nome_cliente' => NULL, 'qtd_parcelas_abertas' => NULL, 'cidade' => NULL, 'banco' => NULL, 'uf' => NULL, 'idade' => NULL, 'data_nascimento' => NULL, 'codigo_loja' => NULL, 'digitador' => NULL, 'nome_loja' => NULL, 'corretor_id' => NULL, 'data_recebimento' => NULL ]; } protected function _getNaoImportadas() { return $this->naoImportadas; } public function getColuna($coluna) { return isset($this->colunas[$coluna]) ? trim($this->colunas[$coluna]) : null; } protected function _getDadosColuna(array $sheetData, $coluna) { return isset($sheetData[$this->getColuna($coluna)]) ? $sheetData[$this->getColuna($coluna)] : null; } public function importar(array $sheetData) { $indice = 0; for ($i = 2; $i <= count($sheetData); $i++) { $dados = $this->_getColumns(); $this->_getNumeroContratoAde($sheetData[$i], $dados); $this->_getDataMaximaRetencao($sheetData[$i], $dados); $this->_getDataRecebimento($sheetData[$i], $dados); $this->_getCpfCliente($sheetData[$i], $dados); $this->_getNomeCliente($sheetData[$i], $dados); $this->_getBanco($sheetData[$i], $dados); $this->_getSaldo($sheetData[$i], $dados); $this->_getEstimativaTroco1($sheetData[$i], $dados); $this->_getEstimativaTroco2($sheetData[$i], $dados); $this->_getEstimativaOferta($sheetData[$i], $dados); $this->_getDigitador($sheetData[$i], $dados); $this->_getMatricula($sheetData[$i], $dados); $this->_getCodigoConvenio($sheetData[$i], $dados); $this->_getConvenio($sheetData[$i], $dados); $this->_getParcela($sheetData[$i], $dados); $this->_getTaxas($sheetData[$i], $dados); $this->_getCidadeUf($sheetData[$i], $dados); $this->_getDataNascimento($sheetData[$i], $dados); $this->_getIdade($sheetData[$i], $dados); $this->_getLoja($sheetData[$i], $dados); $this->_getCorretorId($sheetData[$i], $dados); $this->_getBancoId($sheetData[$i], $dados); try { $result = $this->salvarLinha($dados); if ($result > 0) { $indice++; } } catch (Exception $e) { $this->_addNaoImportadas($dados, $e->getMessage()); } } $retorno = new stdClass(); $retorno->importadas = $indice; $retorno->naoImportadas = $this->_getNaoImportadas(); return $retorno; } protected function salvarLinha(&$dados) { $dbtable = new Model_DbTable_RetencaoPortabilidade(); if(!empty($dados['numero_ade'])){ $contrato = $dbtable->fetchRow("numero_ade = {$dados['numero_ade']}"); if($contrato){ $this->_addNaoImportadas( $dados, "O contrato já existe na esteira de retenção."); return; } }elseif(!empty($dados['numero_contrato'])) { $contrato = $dbtable->fetchRow("numero_contrato = {$dados['numero_contrato']}"); if ($contrato) { $this->_addNaoImportadas($dados, "O contrato já existe na esteira de retenção."); return; } } if(empty($dados['banco_id'])){ $this->_addNaoImportadas( $dados, "A coluna 'Banco' deve estar preenchida."); }else{ $result = $dbtable->insert($dados); if( $result <= 0 ){ $this->_addNaoImportadas( $dados, 'Contrato não inserido.'); } else { return $result; } } } protected function _getCpfCliente(array $sheetData, array &$dados) { $colCpfCliente = $this->_getDadosColuna($sheetData, 'cpf_cliente'); if ($colCpfCliente) { $colCpfCliente = String_Refatorar::formatarCpf($colCpfCliente); if (strlen($colCpfCliente) >= 11 && Validators_Cpf::validate($colCpfCliente)) { $dados['cpf_cliente'] = $colCpfCliente; } } } protected function _getNomeCliente(array $sheetData, array &$dados) { $colNomeCliente = $this->_getDadosColuna($sheetData, 'nome_cliente'); if ($colNomeCliente) { $dados['nome_cliente'] = $colNomeCliente; } } protected function _getBanco(array $sheetData, array &$dados) { $colBanco = $this->_getDadosColuna($sheetData, 'banco'); if ($colBanco) { $dados['banco'] = $colBanco; } } protected function _getDataMaximaRetencao(array $sheetData, array &$dados) { $colunaDtMax = isset($sheetData[$this->getColuna('data_maxima_retencao')]) ? trim($sheetData[$this->getColuna('data_maxima_retencao')]) : null; $dataMaximaRetencao = null; if ( !empty($colunaDtMax) ) { $dataMaximaRetencao = Core_Util::convertDate($colunaDtMax); if( is_array($dataMaximaRetencao) ){ throw new Core_Exception("Não foi possível converter a data de máxima de retenção para o banco de dados. ({$colunaDtMax})"); } } $dados['data_maxima_retencao'] = $dataMaximaRetencao; } protected function _getDataRecebimento(array $sheetData, array &$dados) { $colunaDtRecebimento = isset($sheetData[$this->getColuna('data_recebimento')]) ? trim($sheetData[$this->getColuna('data_recebimento')]) : null; $dataRecebimento = null; if ( !empty($colunaDtRecebimento) ) { $dataRecebimento = Core_Util::convertDate($colunaDtRecebimento); if( is_array($dataRecebimento) ){ throw new Core_Exception("Não foi possível converter a data de recebimento para o banco de dados. ({$colunaDtRecebimento})"); } } $dados['data_recebimento'] = $dataRecebimento; } protected function _getSaldo(array $sheetData, array &$dados) { $colSaldo = $this->_getDadosColuna($sheetData, 'saldo'); if ($colSaldo) { $dados['saldo'] = trim(String_Refatorar::parseStringToFloat($colSaldo)); } } protected function _getEstimativaTroco1(array $sheetData, array &$dados) { $col = $this->_getDadosColuna($sheetData, 'estimativa_troco1'); if ($col) { $dados['estimativa_troco1'] = trim(String_Refatorar::parseStringToFloat($col)); } } protected function _getEstimativaTroco2(array $sheetData, array &$dados) { $col = $this->_getDadosColuna($sheetData, 'estimativa_troco2'); if ($col) { $dados['estimativa_troco2'] = trim(String_Refatorar::parseStringToFloat($col)); } } protected function _getEstimativaOferta(array $sheetData, array &$dados) { $col = $this->_getDadosColuna($sheetData, 'estimativa_oferta');; if ($col) { $dados['estimativa_oferta'] = trim(String_Refatorar::parseStringToFloat($col)); } } protected function _getDigitador(array $sheetData, array &$dados) { $col = $this->_getDadosColuna($sheetData, 'digitador'); if( $col != null ){ $dados['digitador'] = $col; } } protected function _getMatricula(array $sheetData, array &$dados) { $col = $this->_getDadosColuna($sheetData, 'matricula'); if ($col) { $dados['matricula'] = $col; } } protected function _getConvenio(array $sheetData, array &$dados) { $col = $this->_getDadosColuna($sheetData, 'convenio'); if ($col) { $dados['convenio'] = $col; } } protected function _getCodigoConvenio(array $sheetData, array &$dados) { $col = $this->_getDadosColuna($sheetData, 'codigo_convenio'); if ($col) { $dados['codigo_convenio'] = $col; } } protected function _getParcela(array $sheetData, array &$dados) { $parcela = $this->_getDadosColuna($sheetData, 'parcela'); $qtdParcelas = $this->_getDadosColuna($sheetData, 'qtd_parcelas'); $qtdParcelasRestantes = $this->_getDadosColuna($sheetData, 'qtd_parcelas_abertas'); if ($parcela) { $dados['parcela'] = trim(String_Refatorar::parseStringToFloat($parcela)); $dados['qtd_parcelas'] = trim($qtdParcelas); $dados['qtd_parcelas_abertas'] = trim($qtdParcelasRestantes); } } protected function _getTaxas(array $sheetData, array &$dados) { $taxaAtual = $this->_getDadosColuna($sheetData, 'taxa_atual'); $taxaConcorrencia = $this->_getDadosColuna($sheetData, 'taxa_concorrencia'); if ($taxaAtual) { $dados['taxa_atual'] = trim($taxaAtual); $dados['taxa_concorrencia'] = trim($taxaConcorrencia); } } protected function _getCidadeUf(array $sheetData, array &$dados) { $cidade = $this->_getDadosColuna($sheetData, 'cidade'); $uf = $this->_getDadosColuna($sheetData, 'uf'); if ($cidade) { $dados['cidade'] = trim($cidade); $dados['uf'] = trim($uf); } } protected function _getDataNascimento(array $sheetData, array &$dados) { $col = $this->_getDadosColuna($sheetData, 'data_nascimento'); if ($col) { $dados['data_nascimento'] = Core_Util::convertDate($col);; } } protected function _getIdade(array $sheetData, array &$dados) { $col = $this->_getDadosColuna($sheetData, 'idade'); if ($col) { $dados['idade'] = $col; } } protected function _getLoja(array $sheetData, array &$dados) { $codLoja = $this->_getDadosColuna($sheetData, 'codigo_loja'); $nomeLoja = $this->_getDadosColuna($sheetData, 'nome_loja'); if ($codLoja) { $dados['codigo_loja'] = trim($codLoja); $dados['nome_loja'] = trim($nomeLoja); } } protected function _getNumeroContratoAde(array $sheetData, array &$dados) { $numeroAde = isset($sheetData[$this->getColuna('numero_ade')]) ? $sheetData[$this->getColuna('numero_ade')] : null; $numeroContrato = isset($sheetData[$this->getColuna('numero_contrato')]) ? $sheetData[$this->getColuna('numero_contrato')] : null; $dbtable = new Model_DbTable_RetencaoPortabilidade(); if ($numeroAde) { $contrato = $dbtable->fetchRow("numero_ade = {$numeroAde}"); if ($contrato) { $dados['corretor_id'] = $contrato->corretor_id; $dados['numero_ade'] = trim($numeroAde); $dados['numero_contrato'] = $contrato->numero_contrato; }else{ $dados['numero_ade'] = trim($numeroAde); $dados['numero_contrato'] = trim($numeroContrato); } } } protected function _getCorretorId(array $sheetData, array &$dados) { $colAde = $this->_getDadosColuna($sheetData, 'numero_ade'); $colContrato = $this->_getDadosColuna($sheetData, 'numero_contrato'); $dbContrato = new Model_DbTable_Contrato(); if (!empty($colAde)) { $contrato = $dbContrato->fetchRow(['numero_ade = ?' => $colAde]); if(!empty($contrato)){ $dados['corretor_id'] = $contrato->corretor_id; $dados['contrato_id'] = $contrato->id; $dados['numero_contrato'] = $contrato->numero_contrato; $dados['numero_ade'] = !empty($contrato->numero_ade) ? $contrato->numero_ade : null; } }else{ $contrato = $dbContrato->fetchRow(['numero_contrato = ?' => $colContrato]); if(!empty($contrato)){ $dados['corretor_id'] = $contrato->corretor_id; $dados['contrato_id'] = $contrato->id; $dados['numero_contrato'] = $contrato->numero_contrato; $dados['numero_ade'] = !empty($contrato->numero_ade) ? $contrato->numero_ade : null; } } } protected function _getBancoId(array $sheetData, array &$dados) { $colBanco = $this->_getDadosColuna($sheetData, 'banco_origem'); $bancoId = (Model_Banco::bancoPorNome($colBanco)); if($bancoId){ $dados['banco_id'] = $bancoId; } } }
💾 保存文件
← 返回文件管理器