✏️ 正在编辑: Ftp.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/library/Core/Banco/Planilha/Bonsucesso/Ftp.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Core_Banco_Planilha_Bonsucesso_Ftp extends Core_Banco_Planilha { protected $_inicioLaco = 0; protected $_dateFormat = 'd/m/Y'; protected $colunas = [ //cliente 'cpf_cliente' => 'COD_CLIENTE', //contrato 'convenio' => 'ORGAO', 'tabela' => 'COD_PRODUTO', 'corretor_id' => 'IDENTIFICACAO_PRODUTOR', 'cpf_agente' => '', 'codigo_agente' => 'COD_OPERADOR', 'status_proposta' => '', 'produto' => 'COD_PRODUTO', 'descricao_produto' => 'COD_PRODUTO', 'tipo' => 'COD_TIPO_EMPRESTIMO', 'numero_proposta' => 'NUM_PROPOSTA', 'matricula' => 'NUM_BENEFICIO', 'prazo' => 'QTD_PARCELA', 'valor_prestacao' => 'VAL_PRESTACAO', 'banco_beneficiado' => 'NUM_BANCO_CR', 'agencia_beneficiado' => 'NUM_AGENCIA_BANCARIA_CR', 'conta_beneficiado' => 'NUM_CONTA_BANCARIA_CR', 'valor_bruto' => 'VAL_BRUTO', 'valor_liquido' => 'VAL_LIQUIDO', 'valor_recompra' => 'VAL_SALDO_RECOMPRA', 'valor_refinanciamento' => 'VAL_SALDO_REFINANCIAMENTO', 'comissao_empresa' => 'percentual_comissao', 'numero_contrato' => 'NUM_PROPOSTA', //numero da proposta 'numero_ade' => 'NUM_CONTRATO', //numero do contrato 'numero_beneficio' => 'NUM_BENEFICIO', 'obs' => 'DSC_OBSERVACAO', 'data_emissao' => 'DAT_OPERACAO', 'data_primeiro_vencimento' => 'data_1_vencimento', 'data_liberacao' => '', 'digitador' => 'NOM_CTR_ACESSO', 'forma_liberacao' => 'COD_TIPO_CREDITO_EMPRESTIMO', 'valor_tac' => 'VAL_TAC', 'codigo_promotora' => 'COD_CORRESPONDENTE', 'anterior_numero' => 'anterior_numero', 'anterior_prazo' => 'anterior_prazo', 'anterior_parcelas_pagas' => 'anterior_parcelas_pagas', 'anterior_sequencial_compra' => 'anterior_sequencial_compra', 'anterior_tipo_quitacao' => 'anterior_tipo_quitacao', 'taxa_emprestimo' => 'PCL_TAXA_EMPRESTIMO' ]; public function importar(array $sheetData) { $linhas = $sheetData; $sheetData = array(); for ( $i = $this->_inicioLaco; $i < count($linhas); $i++ ) { $sheetData[$i] = $linhas[$i]; $dados = array( 'banco_id' => $this->getBancoId(), 'corretor_id' => null, 'empresa_id' => null, 'convenio_id' => null, 'tabela_id' => null, 'cliente_id' => null, 'produto' => null, 'prazo' => null, 'valor_bruto' => null, 'valor_liquido' => null, 'numero_contrato' => null, 'data_emissao' => null, 'data_recebimento_comissao' => null, 'digitador' => Yuppie_Auth::getIdentity()->login, 'forma_liberacao' => null, 'comissao_corretor' => null, 'diferimento_corretor' => null, 'comissao_empresa' => null, 'status_proposta' => null, 'subestabelecido_id' => null, ); try { $this->_getNumeroContrato($sheetData[$i], $dados); $this->_getProduto($sheetData[$i], $dados); $this->_getPrazo($sheetData[$i], $dados); $this->_getValorBrutoLiquido($sheetData[$i], $dados); $this->_getEstornado($sheetData[$i], $dados); $this->_getFormaLiberacao($sheetData[$i], $dados); $this->_getConvenioIdTabelaId($sheetData[$i], $dados); $this->_getCorretorId($sheetData[$i], $dados); $this->_getEmpresaId($sheetData[$i], $dados); $this->_getClienteId($sheetData[$i], $dados); $this->_getDataEmissao($sheetData[$i], $dados); $this->_getComissaoCorretorAndEmpresa($sheetData[$i], $dados); $this->_getStatusProposta($sheetData[$i], $dados); $this->_getOutros($sheetData[$i], $dados); //método vazio $this->_getDigitador($sheetData[$i], $dados); $this->_getSubestabelecido($sheetData[$i], $dados); $this->_getContratoVerificado($sheetData[$i], $dados); $this->_getAgenciaBeneficiado($sheetData[$i], $dados); $this->_getBancoBeneficiado($sheetData[$i], $dados); $this->_getContaBeneficiado($sheetData[$i], $dados); $this->_getObs($sheetData[$i], $dados); $this->_getTipoFormalizacao($sheetData[$i], $dados); $this->_getTaxaContrato($sheetData[$i], $dados); $this->contratosImportados[] = $dados['numero_contrato']; $this->salvarLinha($sheetData[$i], $dados); } catch ( Exception $e ) { $this->_addNaoImportado( $dados, $sheetData[$i], $this->naoImportados, $e->getMessage() ); } } return $this->naoImportados; } /** * * @param array $sheetData * @param array $dados * @return void */ protected function _getConvenioIdTabelaId(array $sheetData, array &$dados) { $colunaConvenio = trim(htmlspecialchars($sheetData[$this->getColuna('convenio')])); $prepareConvenio = explode("-", $colunaConvenio); $codigoConvenio = trim($prepareConvenio[0]); $dados['convenio_id'] = (new Model_Convenio())->getOrCreateConvenio($colunaConvenio, $codigoConvenio); $colunaTabela = trim(htmlspecialchars($sheetData[$this->getColuna('tabela')])); $prepareTabela = explode("-", $colunaTabela); $codigoTabela = trim($prepareTabela[0]); $dados['tabela_id'] = (new Model_Tabela())->getOrCreateTabelaByNome($codigoTabela, $colunaTabela, $dados['convenio_id'], $this->getBancoId()); } protected function _getCorretorId(array $sheetData, array &$dados) { // $infoDigitador = explode('-', $sheetData[$this->getColuna('codigo_agente')]); $codDigitador = $sheetData[$this->getColuna('codigo_agente')]; // $codDigitador = str_replace(" ", "", $infoDigitador[0]); $colCorretorCpf = isset($sheetData[$this->getColuna('corretor_id')]) ? $sheetData[$this->getColuna('corretor_id')] : null; $colCodigoDigitador = isset($codDigitador) ? $codDigitador : null; $corretor = new Model_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( $colCorretorCpf != null ){ if( strlen($colCorretorCpf) >= 11 && Validators_Cpf::validate($colCorretorCpf) ){ $dadosCorretor = $corretor->getByCpf($colCorretorCpf); } } if( $colCodigoDigitador != null && $dadosCorretor == null ){ //pesquisa pelo codigo do usuario $corretorSenha = new Model_CorretorSenha(); $corretorId = $corretorSenha->getCorretorIdBySenha($colCodigoDigitador, $dados['banco_id']); $dadosCorretor = $corretor->exibir($corretorId); } if( $dadosCorretor != null ){ $corretorId = $dadosCorretor['id']; $dados['empresa_id'] = $dadosCorretor['empresa_id']; } } elseif( $colCodigoDigitador != null && $dadosCorretor == null ){ //pesquisa pelo codigo do usuario $corretorSenha = new Model_CorretorSenha(); $corretorId = $corretorSenha->getCorretorIdBySenha($colCodigoDigitador, $dados['banco_id']); $dadosCorretor = $corretor->exibir($corretorId); if( $dadosCorretor != null ){ if( $dadosCorretor['obedecer_id'] == 1 ){ if( strlen($colCorretorCpf) >= 11 && Validators_Cpf::validate($colCorretorCpf) ){ //pesquisa pelo CPF $dadosCorretor = $corretor->getByCpf($colCorretorCpf); } else { //pesquisa pelo ID $dadosCorretor = $corretor->exibir($colCorretorCpf); } if( $dadosCorretor != null ){ $corretorId = $dadosCorretor['id']; $dados['empresa_id'] = $dadosCorretor['empresa_id']; } } else { $dados['empresa_id'] = $dadosCorretor['empresa_id']; $dados['verificar_contratos'] = 1; } } } $dados['corretor_id'] = $corretorId; } protected function _getEmpresaId(array $sheetData, array &$dados) { if( !isset($dados['empresa_id']) ){ $dados['empresa_id'] = Yuppie_Auth::getIdentity()->empresa_id; } } protected function _getProduto(array $sheetData, array &$dados) { $colunaInfoProduto = $sheetData[$this->getColuna('produto')]; $InfoProduto = explode("-", $colunaInfoProduto); $codProduto = trim($InfoProduto[0]); if( count($InfoProduto) > 2 ){ unset($InfoProduto[0]); $descProduto = ""; foreach ( $InfoProduto as $descricao ) { $descProduto .= $descricao; $descProduto .= " "; } } elseif( isset($InfoProduto[1]) ){ $descProduto = $InfoProduto[1]; } else { $descProduto = ""; } $codTipoProduto = isset($sheetData[$this->getColuna('tipo')]) ? $sheetData[$this->getColuna('tipo')] : null; $codigoProduto = 0; if( $colunaInfoProduto ){ $produto = new Model_Produto(); $dadosProduto = $produto->existe($codProduto, $this->getBancoId()); if( $dadosProduto == null ){ $dicionarioTipos = array( 1 => 'NOVO', //NOVO 2 => 'REFINANCIAMENTO', //REFIN 3 => 'COMPRA', //RECOMPRA 4 => 'CARTAO', 5 => 'REFIN COM RECOMPRA', 6 => 'COMPLEMENTO PORTABILIDADE', 7 => 'RECOMPRA SIMPLES', 8 => 'PORTABILIDADE', 9 => 'CDC LOJISTA' ); $tipo = isset($dicionarioTipos[$codTipoProduto]) ? $dicionarioTipos[$codTipoProduto] : null; $produto->setCodigo($codProduto); $produto->setBancoId($this->getBancoId()); $produto->setTipo($tipo); $produto->setDescricao($descProduto); $result = $produto->salvar($produto); if( $result != null ){ $codigoProduto = $codProduto; $dados['tipo'] = $tipo; } } else { $codigoProduto = $dadosProduto['codigo']; $dados['tipo'] = $dadosProduto['tipo']; } } $dados['produto'] = $codigoProduto; } protected function _getClienteId(array $sheetData, array &$dados) { $cpfCliente = String_Refatorar::formatarCpf($sheetData[$this->getColuna('cpf_cliente')]); //acrescenta o zero quando cpf tem zero no inicio if( !Validators_Cpf::validate($cpfCliente) ){ throw new Core_Exception("CPF inválido."); } $modelCliente = new Model_Cliente(); $dadosCliente = $modelCliente->existe($cpfCliente); if( !$dadosCliente ){ throw new Core_Exception("Cliente não localizado."); } $dados['cliente_id'] = $dadosCliente->id; } protected function _getStatusProposta(array $sheetData, array &$dados) { $numProposta = $sheetData[$this->getColuna('numero_proposta')]; $statusId = null; //Status padrao $status = new Model_StatusProposta(); $dadosStatus = $status->existe("CONTRATO DIGITADO"); if( $dadosStatus == null ){ $status->setDescricao("CONTRATO DIGITADO"); $statusId = $status->salvar($status); } else { $statusId = $dadosStatus['id']; } $newContrato = new Model_DbTable_Contrato(); $dadosContrato = isset($numProposta) && $numProposta ? $newContrato->fetchRow("numero_contrato = '" . $numProposta . "' " . "AND banco_id = " . $this->getBancoId()) : null; if( !$dadosContrato ){ $dados['status_proposta'] = $statusId; } } protected function _getDataVencimento1(array $sheetData, array &$dados) { $colunaDtVencimento1 = $sheetData[$this->getColuna('data_primeiro_vencimento')]; $dataVencimento1 = null; if( !empty($colunaDtVencimento1) ){ $dataVencimento1 = Core_Util::convertDate($colunaDtVencimento1, $this->_dateFormat); if( is_array($dataVencimento1) ){ throw new Core_Exception("Não foi possível converter a data do primeiro vencimento para o banco de dados. ({$colunaDtVencimento1})"); } } $dados['data_primeiro_vencimento'] = $dataVencimento1; } protected function _getSubestabelecido(array $sheetData, array &$dados) { $subestabelecidoId = 0; if( $sheetData[$this->getColuna('codigo_promotora')] ){ //verifica os dados do substabelecido $subestabelecido = new Model_Parceiro(); $dadosParceiro = $subestabelecido->getByCodigo($sheetData[$this->getColuna('codigo_promotora')]); if( $dadosParceiro != null ){ $subestabelecidoId = $dadosParceiro['empresa_id']; } } $dados['subestabelecido_id'] = $subestabelecidoId; } protected function _getValorBrutoLiquido(array $sheetData, array &$dados) { $valorLiquido = 0; $valorBruto = 0; $valorPrestacao = 0; if( !empty($sheetData[$this->getColuna('valor_bruto')]) ){ $valorBruto = trim($sheetData[$this->getColuna('valor_bruto')]); } if( !empty($sheetData[$this->getColuna('valor_recompra')]) && $sheetData[$this->getColuna('valor_recompra')] != '0,00'){ $valorLiquido = trim($sheetData[$this->getColuna('valor_recompra')]); } if( !empty($sheetData[$this->getColuna('valor_refinanciamento')]) && $sheetData[$this->getColuna('valor_refinanciamento')] != '0,00'){ $valorLiquido = trim($sheetData[$this->getColuna('valor_refinanciamento')]); } if( !empty($sheetData[$this->getColuna('valor_liquido')]) && $sheetData[$this->getColuna('valor_liquido')] != '0,00' ){ $valorLiquido = trim($sheetData[$this->getColuna('valor_liquido')]); } if( !empty($sheetData[$this->getColuna('valor_prestacao')]) ){ $valorPrestacao = trim($sheetData[$this->getColuna('valor_prestacao')]); } $dados['valor_prestacao'] = $valorPrestacao; $dados['valor_bruto'] = $valorBruto; $dados['valor_liquido'] = $valorLiquido; } protected function _getComissaoEmpresa(array $sheetData, array &$dados) { $colunaPrazo = $sheetData[$this->getColuna('prazo')]; //recupera a comissao da empresa $comissaoEmpresa = 0; if( $dados['empresa_id'] > 0 ){ $empresa = new Model_Empresa(); $comissaoEmpresa = $empresa->getComissao( $dados['empresa_id'], isset($dados['banco_id']) ? $dados['banco_id'] : 0, isset($dados['tabela_id']) ? $dados['tabela_id'] : 0, isset($dados['convenio_id']) ? $dados['convenio_id'] : 0, isset($dados['produto']) ? $dados['produto'] : 0, $colunaPrazo, $dados['data_emissao'], isset($dados['base_comissao_empresa_valor']) ? $dados['base_comissao_empresa_valor'] : 0, isset($dados['base_comissao_empresa']) ? $dados['base_comissao_empresa'] : "VALOR LIQUIDO" ); } $dados['comissao_empresa'] = $comissaoEmpresa; } protected function _getDigitador(array $sheetData, array &$dados) { $colCodigoAgente = isset($sheetData[$this->getColuna('codigo_agente')]) ? $sheetData[$this->getColuna('codigo_agente')] : null; $infoDigitador = explode('-', $sheetData[$this->getColuna('codigo_agente')]); $codDigitador = str_replace(" ", "", $infoDigitador[0]); if( $colCodigoAgente != null ){ $dados['digitador'] = $colCodigoAgente; } } protected function _getNumeroContrato(array $sheetData, array &$dados) { if( $this->getColuna('numero_contrato') ){ if( isset($sheetData[$this->getColuna('numero_contrato')]) ){ $dados['numero_contrato'] = String_Refatorar::soNumeros( $sheetData[$this->getColuna('numero_contrato')] ); } } if( $this->getColuna('numero_ade') ){ if( isset($sheetData[$this->getColuna('numero_ade')]) ){ $dados['numero_ade'] = String_Refatorar::soNumeros( $sheetData[$this->getColuna('numero_ade')] ); } } if( $this->getColuna('numero_beneficio') ){ if( isset($sheetData[$this->getColuna('numero_beneficio')]) ){ $dados['numero_beneficio'] = String_Refatorar::soNumeros( $sheetData[$this->getColuna('numero_beneficio')] ); } } } protected function _getFormaLiberacao(array $sheetData, array &$dados) { if( $this->getColuna('forma_liberacao') ){ $colunaCodLiberacao = $sheetData[$this->getColuna('forma_liberacao')]; $dicionarioFormaLiberacao = array( '101' => 'LIBERACAO VIA OP', '102' => 'LIBERACAO VIA TED', '103' => 'LIBERACAO VIA DOC', '105' => 'LIBERACAO VIA MEO', '6' => 'CHEQUE ADM' ); $dados['forma_liberacao'] = isset($dicionarioFormaLiberacao[$colunaCodLiberacao]) ? $dicionarioFormaLiberacao[$colunaCodLiberacao] : $colunaCodLiberacao; } } /** * * @param array $naoImportados * @param string $motivo * @return void */ protected function _addNaoImportado(array $dados, array $sheetData, array &$naoImportados, $motivo = '') { array_push($naoImportados, array( 'numero_contrato' => $dados['numero_contrato'], 'tabela' => isset($sheetData[$this->getColuna('tabela')]) ? $sheetData[$this->getColuna('tabela')] : null, '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, 'valor' => isset($sheetData[$this->getColuna('valor_bruto')]) ? $sheetData[$this->getColuna('valor_bruto')] : null, 'valor_liquido' => isset($sheetData[$this->getColuna('valor_liquido')]) ? $sheetData[$this->getColuna('valor_liquido')] : null, 'prazo' => isset($sheetData[$this->getColuna('prazo')]) ? $sheetData[$this->getColuna('prazo')] : null, 'codigo_atendente' => isset($sheetData[$this->getColuna('codigo_agente')]) ? $sheetData[$this->getColuna('codigo_agente')] : null, 'codigo_vendedor' => isset($sheetData[$this->getColuna('corretor_id')]) && isset($sheetData[$this->getColuna('corretor_id')]) ? $sheetData[$this->getColuna('corretor_id')] : null, 'motivo' => $motivo )); } protected function _getCamposAtualizacao(array &$dados) { $dadosAtualizacao = parent::_getCamposAtualizacao($dados); unset($dadosAtualizacao['data_liberacao'], $dadosAtualizacao['valor_liquido']); if( isset($dados['corretor_id']) && $dados['corretor_id'] > 0 ){ $dadosAtualizacao['corretor_id'] = $dados['corretor_id']; } return $dadosAtualizacao; } protected function _getTipoFormalizacao(array $sheetData, array &$dados) { if(empty($dados['tabela_id'])){ return; } $dadosTabela = (new Model_Tabela())->exibir($dados['tabela_id']); if(empty($dadosTabela)){ return; } $dados['tipo_formalizacao'] = $dadosTabela->tipo_formalizacao; } }
💾 保存文件
← 返回文件管理器