✏️ 正在编辑: Extrator.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/library/Core/Banco/Planilha/Itau/Extrator.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Core_Banco_Planilha_Itau_Extrator extends Core_Banco_Planilha { protected $_dateFormat = 'Y-m-d'; protected $colunas = array( 'agencia_beneficiado' => 'AR', 'bairro' => 'S', 'banco_beneficiado' => 'AQ', 'celular' => '', 'cep' => 'V', 'cidade' => 'T', 'cidade_uf' => '', 'codigo_agente' => 'DA', 'codigo_barras_ade' => 'CX', 'codigo_convenio' => 'C', 'codigo_tabela' => 'AB', 'complemento' => '', 'conta_beneficiado' => 'AT', 'convenio' => 'D', 'corretor_id' => 'R', 'cpf_agente' => 'E', 'cpf_cliente' => 'J', 'data_emissao' => 'CW', 'data_expedicao' => 'P', 'data_liberacao' => 'DT', 'data_nascimento' => 'K', 'digito_agencia_beneficiado' => 'AS', 'digito_conta_beneficiado' => 'AU', 'endereco' => 'Q', 'fone' => 'W', 'forma_liberacao' => 'AP', 'matricula' => '', 'nome_cliente' => 'H', 'nome_mae' => 'EA', 'nome_pai' => 'EB', 'nome_produto' => 'DJ', 'numero' => '', 'numero_ade' => 'AE', 'numero_beneficio' => 'I', 'numero_contrato' => 'AD', 'orgao_expedidor' => 'N', 'prazo' => 'AN', 'produto' => 'AB', 'rg' => 'M', 'saldo_devedor' => 'CY', 'status_proposta' => 'DB', 'tabela' => 'DJ', 'tipo_contrato' => 'AC', 'uf' => 'U', 'uf_expedidor' => 'O', 'valor_adiantamento' => 'BX', 'valor_bruto' => 'BF', 'valor_liquido' => 'CZ', 'valor_prestacao' => 'AO', 'valor_principal' => '', 'valor_refin' => '', 'obs' => 'DS', 'nao_comissionado_motivo' => 'EE', ); protected function _contratoExiste($dbtable, $dados) { $params = array("banco_id = {$this->getBancoId()}"); //testa se o contrato existe pelo número do contrato, pela ADE ou se //a ADE não foi cadastrada no campo "numero_contrato" if( isset($dados['numero_contrato']) && isset($dados['numero_ade']) ){ $params[] = "(numero_contrato = '{$dados['numero_contrato']}' " . "OR numero_ade = '{$dados['numero_ade']}' " . "OR numero_contrato = '{$dados['numero_ade']}')"; }elseif( isset($dados['numero_contrato']) ){ //busca apenas pelo número do contrato $params[] = "numero_contrato = '{$dados['numero_contrato']}'"; }elseif( isset($dados['numero_ade']) ){ //busca apenas pelo número da ADE $params[] = "numero_ade = '{$dados['numero_ade']}'"; }else{ $this->_dadosContrato = null; return; } $where = implode(" AND ", $params); $this->_dadosContrato = $dbtable->fetchRow($where); //se o número do contrato estiver diferente, então atualiza o número do contrato if( $this->_dadosContrato && $this->_dadosContrato['numero_contrato'] != $dados['numero_contrato'] ){ $dbtable->updateNumeroContrato(array( 'numero_contrato' => $dados['numero_contrato'] ), $this->_dadosContrato->id); } } protected function _getConvenioIdTabelaId(array $sheetData, array &$dados) { $colunaConvenio = trim($sheetData[$this->getColuna('convenio')]); $colunaCodigoTabela = $sheetData[$this->getColuna('codigo_tabela')]; $colunaTabela = isset($sheetData[$this->getColuna('tabela')]) ? $sheetData[$this->getColuna('tabela')] : $colunaCodigoTabela; $dados['tabela_id'] = 0; $dados['convenio_id'] = 0; $convenio = new Model_DbTable_Convenio(); $dadosConvenio = $convenio->fetchRow("nome='" . $colunaConvenio . "'"); if( $dadosConvenio == null ){ $dados['convenio_id'] = $convenio->insert(array( 'nome' => $colunaConvenio )); } else if( $dadosConvenio['parent_id'] ){ $dadosParent = $convenio->fetchRow("id='" . $dadosConvenio['parent_id'] . "'"); $dados['convenio_id'] = $dadosParent['id']; } else { $dados['convenio_id'] = $dadosConvenio['id']; } if ($colunaCodigoTabela != null) { $tabela = new Model_Tabela(); $tipoFormalizacao = stristr($sheetData[$this->getColuna('tipo_contrato')], 'digital') ? 1 : 0; $dados['tabela_id'] = $tabela->getOrCreateTabelaByCodigo($colunaCodigoTabela, $colunaTabela, $dados['convenio_id'], $this->getBancoId(), $tipoFormalizacao); } } /** * * @param array $sheetData * @param array $dados * @return void */ protected function _getValorBrutoLiquido(array $sheetData, array &$dados) { //refin $saldoDevedor = $this->getColuna('saldo_devedor') // CY ? String_Refatorar::parseStringToFloat($sheetData[$this->getColuna('saldo_devedor')]) : null; //compra $valorAdiantamento = $this->getColuna('valor_adiantamento') // BX ? String_Refatorar::parseStringToFloat($sheetData[$this->getColuna('valor_adiantamento')]) : null; $valorBruto = $this->getColuna('valor_bruto') // BF ? String_Refatorar::parseStringToFloat($sheetData[$this->getColuna('valor_bruto')]) : null; $valorLiquido = $this->getColuna('valor_liquido') // CZ ? String_Refatorar::parseStringToFloat($sheetData[$this->getColuna('valor_liquido')]) : null; $dados['valor_bruto'] = number_format($valorBruto, 2, ',', '.'); if( $saldoDevedor ){ $dados['valor_liquido'] = number_format(($valorBruto - $saldoDevedor), 2, ',', '.'); } else if( $valorAdiantamento ){ $dados['valor_liquido'] = number_format(($valorBruto - $valorAdiantamento), 2, ',', '.'); } else { $dados['valor_liquido'] = number_format($valorLiquido, 2, ',', '.'); if( in_array($dados['tipo'], ['PORTABILIDADE', 'NOVO', 'AUMENTO DE MARGEM']) ){ $dados['valor_liquido'] = number_format($valorBruto, 2, ',', '.'); } } } protected function _getCorretorId(array $sheetData, array &$dados) { $colCorretorId = isset($sheetData[$this->getColuna('corretor_id')]) ? $sheetData[$this->getColuna('corretor_id')] : null; $colCpfCorretor = isset($sheetData[$this->getColuna('cpf_agente')]) ? $sheetData[$this->getColuna('cpf_agente')] : null; $colCodigoAgente = isset($sheetData[$this->getColuna('codigo_agente')]) ? $sheetData[$this->getColuna('codigo_agente')] : null; $corretor = new Model_Corretor(); $dbtableCorretor = new Model_DbTable_Corretor(); $corretorId = 0; $dadosCorretor = null; $dbtableBanco = new Model_DbTable_Banco(); $banco = $dbtableBanco->fetchRow('id = ' . $dados['banco_id']); if( $banco['obedecer_id'] == null || $banco['obedecer_id'] == 0 ){ if( $colCodigoAgente != null && $dadosCorretor == null ){ //pesquisa pelo codigo do usuario $corretorSenha = new Model_CorretorSenha(); $corretorId = $corretorSenha->getCorretorIdBySenha($colCodigoAgente, $dados['banco_id']); $dadosCorretor = $corretor->exibir($corretorId); } if( $dadosCorretor == null && $colCpfCorretor != null && strlen($colCpfCorretor) >= 11 && Validators_Cpf::validate($colCpfCorretor) ){ //pesquisa pelo CPF $dadosCorretor = $corretor->getByCpf($colCpfCorretor); $corretorId = $dadosCorretor['id']; } if( $dadosCorretor != null ){ $corretorId = $dadosCorretor['id']; $dados['empresa_id'] = $dadosCorretor['empresa_id']; } } else { if( $colCodigoAgente != null && $dadosCorretor == null ){ //pesquisa pelo codigo do usuario $corretorSenha = new Model_CorretorSenha(); $corretorId = $corretorSenha->getCorretorIdBySenha($colCodigoAgente, $dados['banco_id']); $dadosCorretor = $corretor->exibir($corretorId); //pesquisa pelo cpf if( $dadosCorretor == null && $colCpfCorretor != null && strlen($colCpfCorretor) >= 11 && Validators_Cpf::validate($colCpfCorretor) ){ //pesquisa pelo CPF $dadosCorretor = $corretor->getByCpf($colCpfCorretor); $corretorId = $dadosCorretor['id']; } if( $corretorId != null && $corretorId > 0 ){ $corretorId = $dbtableCorretor->fetchRow("id = '" . $corretorId . "'"); //verifica se o corretor está marcado para ler pelo id //se sim, puxa o código do vendedor if( $corretorId['obedecer_id'] == 1 ){ if( strlen($colCorretorId) >= 11 && Validators_Cpf::validate($colCorretorId) ){ //pesquisa pelo CPF $dadosCorretor = $corretor->getByCpf($colCorretorId); $corretorId = $dadosCorretor['id']; } elseif (!empty($colCorretorId)) { //pesquisa pelo ID $dadosCorretor = $corretor->exibir($colCorretorId); $corretorId = $dadosCorretor['id']; } if( $dadosCorretor != null ){ $corretorId = $dadosCorretor['id']; $dados['empresa_id'] = $dadosCorretor['empresa_id']; }else{ $corretorId = $corretorId['id']; } //se não usa o id do corretor encontrado pelo cod; } else { $corretorId = $corretorId['id']; $dados['empresa_id'] = $dadosCorretor['empresa_id']; } } } } $dados['corretor_id'] = $corretorId; } /** * * @param array $sheetData * @param array $dados * @return void */ protected function _getFormaLiberacao(array $sheetData, array &$dados) { if( $this->getColuna('forma_liberacao') ){ $colunaLiberacao = $sheetData[$this->getColuna('forma_liberacao')]; $dados['forma_liberacao'] = $colunaLiberacao == 'Ordem de Pagamento' ? 'O/P' : 'C/C'; } } protected function _getDigitador(array $sheetData, array &$dados) { $colCodigoAgente = isset($sheetData[$this->getColuna('codigo_agente')]) ? $sheetData[$this->getColuna('codigo_agente')] : null; $dados['digitador'] = $colCodigoAgente; } protected function _getCamposAtualizacao(array &$dados) { $dadosAtualizacao = parent::_getCamposAtualizacao($dados); unset($dadosAtualizacao['valor_liquido']); if( !empty($dados['data_emissao']) ){ $dadosAtualizacao['data_emissao'] = $dados['data_emissao']; } if( $dados['digitador'] != NULL ){ $dadosAtualizacao['digitador'] = $dados['digitador']; } if( !empty($dados['codigo_barras_ade']) ){ $dadosAtualizacao['codigo_barras_ade'] = $dados['codigo_barras_ade']; } if( !empty($dados['valor_bruto']) ){ $dadosAtualizacao['valor_bruto'] = $dados['valor_bruto']; } if( !empty($dados['valor_liquido']) ){ $dadosAtualizacao['valor_liquido'] = $dados['valor_liquido']; } return $dadosAtualizacao; } protected function _getCodigoBarrasAde(array $sheetData, array &$dados) { $colCodBarrasAde = isset($sheetData[$this->getColuna('codigo_barras_ade')]) ? $sheetData[$this->getColuna('codigo_barras_ade')] : null; $dados['codigo_barras_ade'] = $colCodBarrasAde; } protected function _getTipoContrato(array $sheetData, array &$dados) { $colTipoContrato = isset($sheetData[$this->getColuna('tipo_contrato')]) ? trim($sheetData[$this->getColuna('tipo_contrato')]) : null; switch ( $colTipoContrato) { case "EMPRÉSTIMO FÍSICO": case "EMPRÉSTIMO DIGITAL": case "EMPRÉSTIMO": $dados['tipo'] = "NOVO"; break; case "PORTABILIDADE COM TROCO": case "REFINANCIAMENTO PORTABILIDADE": $dados['tipo'] = "REFIN DA PORTABILIDADE"; break; case "PORTABILIDADE ATAQUE": $dados['tipo'] = "PORTABILIDADE"; break; case "MARGEM COMPLEMENTAR": $dados['tipo'] = "AUMENTO DE MARGEM"; break; default: $dados['tipo'] = $colTipoContrato; break; } } protected function _getProduto(array $sheetData, array &$dados) { $colunaProdutoNome = isset($sheetData[$this->getColuna('nome_produto')]) ? $sheetData[$this->getColuna('nome_produto')] : null; $colunaProduto = $sheetData[$this->getColuna('produto')]; $modelProduto = new Model_Produto(); $dados['produto'] = $modelProduto->getOrCreateProdutoCodigo($colunaProduto, $colunaProdutoNome, $this->getBancoId(), $dados['tipo']); } protected function _getDataEmissao(array $sheetData, array &$dados) { $colDtEmissao = $this->getColuna('data_emissao'); if(!empty($colDtEmissao)) { $colunaDtEmissao = substr(trim($sheetData[$colDtEmissao]), 0, 10); $dataEmissao = null; if (!empty($colunaDtEmissao)) { $dataEmissao = Core_Util::convertDate($colunaDtEmissao); if (is_array($dataEmissao)) { $colunaDtEmissao = substr(trim($sheetData[$colDtEmissao]), 0, 8); $dataEmissao = Core_Util::convertDate($colunaDtEmissao); if (is_array($dataEmissao)) { throw new Core_Exception("Não foi possível converter a data de emissão para o banco de dados. ({$colunaDtEmissao}). Padrão esperado: {$this->_dateFormat}"); } } } $dados['data_emissao'] = $dataEmissao; } } protected function _getDataLiberacao(array $sheetData, array &$dados) { $colunaDtLib = isset($sheetData[$this->getColuna('data_liberacao')]) ? trim($sheetData[$this->getColuna('data_liberacao')]) : null; $dataNascimento = null; if ( !empty($colunaDtLib) ) { $colunaDtLib = substr($colunaDtLib, 0, 10); $dataNascimento = Core_Util::convertDate($colunaDtLib); if( is_array($dataNascimento) ){ $colunaDtLib = substr($colunaDtLib, 0, 8); $dataNascimento = Core_Util::convertDate($colunaDtLib); if( is_array($dataNascimento) ){ throw new Core_Exception("Não foi possível converter a data de liberação para o banco de dados. ({$colunaDtLib})"); } } } $dados['data_liberacao'] = $dataNascimento; } protected function _getDataNascimento(array $sheetData, array &$dados) { $colunaDt = isset($sheetData[$this->getColuna('data_nascimento')]) ? trim($sheetData[$this->getColuna('data_nascimento')]) : null; $dataNascimento = null; if ( !empty($colunaDt) ) { $colunaDt = substr($colunaDt, 0, 10); $dataNascimento = Core_Util::convertDate($colunaDt); if( is_array($dataNascimento) ){ $colunaDt = substr($colunaDt, 0, 8); $dataNascimento = Core_Util::convertDate($colunaDt); if( is_array($dataNascimento) ){ throw new Core_Exception("Não foi possível converter a data de nascimento para o banco de dados. ({$colunaDt})"); } } } return $dataNascimento; } protected function _getTipoFormalizacao(array $sheetData, array &$dados) { if (empty($dados['tabela_id'])){ return; } $dados['tipo_formalizacao'] = (new Model_Tabela()) ->exibir($dados['tabela_id']) ->tipo_formalizacao; } }
💾 保存文件
← 返回文件管理器