✏️ 正在编辑: PlanilhaCallcenter.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/library/Core/Callcenter/PlanilhaCallcenter.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Core_Callcenter_PlanilhaCallcenter { //atributos protected $_campanhaId; protected $_params; protected $_inicioLaco = 1; protected $_dateFormat = 'MM-dd-yy'; protected $colunasOpcionais = []; protected $colunas = [ 'nome' => 'A', 'matricula' => 'B', //Numero Beneficio 'cpf' => 'C', 'data_nascimento' => 'D', 'logradouro' => 'E', 'numero' => 'F', 'complemento' => 'G', 'bairro' => 'H', 'cidade' => 'I', 'uf' => 'J', 'cep' => 'K', 'email1' => 'L', 'email2' => 'M', 'email3' => 'N', 'ddd1' => 'O', 'telefone1' => 'P', 'ddd2' => 'Q', 'telefone2' => 'R', 'ddd3' => 'S', 'telefone3' => 'T', 'ddd4' => 'U', 'telefone4' => 'V', 'ddd5' => 'W', 'telefone5' => 'X', 'ddd6' => 'Y', 'telefone6' => 'Z', 'ddd7' => 'AA', 'telefone7' => 'AB', 'ddd8' => 'AC', 'telefone8' => 'AD', 'ddd9' => 'AE', 'telefone9' => 'AF', 'ddd10' => 'AG', 'telefone10' => 'AH', 'banco_emprestimo' => 'AI', 'qtde_parcela' => 'AJ', 'valor_parcela' => 'AK', 'digito_cpf' => 'AL', 'margem_livre' => 'AM', 'margem_cartao' => 'AN', 'senha_contra_cheque' => 'AO', 'valor_atual_beneficio' => 'AP', //mr/renda/salario 'valor_beneficio' => 'AP', //mr/renda/salario 'banco_recebe_beneficio' => 'AQ', 'orgao' => 'AR', 'inicio_contrato' => 'AS', 'termino_contrato' => 'AT', 'numero_contrato' => 'AU', 'valor_emprestimo' => 'AV', 'especie' => 'AW', 'sigla_upg' => 'AX', 'cargo' => 'AY', 'parcelas_pagas' => 'AZ', 'taxa' => 'BA', 'data_quitacao' => 'BB', 'saldo' => 'BC', 'empregador' => 'BD', 'promotora' => 'BE', 'gerente' => 'BF', 'descricao_cbo' => 'BG', 'comentario' => 'BH', 'secretaria' => 'BI', 'razao_social' => 'BJ', 'nome_responsavel' => 'BK', 'cpf_responsavel' => 'BL', 'tipo_pessoa' => 'BM', 'margem_bens_duraveis' => 'BN', 'rg' => 'BO', 'nome_mae' => 'BP', 'nome_pai' => 'BQ', 'dib' => 'BR', ]; protected $_clientesExistentes = []; protected $_clientesInseridos = []; protected $_especiesConsignaveis; protected $naoImportados = []; protected $_date; protected $_validateCpf; protected $_dbCidades; protected $_dbCallcenterBase; protected $_dbCallcenterTelefones; protected $_dbCallcenterEnderecos; protected $_dbCallcenterBeneficios; protected $_dbCallcenterEmprestimos; protected $_dbCallcenterBlacklist; public function __construct($params) { $this->_params = $params; $this->_campanhaId = $params['campanha_id']; //coleta as espécies apenas uma vez $mTipos = new Model_DbTable_Tipos(); $sql = $mTipos->select() ->from(['tipos' => 'tb_tipos'], ['codigo', 'descricao']) ->where("tipo = 'ESPECIE_CONSIGNAVEL'"); $this->_especiesConsignaveis = $mTipos->getAdapter()->fetchCol($sql); $this->_date = new DateTime(); $this->_validateCpf = new Validators_CpfCnpj(); $this->_dbCidades = new Model_DbTable_Cidade(); $this->_dbCallcenterBase = new Model_DbTable_CallcenterBase(); $this->_dbCallcenterTelefones = new Model_DbTable_CallcenterTelefone(); $this->_dbCallcenterEnderecos = new Model_DbTable_CallcenterEndereco(); $this->_dbCallcenterBeneficios = new Model_DbTable_CallcenterBeneficio(); $this->_dbCallcenterEmprestimos = new Model_DbTable_CallcenterEmprestimoCliente(); $this->_dbCallcenterBlacklist = new Model_DbTable_BlacklistNaoPerturbe(); } public function getColuna($coluna) { return isset($this->colunas[$coluna]) ? trim($this->colunas[$coluna]) : null; } public function getColunas() { return $this->colunas; } 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 = []; if( $this->_inicioLaco > 0 ){ $cont = $this->_inicioLaco - 1; } foreach ( $sheetData as $l => $linha ) { if( !empty($linha[$this->getColuna('cpf')]) ){ $newSheetData[$cont++] = $linha; } } return $newSheetData; } protected function convertColToAlpha(array $sheetData) { return array_map(function($v) { $indice = "A"; foreach ( $v as $key => $col ) { $v[$indice] = $col; $indice++; unset($v[$key]); } return $v; }, $sheetData); } protected function extrairColuna($sheetData, $callback) { $dados = []; foreach ( $sheetData as $linha ) { $dados[] = $this->$callback($linha); } return $dados; } /** * * @param array $naoImportados * @param string $motivo * @return void */ protected function _addNaoImportado(array $sheetData, array &$naoImportados, $motivo = '') { array_push($naoImportados, [ 'cpf' => $sheetData[$this->getColuna('cpf')], 'motivo' => $motivo ]); } protected function _getNome(array $sheetData) { $nome = preg_replace("#\'|\"#", "", $sheetData[$this->getColuna('nome')]); return trim($nome); } protected function _getRazaoSocial(array $sheetData) { return isset($sheetData[$this->getColuna('razao_social')]) ? trim($sheetData[$this->getColuna('razao_social')]) : null; } protected function _getNomeResponsavel(array $sheetData) { return isset($sheetData[$this->getColuna('nome_responsavel')]) ? trim($sheetData[$this->getColuna('nome_responsavel')]) : null; } protected function _getCpfResponsavel(array $sheetData) { return !empty($sheetData[$this->getColuna('cpf_responsavel')]) ? String_Refatorar::formatarCpf($sheetData[$this->getColuna('cpf_responsavel')]) : null; } protected function _getTipoPessoa(array $sheetData) { $tipoPessoa = $sheetData[$this->getColuna('tipo_pessoa')]; if(stristr($tipoPessoa, "juridica")){ return "juridica"; } return "fisica"; } protected function _getCpf(array $linha) { $digitoCpf = $linha[$this->getColuna('digito_cpf')]; $cpf = String_Refatorar::soNumeros($linha[$this->getColuna('cpf')]); if(strlen($cpf) <= 11){ $cpfCnpj = String_Refatorar::formatarCpf($cpf, $digitoCpf); }else{ $cpfCnpj = String_Refatorar::formatarCnpj($cpf); } return $cpfCnpj; } protected function _getDataNascimento(array $linha) { $dtNascimento = $linha[$this->getColuna('data_nascimento')]; if( !empty($dtNascimento) ){ $nascimento = new DateTime($this->_inferirData($dtNascimento)); $dataAtual = new DateTime(); $dataAtual->setTime(0, 0, 0); if( $nascimento == false ){ throw new Exception("Formatação da data de nascimento inválida"); } if( $nascimento > $dataAtual ){ $nascimento->sub(new DateInterval('P100Y')); } $idadeCliente = (int) $dataAtual->diff($nascimento)->format('%y'); if( (!empty($this->_params['validar_idade_de']) && !empty($this->_params['validar_idade_a']) && ($idadeCliente < $this->_params['validar_idade_de'] || $idadeCliente > $this->_params['validar_idade_a']) ) ){ throw new Exception('Não passou na validação de idade.'); } return $nascimento->format('Y-m-d'); } } protected function _getEndereco(array $sheetData, array &$dados) { $dados['endereco'] = isset($sheetData[$this->getColuna('logradouro')]) ? trim($sheetData[$this->getColuna('logradouro')]) : null; $dados['numero'] = isset($sheetData[$this->getColuna('numero')]) ? trim($sheetData[$this->getColuna('numero')]) : null; $dados['complemento'] = isset($sheetData[$this->getColuna('complemento')]) ? trim($sheetData[$this->getColuna('complemento')]) : null; $dados['bairro'] = isset($sheetData[$this->getColuna('bairro')]) ? trim($sheetData[$this->getColuna('bairro')]) : null; $dados['cidade'] = isset($sheetData[$this->getColuna('cidade')]) ? trim($sheetData[$this->getColuna('cidade')]) : null; $dados['uf'] = isset($sheetData[$this->getColuna('uf')]) ? trim($sheetData[$this->getColuna('uf')]) : null; $dados['cep'] = isset($sheetData[$this->getColuna('cep')]) ? trim($sheetData[$this->getColuna('cep')]) : null; } protected function _getEmails(array $sheetData, array &$dados) { for ( $i = 1; $i <= 3; $i++ ) { $email = $sheetData[$this->getColuna("email{$i}")]; $field = "email{$i}"; if( $i == 1 ){ $field = "email"; } $dados[$field] = $email; } } protected function _getMatricula(array $linha) { return trim($linha[$this->getColuna('matricula')]); } protected function _getOrgao(array $sheetData) { return isset($sheetData[$this->getColuna('orgao')]) ? trim($sheetData[$this->getColuna('orgao')]) : null; } protected function _getOrgaoId(array $sheetData) { $orgaoModel = new Model_Orgao(); $orgao = isset($sheetData[$this->getColuna('orgao')]) ? trim($sheetData[$this->getColuna('orgao')]) : null; if(!empty($orgao)){ $orgaoId = $orgaoModel->getOrgaoIdByName(['descricao = ?' => $orgao]); if($orgaoId){ return $orgaoId->id; }else{ $orgaoModel->setDescricao($orgao); $result = $orgaoModel->salvar($orgaoModel); return $result; } } } protected function _getSecretaria(array $sheetData) { return isset($sheetData[$this->getColuna('secretaria')]) ? trim($sheetData[$this->getColuna('secretaria')]) : null; } protected function _getSecretariaId(array $sheetData) { $secretariaModel = new Model_Secretaria(); $secretaria = isset($sheetData[$this->getColuna('secretaria')]) ? trim($sheetData[$this->getColuna('secretaria')]) : null; if(!empty($secretaria)){ $params = [ 'descricao' => $secretaria, 'orgao_id' => $this->_getOrgaoId($sheetData) ]; $secretariaId = $secretariaModel->getSecretariaIdByName($params); if($secretariaId){ return $secretariaId['id']; }else{ $secretariaModel->setDescricao($secretaria); $secretariaModel->setOrgaoId($this->_getOrgaoId($sheetData)); $result = $secretariaModel->salvar($secretariaModel); return $result; } } } protected function _getSiglaUpg(array $sheetData) { return isset($sheetData[$this->getColuna('sigla_upg')]) ? trim($sheetData[$this->getColuna('sigla_upg')]) : null; } protected function _getCargo(array $sheetData) { return isset($sheetData[$this->getColuna('cargo')]) ? trim($sheetData[$this->getColuna('cargo')]) : null; } protected function _getComentario(array $sheetData) { return isset($sheetData[$this->getColuna('comentario')]) ? trim($sheetData[$this->getColuna('comentario')]) : null; } protected function _getRg(array $sheetData) { return trim($sheetData[$this->getColuna('rg')]); } protected function _getNomeMae(array $sheetData) { $nomeMae = preg_replace("#\'|\"#", "", $sheetData[$this->getColuna('nome_mae')]); return trim($nomeMae); } protected function _getNomePai(array $sheetData) { $nomePai = preg_replace("#\'|\"#", "", $sheetData[$this->getColuna('nome_pai')]); return trim($nomePai); } protected function _getDib($dib) { if (!empty($dib)) { $dataInclusao = new DateTime($this->_inferirData($dib)); return $dataInclusao->format('Y-m-d'); } } protected function _getResetarCarteirizacao(&$dados) { if( $this->_params['resetar_carterizacao'] ){ $dados['usuario_carteirizacao'] = NULL; } } protected function _getResetarAtendimento(&$dados) { if( isset($this->_params['substituir_existentes']) && $this->_params['substituir_existentes'] == 1 ){ $dados['data_ultimo_atendimento'] = NULL; $dados['usuario_ultimo_atendimento'] = NULL; $dados['agendado_para'] = NULL; $dados['hora_agendada'] = NULL; $dados['agenda_notificada'] = 0; $dados['status_atendimento'] = NULL; $dados['data_ultimo_reset'] = date('Y-m-d'); } } protected function _getCliente($cpf) { if( isset($this->_clientesExistentes[$cpf]) ){ return $this->_clientesExistentes[$cpf]; } if( isset($this->_clientesInseridos[$cpf]) ){ return $this->_clientesInseridos[$cpf]; } return null; } protected function _inferirData($data) { $data = str_replace(["\r\n", "\r", "\n"], '', $data); if(empty($data)){ return; } $formatacao = $this->_params['formato_data']; $result = Core_Util::convertDate($data, $formatacao); if( is_array($result)){ switch ( $formatacao ) { case 'auto': $mensagem = "Não foi possível identificar o formato da '$data'"; break; default: $mensagem = "Formato de data informado é inválido '$data'"; } throw new Core_Exception($mensagem); } return $result; } public function importar(array $sheetData) { if(empty($sheetData)){ throw new Core_Exception('Planilha está vazia ou é incompatível.'); } $sheetData = $this->convertColToAlpha($sheetData); $this->validarColunas($sheetData); $planilha = $this->excluirLinhasVazias($sheetData); if( !$planilha ){ throw new Core_Exception('Planilha está vazia ou é incompatível.'); } $inseridos = 0; $atualizados = 0; list( $clientesExistentes, $clientesNovos ) = $this->separarNovosExistentes($planilha); if( count($clientesNovos) ){ $inicio = date('Y-m-d H:i:s', time()); $inseridos = $this->_dbCallcenterBase->insertMultipleValues($clientesNovos); $this->_clientesInseridos = $this->_dbCallcenterBase ->fetchCols('cpf', ['id', 'status_atendimento'], "data_cadastro >= '$inicio'"); } if( count($clientesExistentes) ){ $atualizados = $this->_dbCallcenterBase->updateMultipleValues($clientesExistentes, 'cpf'); } list( $telefones, $enderecos, $cidades, $beneficios, $emprestimos ) = $this->coletarDados($planilha); $telefonesInseridos = 0; if( count($telefones) ){ $telefonesInseridos = $this->_dbCallcenterTelefones ->insertMultipleValues($telefones, ['cliente_id', 'fone', 'excluido']); } $enderecosInseridos = 0; if( count($enderecos) ){ $enderecosInseridos = $this->_dbCallcenterEnderecos ->insertMultipleValues($enderecos, ['cpf_cliente', 'endereco']); } $cidadesInseridas = 0; if( count($cidades) ){ $cidadesInseridas = $this->_dbCidades ->insertMultipleValues($cidades, ['uf', 'nome']); } $beneficiosInseridos = 0; if( count($beneficios) ){ $beneficiosInseridos = $this->_dbCallcenterBeneficios ->insertMultipleValues($beneficios, ['cpf_cliente', 'beneficio']); } $emprestimosInseridos = 0; if( count($emprestimos) ){ $cpfs = $this->extrairColuna($planilha, '_getCpf'); $matriculas = $this->extrairColuna($planilha, '_getMatricula'); $this->_dbCallcenterEmprestimos->limparConsultaEmprestimos($cpfs, $matriculas); $emprestimosInseridos = $this->_dbCallcenterEmprestimos ->insertMultipleValues($emprestimos); } return [ 'inseridos' => $inseridos, 'atualizados' => $atualizados, 'telefones_inseridos' => $telefonesInseridos, 'enderecos_inseridos' => $enderecosInseridos, 'cidades_inseridas' => $cidadesInseridas, 'emprestimos_inseridos' => $emprestimosInseridos, 'beneficios_inseridos' => $beneficiosInseridos, 'nao_importados' => $this->naoImportados, ]; } public function separarNovosExistentes($sheetData) { $cpfs = $this->extrairColuna($sheetData, '_getCpf'); //consulta os clientes que já existem na base de dados $dbCallcenterBase = new Model_DbTable_CallcenterBase(); $this->_clientesExistentes = $dbCallcenterBase->fetchCols('cpf', ['id', 'status_atendimento'], "cpf IN ('" . implode("','", $cpfs) . "')"); $novos = []; $existentes = []; foreach ( $sheetData as $linha ) { if( ($dados = $this->formatarDados($linha)) != null ){ if( isset($this->_clientesExistentes[$dados['cpf']]) ){ if( $this->validarSubstituir($dados) ){ $existentes[$dados['cpf']] = $dados; } } else { $novos[$dados['cpf']] = $dados; } } } return array( $existentes, $novos ); } protected function validarSubstituir($dados) { if( empty($this->_params['substituir_existentes']) ){ return false; } if( !empty($this->_params['status_atendimento']) && in_array($this->_clientesExistentes[$dados['cpf']][1], $this->_params['status_atendimento']) ){ return false; } return true; } protected function formatarDados($linha) { try { $this->_validarEspecie($linha); $this->_validarCpf($linha); $dados = [ 'campanha_id' => $this->_campanhaId, 'nome' => $this->_getNome($linha), 'cpf' => $this->_getCpf($linha), 'data_nascimento' => $this->_getDataNascimento($linha), 'endereco' => null, 'bairro' => null, 'cidade' => null, 'uf' => null, 'cep' => null, 'numero' => null, 'complemento' => null, 'obs_endereco' => null, 'email' => null, 'email2' => null, 'email3' => null, 'orgao' => $this->_getOrgao($linha), 'orgao_id' => $this->_getOrgaoId($linha), 'secretaria_id' => $this->_getSecretariaId($linha), 'sigla_upg' => $this->_getSiglaUpg($linha), 'secretaria' => $this->_getSecretaria($linha), 'cargo' => $this->_getCargo($linha), 'comentario' => $this->_getComentario($linha), 'razao_social' => $this->_getRazaoSocial($linha), 'nome_responsavel' => $this->_getNomeResponsavel($linha), 'cpf_responsavel' => $this->_getCpfResponsavel($linha), 'tipo_pessoa' => $this->_getTipoPessoa($linha), 'rg' => $this->_getRg($linha), 'nome_mae' => $this->_getNomeMae($linha), 'nome_pai' => $this->_getNomePai($linha), 'base_legal_id' => $this->_params['base_legal_id'] ]; $this->_getEndereco($linha, $dados); $this->_getEmails($linha, $dados); $this->_getResetarCarteirizacao($dados); $this->_getResetarAtendimento($dados); } catch ( Exception $e ) { unset($this->_clientesExistentes[$this->_getCpf($linha)], $this->_clientesInseridos[$this->_getCpf($linha)]); $this->_addNaoImportado($linha, $this->naoImportados, $e->getMessage()); return; } if( !empty($this->_params['substituir_existentes']) && !empty($this->_params['ignorar_colunas']) ){ foreach( $dados as $key => $value ){ if( in_array($key, $this->_params['ignorar_colunas']) ){ if( in_array($key, ['orgao', 'secretaria']) ){ unset($dados[$key . "_id"]); } unset($dados[$key]); } } } return $dados; } /** * Se não tiver espécie setado, deixa passar * @param array $sheetData * @param array $dados * @throws Core_Exception */ protected function _validarEspecie(array $linha) { if( !empty($linha[$this->getColuna('especie')]) ){ $tiposConsignaveis = $this->_especiesConsignaveis; if( $this->_params['validar_especie'] && !in_array($linha[$this->getColuna('especie')], $tiposConsignaveis) ){ throw new Core_Exception('Espécie inválida!'); } } } /** * Se não tiver espécie setado, deixa passar * @param array $sheetData * @param array $dados * @throws Core_Exception */ protected function _validarCpf(array $linha) { $cpfCnpj = $this->_getCpf($linha); if( !$this->_validateCpf->isValid($cpfCnpj) ){ throw new Core_Exception("CPF/CNPJ inválido: {$cpfCnpj}"); } } protected function coletarDados(array $sheetData) { $telefones = []; $enderecos = []; $cidades = []; $emprestimos = []; $beneficios = []; foreach ( $sheetData as $linha ) { $cpf = $this->_getCpf($linha); if(!isset($this->_clientesExistentes[$cpf]) && !isset( $this->_clientesInseridos[$cpf]) ){ continue; } $cliente = $this->_getCliente($cpf); $endereco = $this->_coletarEndereco($linha, $cpf, $cidades); if(!empty($endereco)){ $enderecos[] = $endereco; } foreach ( $this->_coletarTelefones($linha, $cpf, $cliente) as $value ) { if(!empty($value)){ $telefones[] = $value; } } $linhasBeneficios = $this->_coletarBeneficios($linha, $cpf, $cliente); if( !empty($linhasBeneficios) ){ $beneficios[] = $linhasBeneficios; } $linhasEmprestimos = $this->_coletarEmprestimos($linha, $cpf, $cliente); if( !empty($linhasEmprestimos) ){ $emprestimos[] = $linhasEmprestimos; } } return [$telefones, $enderecos, $cidades, $beneficios, $emprestimos]; } protected function _coletarTelefones(array $linha, $cpf, $cliente) { $telefones = []; for ( $i = 1; $i <= 10; $i++ ) { $telefone = $linha[$this->getColuna("telefone{$i}")]; $ddd = $linha[$this->getColuna("ddd{$i}")]; $telefoneCliente = String_Refatorar::formatarTelefone($telefone, $ddd); $naoPerturbe = $this->_dbCallcenterBlacklist->fetchRow(['telefone = ?' => $telefoneCliente]); if( $telefoneCliente ){ $telefones[] = [ 'cliente_id' => $cliente[0], 'cpf_cliente' => $cpf, 'fone' => $telefoneCliente, 'origem' => 'IMPORTACAO', 'nao_perturbe' => $naoPerturbe ? 1 : 0, 'excluido' => 0 ]; } } return $telefones; } protected function _coletarEndereco(array $linha, $cpf, &$cidades) { $dados = []; $this->_getEndereco($linha, $dados); if( !empty($dados['endereco']) ){ $cidades[] = [ 'nome' => $dados['cidade'], 'uf' => $dados['uf'] ]; return [ 'cpf_cliente' => $cpf, 'endereco' => $dados['endereco'], 'numero' => $dados['numero'], 'complemento' => $dados['complemento'], 'bairro' => $dados['bairro'], 'cidade' => $dados['cidade'], 'uf' => $dados['uf'], 'cep' => $dados['cep'], ]; } } protected function _coletarEmprestimos(array $linha, $cpf, $cliente) { $beneficioNumero = isset($linha[$this->getColuna('matricula')]) ? $linha[$this->getColuna('matricula')] : ''; if( !empty($linha[$this->getColuna('banco_emprestimo')]) ){ try { $dataQuitacao = $this->_inferirData($linha[$this->getColuna('data_quitacao')]); } catch ( Exception $exc ) { $dataQuitacao = null; } return [ 'cpf_cliente' => $cpf, 'base_cliente_id' => $cliente[0], 'beneficio' => $beneficioNumero, 'banco' => isset($linha[$this->getColuna('banco_emprestimo')]) ? $linha[$this->getColuna('banco_emprestimo')] : null, 'valor_parcela' => isset($linha[$this->getColuna('valor_parcela')]) ? String_Refatorar::parseStringToFloat($linha[$this->getColuna('valor_parcela')]) : 0, 'valor_atual_beneficio' => isset($linha[$this->getColuna('valor_atual_beneficio')]) ? String_Refatorar::parseStringToFloat($linha[$this->getColuna('valor_atual_beneficio')]) : null, 'banco_recebe_beneficio' => isset($linha[$this->getColuna('banco_recebe_beneficio')]) ? $linha[$this->getColuna('banco_recebe_beneficio')] : null, 'inicio_contrato' => isset($linha[$this->getColuna('inicio_contrato')]) ? $linha[$this->getColuna('inicio_contrato')] : null, 'termino_contrato' => isset($linha[$this->getColuna('termino_contrato')]) ? $linha[$this->getColuna('termino_contrato')] : null, 'numero_contrato' => isset($linha[$this->getColuna('numero_contrato')]) ? $linha[$this->getColuna('numero_contrato')] : null, 'valor_emprestimo' => isset($linha[$this->getColuna('valor_emprestimo')]) ? String_Refatorar::parseStringToFloat($linha[$this->getColuna('valor_emprestimo')]) : null, 'parcelas_pagas' => isset($linha[$this->getColuna('parcelas_pagas')]) ? $linha[$this->getColuna('parcelas_pagas')] : null, 'qtd_parcelas' => isset($linha[$this->getColuna('qtde_parcela')]) ? $linha[$this->getColuna('qtde_parcela')] : null, 'taxa' => isset($linha[$this->getColuna('taxa')]) ? String_Refatorar::parseStringToFloat($linha[$this->getColuna('taxa')]) : null, 'data_quitacao' => $dataQuitacao, 'quitacao' => isset($linha[$this->getColuna('saldo')]) ? String_Refatorar::parseStringToFloat($linha[$this->getColuna('saldo')]) : null, ]; } } protected function _coletarBeneficios(array $linha, $cpf, $cliente) { if (empty($linha[$this->getColuna('matricula')])) { return; } return [ 'cpf_cliente' => $cpf, 'base_cliente_id' => $cliente[0], 'beneficio' => (int)$linha[$this->getColuna('matricula')], 'margem_livre' => isset($linha[$this->getColuna('margem_livre')]) ? String_Refatorar::parseStringToFloat($linha[$this->getColuna('margem_livre')]) : null, 'margem_cartao' => isset($linha[$this->getColuna('margem_cartao')]) ? String_Refatorar::parseStringToFloat($linha[$this->getColuna('margem_cartao')]) : null, 'margem_cartao_rmc' => isset($linha[$this->getColuna('margem_cartao_rmc')]) ? String_Refatorar::parseStringToFloat($linha[$this->getColuna('margem_cartao_rmc')]) : null, 'margem_bens_duraveis' => isset($linha[$this->getColuna('margem_bens_duraveis')]) ? String_Refatorar::parseStringToFloat($linha[$this->getColuna('margem_bens_duraveis')]) : null, 'mr' => isset($linha[$this->getColuna('valor_atual_beneficio')]) ? String_Refatorar::parseStringToFloat($linha[$this->getColuna('valor_atual_beneficio')]) : null, 'situacao' => isset($linha[$this->getColuna('situacao')]) ? $linha[$this->getColuna('situacao')] : null, 'banco_pagto' => isset($linha[$this->getColuna('banco_recebe_beneficio')]) ? $linha[$this->getColuna('banco_recebe_beneficio')] : null, 'agencia_pagto' => isset($linha[$this->getColuna('agencia_pagto')]) ? $linha[$this->getColuna('agencia_pagto')] : null, 'conta_pagto' => isset($linha[$this->getColuna('conta_pagto')]) ? $linha[$this->getColuna('conta_pagto')] : null, 'orgao_pagador' => isset($linha[$this->getColuna('orgao')]) ? $linha[$this->getColuna('orgao')] : null, 'tipo_pagto' => isset($linha[$this->getColuna('tipo_pagto')]) ? $linha[$this->getColuna('tipo_pagto')] : null, 'origem' => 'IMPORTACAO', 'competencia' => isset($linha[$this->getColuna('competencia')]) ? $linha[$this->getColuna('competencia')] : null, 'especie' => isset($linha[$this->getColuna('especie')]) ? $linha[$this->getColuna('especie')] : ' ', 'senha_contra_cheque' => isset($linha[$this->getColuna('senha_contra_cheque')]) ? $linha[$this->getColuna('senha_contra_cheque')] : null, 'cessado' => 0, 'bloq_emp' => 0, 'dib' => $this->_getDib($linha[$this->getColuna('dib')]), ]; } }
💾 保存文件
← 返回文件管理器