✏️ 正在编辑: ExtratorCsv.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/library/Core/Banco/Planilha/Pan/ExtratorCsv.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Core_Banco_Planilha_Pan_ExtratorCsv extends Core_Banco_Planilha_Pan_Extrator { protected $bancoId; protected $_inicioLaco = 0; protected $_dateFormat = 'dd-MM-yyyy'; protected $naoImportados = array(); protected $contratosImportados = array(); protected $_log = null; protected $_dadosContrato = null; protected $colunas = [ "1 - Comissão contratos pagos" => [ "proposta" => "A", "op_origem" => "B", "cpf" => "C", "nome_cliente" => "D", "data_proposta" => "E", "data_contrato" => "F", "prazo" => "G", "cod_promotora" => "H", "nome_promotora" => "I", "cod_comissionado" => "J", "nome_comissionado" => "K", "cod_empregador" => "L", "nome_empregador" => "M", "valor_financiado" => "N", "valor_contrato" => "O", "valor_base" => "P", "valor_lancto" => "Q", "perc_comissao" => "R", "cod_comissao" => "S", "data_cred_comis" => "T", "tipo_operacao" => "U", "num_parcela_paga" => "V", "digitador" => "W", "cod_tabela" => "X", "desc_tabela" => "Y", "login" => "Z", "tipo_formalizacao" => "AD", "taxa_contrato" => "AA", "com_seguro" => "AC", "especie" => "AI" ], "2 - Estornos de comissao" => [ "proposta" => "A", "op_origem" => "B", "cpf" => "C", "nome_cliente" => "D", "data_proposta" => "E", "data_contrato" => "F", "prazo" => "G", "cod_promotora" => "H", "nome_promotora" => "I", "cod_comissionado" => "J", "nome_comissionado" => "K", "cod_empregador" => "L", "nome_empregador" => "M", "valor_financiado" => "N", "valor_contrato" => "O", "valor_base" => "P", "valor_lancto" => "Q", "perc_comissao" => "R", "cod_comissao" => "S", "data_cred_comis" => "T", "tipo_operacao" => "U", "observacao" => "V", "num_parcela_paga" => "W", "digitador" => "X", "cod_tabela" => "Y", "desc_tabela" => "Z", "login" => "AA", "tipo_formalizacao" => "AE", "taxa_contrato" => "AB", "com_seguro" => "AD", "especie" => "AI" ], "3 - Acertos manuais (a título de crédito)" => [ "proposta" => "A", "op_origem" => "B", "cpf" => "C", "nome_cliente" => "D", "data_proposta" => "E", "data_contrato" => "F", "prazo" => "G", "cod_promotora" => "H", "nome_promotora" => "I", "cod_comissionado" => "J", "nome_comissionado" => "K", "cod_empregador" => "L", "nome_empregador" => "M", "valor_financiado" => "N", "valor_contrato" => "O", "valor_base" => "P", "valor_lancto" => "Q", "cod_comissao" => "R", "data_cred_comis" => "S", "tipo_operacao" => "T", "cod_tabela" => "W", "desc_tabela" => "X", "login" => "Y", "taxa_contrato" => "Z", "com_seguro" => "AB", "tipo_formalizacao" => "AC", "perc_comissao" => "", "num_parcela_paga" => "", "digitador" => "Y", "especie" => "AI" ], "4 - Acertos manuais (a título de débito)" => [ "proposta" => "A", "op_origem" => "B", "cpf" => "C", "nome_cliente" => "D", "data_proposta" => "E", "data_contrato" => "F", "prazo" => "G", "cod_promotora" => "H", "nome_promotora" => "I", "cod_comissionado" => "J", "nome_comissionado" => "K", "cod_empregador" => "L", "nome_empregador" => "M", "valor_financiado" => "N", "valor_contrato" => "O", "valor_base" => "P", "valor_lancto" => "Q", "cod_comissao" => "R", "data_cred_comis" => "S", "tipo_operacao" => "T", "cod_tabela" => "AA", "desc_tabela" => "AB", "login" => "AC", "taxa_contrato" => "AD", "com_seguro" => "AF", "tipo_formalizacao" => "AG", "perc_comissao" => "", "num_parcela_paga" => "", "digitador" => "AC", "especie" => "AI" ], "6 - Lancamentos Futuros" => array( "proposta" => "A", "op_origem" => "B", "cpf" => "C", "nome_cliente" => "D", "data_proposta" => "E", "data_contrato" => "F", "prazo" => "G", "cod_promotora" => "H", "nome_promotora" => "I", "cod_comissionado" => "J", "nome_comissionado" => "K", "cod_empregador" => "L", "nome_empregador" => "M", "valor_financiado" => "N", "valor_contrato" => "O", "valor_base" => "P", "valor_lancto" => "Q", "perc_comissao" => "R", "data_agend_comissao" => "S", "tipo_pagto" => "T", "tipo_operacao" => "U", "desc_pagto" => "V", "observacao" => "W", "cod_tabela" => "X", "desc_tabela" => "Y", "login" => "Z", "tipo_formalizacao" => "AD", "taxa_contrato" => "AA", "com_seguro" => "AC", "especie" => "AI" ), "9 - Contrato Não Comissionado" => [ "proposta" => "A", "nao_comissionado_observacao" => "AI", "tipo_operacao" => "U", ] ]; public function __construct($bancoId) { parent::__construct($bancoId); } public function getColuna($coluna, $cod) { return isset($this->colunas[$cod][$coluna]) ? trim($this->colunas[$cod][$coluna]) : null; } public function importar($arquivo) { $urlSistema = Yuppie_Auth::getSiteKey(); $writer = new Zend_Log_Writer_Stream("/var/log/sistemayuppie/zf_log_pan_extrator_{$urlSistema}_" . date('dmY') . ".txt"); $classeChamada = get_class($this); $this->_log = new Zend_Log($writer); $this->_log->log("IMPORTAÇÃO: " . $classeChamada, Zend_Log::INFO); $this->_log->log('ARQUIVO IMPORTADO: ' . print_r($this->getArquivoOrigem(), true), Zend_Log::INFO); $this->_log->log("Usuário logado: " . Yuppie_Auth::getIdentity()->login, Zend_Log::INFO); $sheetData = $this->obtencaoDados($arquivo); if ($sheetData) { $this->processar($sheetData); } return $this->naoImportados; } protected function _getProduto(array $sheetData, array &$dados) { $colunaCodigoProduto = trim($sheetData['tipo_operacao']); $colunaDescricaoProduto = isset($sheetData['tipo_operacao']) ? trim($sheetData['tipo_operacao']) : null; $colunaSeguro = $sheetData['com_seguro'] ?? 0; if( stristr($colunaDescricaoProduto, "Refinanciamento de Portabilidade") ){ $tipo = 'REFIN DA PORTABILIDADE'; } elseif( $colunaDescricaoProduto == "Refinanciamento" ){ $tipo = "REFINANCIAMENTO"; } elseif( $colunaDescricaoProduto == "Novo" || $colunaDescricaoProduto == "Margem Livre" || $colunaDescricaoProduto == "Cartão" ){ $tipo = "NOVO"; } elseif( $colunaDescricaoProduto == "Portabilidade" ){ $tipo = "PORTABILIDADE"; } if(empty($tipo)){ throw new Core_Exception("Não foi possível encontrar o tipo de operação para este contrato."); } if( $colunaSeguro == "S" ){ $tipo .= " COM SEGURO"; } $produto = new Model_Produto(); $dados['produto'] = $produto->getOrCreateProdutoCodigo(null, $colunaCodigoProduto, $this->getBancoId(), $tipo); } /** * * @param array $sheetData * @param array $dados * @return void */ protected function _getComissaoCorretorAndEmpresa(array $sheetData, array &$dados) { $comissaoCorretor = isset($sheetData['comissao_corretor']) ? $sheetData['comissao_corretor'] : null; $comissaoEmpresa = isset($sheetData['comissao_empresa']) ? $sheetData['comissao_empresa'] : null; if( $comissaoCorretor ){ $dados['comissao_corretor'] = String_Refatorar::parseStringToFloat($comissaoCorretor); } if( $comissaoEmpresa ){ $dados['comissao_empresa'] = String_Refatorar::parseStringToFloat($comissaoEmpresa); } $dados['forcar_base_comissao'] = true; $dbtable = new Model_DbTable_Contrato(); $dbtable->getComissaoCorretorAndEmpresa($dados); unset($dados['forcar_base_comissao']); } protected function _getTipoContrato(array $sheetData, array &$dados) { $colunaTipoContrato = $sheetData['tipo_operacao'] ?? null; $colunaSeguro = $sheetData['com_seguro'] ?? 0; if( stristr($colunaTipoContrato, "Refinanciamento de Portabilidade") ){ $tipo = 'REFIN DA PORTABILIDADE'; } elseif( $colunaTipoContrato == "Refinanciamento" ){ $tipo = "REFINANCIAMENTO"; } elseif( $colunaTipoContrato == "Novo" || $colunaTipoContrato == "Margem Livre" || $colunaTipoContrato == "Cartão" ){ $tipo = "NOVO"; } elseif( $colunaTipoContrato == "Portabilidade" ){ $tipo = "PORTABILIDADE"; } if(empty($tipo)){ throw new Core_Exception("Não foi possível encontrar o tipo de operação para este contrato."); } if( $colunaSeguro == "S" ){ $tipo .= " COM SEGURO"; } $dados['tipo'] = $tipo; } /** * Recebe o endereço do arquivo e cria um array com * as linhas a serem inseridas * @param string $arquivo * @return array */ protected function obtencaoDados(array $arquivo) { if (empty($arquivo)) { return; } $blocos = array_keys($this->colunas); $dados = []; $ns = new Zend_Session_Namespace(); foreach ($arquivo as $linha) { if (in_array($linha['A'], $blocos)) { if ($ns->cod_blocos == $linha['A']) { $ns->cod_blocos = null; $ns->habilitaLinha = false; continue; } $ns->cod_blocos = $linha['A']; //começando ou terminando $ns->habilitaLinha = $ns->habilitaLinha ? false : true; } if ($ns->habilitaLinha && is_numeric($linha['A'])) { $dados[] = $this->linha($linha, $ns->cod_blocos); } } if (count($ns->importacao_prod_banco) < 0) { $ns->cod_blocos = null; $ns->habilitaLinha = false; } return $dados; } protected function linha($linha, $cod) { $dados = array(); $dados['tipo_registro'] = str_pad(substr($cod, 0, 1), 3, "0", STR_PAD_LEFT); $dados['proposta'] = ($col = $this->getColuna('proposta', $cod)) ? $linha[$col] : null; $dados['cpf'] = ($col = $this->getColuna('cpf', $cod)) ? $linha[$col] : null; $dados['nome_cliente'] = ($col = $this->getColuna('nome_cliente', $cod)) ? $linha[$col] : null; $dados['data_proposta'] = ($col = $this->getColuna('data_proposta', $cod)) ? $linha[$col] : null; $dados['data_contrato'] = ($col = $this->getColuna('data_contrato', $cod)) ? $linha[$col] : null; $dados['prazo'] = ($col = $this->getColuna('prazo', $cod)) ? $linha[$col] : null; $dados['cod_promotora'] = ($col = $this->getColuna('cod_promotora', $cod)) ? $linha[$col] : null; $dados['nome_promotora'] = ($col = $this->getColuna('nome_promotora', $cod)) ? $linha[$col] : null; $dados['cod_comissionado'] = ($col = $this->getColuna('cod_comissionado', $cod)) ? $linha[$col] : null; $dados['cod_empregador'] = ($col = $this->getColuna('cod_empregador', $cod)) ? $linha[$col] : null; $dados['nome_empregador'] = ($col = $this->getColuna('nome_empregador', $cod)) ? $linha[$col] : null; $dados['cod_tabela'] = ($col = $this->getColuna('cod_tabela', $cod)) ? $linha[$col] : null; $dados['desc_tabela'] = ($col = $this->getColuna('desc_tabela', $cod)) ? $linha[$col] : null; $dados['taxa_tabela'] = ($col = $this->getColuna('taxa_tabela', $cod)) ? $linha[$col] : null; $dados['valor_financiado'] = ($col = $this->getColuna('valor_financiado', $cod)) ? $linha[$col] : null; $dados['valor_contrato'] = ($col = $this->getColuna('valor_contrato', $cod)) ? $linha[$col] : null; $dados['nome_operador'] = ($col = $this->getColuna('nome_operador', $cod)) ? $linha[$col] : null; $dados['cpf_operador'] = ($col = $this->getColuna('cpf_operador', $cod)) ? $linha[$col] : null; $dados['login'] = ($col = $this->getColuna('login', $cod)) ? $linha[$col] : null; $dados['tipo_operacao'] = ($col = $this->getColuna('tipo_operacao', $cod)) ? $linha[$col] : null; $dados['cod_tipo_pagto'] = ($col = $this->getColuna('cod_tipo_pagto', $cod)) ? $linha[$col] : null; $dados['desc_pagto'] = ($col = $this->getColuna('desc_pagto', $cod)) ? $linha[$col] : null; $dados['tipo_pagto'] = ($col = $this->getColuna('tipo_pagto', $cod)) ? $linha[$col] : null; $dados['data_cred_comis'] = ($col = $this->getColuna('data_cred_comis', $cod)) ? $linha[$col] : null; $dados['valor_lancto'] = ($col = $this->getColuna('valor_lancto', $cod)) ? $linha[$col] : null; $dados['incide_impost'] = ($col = $this->getColuna('incide_impost', $cod)) ? $linha[$col] : null; $dados['valor_base'] = ($col = $this->getColuna('valor_base', $cod)) ? $linha[$col] : null; $dados['perc_comissao'] = ($col = $this->getColuna('perc_comissao', $cod)) ? $linha[$col] : null; $dados['cod_comissao'] = ($col = $this->getColuna('cod_comissao', $cod)) ? $linha[$col] : null; $dados['observacao'] = ($col = $this->getColuna('observacao', $cod)) ? $linha[$col] : null; $dados['data_original'] = ($col = $this->getColuna('data_original', $cod)) ? $linha[$col] : null; $dados['valor_original'] = ($col = $this->getColuna('valor_original', $cod)) ? $linha[$col] : null; $dados['saldo_dia_inicial'] = ($col = $this->getColuna('saldo_dia_inicial', $cod)) ? $linha[$col] : null; $dados['saldo_dia_final'] = ($col = $this->getColuna('saldo_dia_final', $cod)) ? $linha[$col] : null; $dados['cod_hist_fin'] = ($col = $this->getColuna('cod_hist_fin', $cod)) ? $linha[$col] : null; $dados['nome_hist_fin'] = ($col = $this->getColuna('nome_hist_fin', $cod)) ? $linha[$col] : null; $dados['cnpj'] = ($col = $this->getColuna('cnpj', $cod)) ? $linha[$col] : null; $dados['nome_cnpj'] = ($col = $this->getColuna('nome_cnpj', $cod)) ? $linha[$col] : null; $dados['valor_desdobro'] = ($col = $this->getColuna('valor_desdobro', $cod)) ? $linha[$col] : null; $dados['prop_ant'] = ($col = $this->getColuna('prop_ant', $cod)) ? $linha[$col] : null; $dados['pmt_prop_ant'] = ($col = $this->getColuna('pmt_prop_ant', $cod)) ? $linha[$col] : null; $dados['prazo_tot_prop_ant'] = ($col = $this->getColuna('prazo_tot_prop_ant', $cod)) ? $linha[$col] : null; $dados['prazo_refin_prop_ant'] = ($col = $this->getColuna('prazo_refin_prop_ant', $cod)) ? $linha[$col] : null; $dados['prazo_pag_prop_ant'] = ($col = $this->getColuna('prazo_pag_prop_ant', $cod)) ? $linha[$col] : null; $dados['vlr_sld_dev_ctr_ant'] = ($col = $this->getColuna('vlr_sld_dev_ctr_ant', $cod)) ? $linha[$col] : null; $dados['vlr_comissao_pmt'] = ($col = $this->getColuna('vlr_comissao_pmt', $cod)) ? $linha[$col] : null; $dados['num_parcela_paga'] = ($col = $this->getColuna('num_parcela_paga', $cod)) ? $linha[$col] : null; $dados['digitador'] = ($col = $this->getColuna('digitador', $cod)) ? $linha[$col] : null; $dados['digitavalor_limite_adiantamentodor'] = ($col = $this->getColuna('digitavalor_limite_adiantamentodor', $cod)) ? $linha[$col] : null; $dados['percentual_esperado_adiantamento'] = ($col = $this->getColuna('percentual_esperado_adiantamento', $cod)) ? $linha[$col] : null; $dados['tipo_formalizacao'] = ($col = $this->getColuna('tipo_formalizacao', $cod)) ? $linha[$col] : 0; $dados['com_seguro'] = ($col = $this->getColuna('com_seguro', $cod)) ? $linha[$col] : 0; $this->addDataColuna('nao_comissionado_observacao', $cod, $linha, $dados); return $dados; } protected function _getValorFixoEmpresaCorretor(array $sheetData, array &$dados) { $colunaPrazo = isset($sheetData['prazo']) ? $sheetData['prazo'] : 0; if( isset($dados['corretor_id']) && $dados['corretor_id'] > 0 ){ $corretor = new Model_Corretor(); $valorFixoCorretor = $corretor->getValorFixo( $dados['corretor_id'], $dados['banco_id'], $dados['tabela_id'], $dados['convenio_id'], $dados['produto'], $colunaPrazo, $dados['data_emissao'] ); $dados['valor_fixo_corretor'] = $valorFixoCorretor; } if( $dados['empresa_id'] > 0 ){ $empresa = new Model_Empresa(); $valorFixoEmpresa = $empresa->getValorFixo( $dados['empresa_id'], $dados['banco_id'], $dados['tabela_id'], $dados['convenio_id'], $dados['produto'], $colunaPrazo, $dados['data_emissao'] ); $dados['valor_fixo_empresa'] = $valorFixoEmpresa; } } protected function _getValorBrutoLiquido(array $sheetData, array &$dados) { $valorBase = String_Refatorar::parseStringToFloat($sheetData['valor_base']); $valorContrato = String_Refatorar::parseStringToFloat($sheetData['valor_contrato']); $colValorLiquido = $valorBase; if( $dados['tipo'] == "PORTABILIDADE" || $dados['tipo'] == "NOVO"){ $colValorLiquido = $valorContrato; } $dados['valor_bruto'] = number_format($valorContrato, 2, ',', '.'); $dados['valor_liquido'] = number_format($colValorLiquido, 2, ',', '.'); } /** * * @param array $naoImportados * @param string $motivo * @return void */ protected function _addNaoImportado(array $dados, array $sheetData, array &$naoImportados, $motivo = '') { $result = array_push($naoImportados, array( 'numero_contrato' => isset($dados['numero_contrato']) ? print_r($dados['numero_contrato'], true) : null, 'tabela' => isset($sheetData['desc_tabela']) ? $sheetData['desc_tabela'] : null, 'cpf' => isset($sheetData['cpf']) ? $sheetData['cpf'] : null, 'cliente' => isset($sheetData['nome_cliente']) ? $sheetData['nome_cliente'] : null, 'valor' => isset($dados['valor_liquido']) ? $dados['valor_liquido'] : null, 'prazo' => isset($sheetData['prazo']) ? $sheetData['prazo'] : null, 'codigo_atendente' => null, 'codigo_vendedor' => null, 'motivo' => $motivo )); return $result; } /** * @param string $campo * @param $cod * @param $linha * @param array $dados * @param null $default */ protected function addDataColuna( string $campo, $cod, $linha, array &$dados, $default = null ): void { $col = $this->getColuna($campo, $cod); $dados[$campo] = $col ? $linha[$col] : $default; } }
💾 保存文件
← 返回文件管理器