✏️ 正在编辑: Producao.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/library/Core/Banco/Service/Facta/Producao.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Core_Banco_Service_Facta_Producao extends Core_Banco_Planilha { protected $colunas = [ 'codigo_agente' => 'login_corretor', 'convenio' => 'averbador', 'corretor_id' => 'login_corretor', 'data_emissao' => 'data_digitacao', 'data_liberacao' => 'data_pgto_cliente', 'nome_cliente' => 'cliente', 'numero_ade' => 'numero_contrato', 'numero_contrato' => 'codigo_af', 'obs' => 'status_crivo', 'prazo' => 'numeroprestacao', 'valor_bruto' => 'valor_bruto', 'valor_liquido' => 'valor_af', 'valor_prestacao' => 'vlrprestacao', 'tipo_formalizacao' => 'produto', 'saldo_devedor' => 'saldo_devedor', 'vendedor' => 'vendedor', 'tabela' => 'tabela', 'status_proposta' => 'status_proposta', 'taxa_emprestimo' => 'taxa', 'banco_beneficiado' => 'banco', 'agencia_beneficiado' => 'agencia', 'conta_beneficiado' => 'conta', ]; public function importar(array $sheetData, $config = null) { if (count($sheetData) <= 0) { return $this->naoImportados; } foreach ($sheetData as $contrato) { $contrato = (array) $contrato; $dados = [ 'banco_id' => $this->getBancoId(), 'corretor_id' => null, 'empresa_id' => null, 'convenio_id' => null, 'tabela_id' => null, 'cliente_id' => null, 'produto' => null, 'prazo' => 0, 'valor_bruto' => null, 'valor_liquido' => null, 'valor_prestacao' => null, 'numero_contrato' => null, 'data_emissao' => null, 'data_liberacao' => null, 'data_recebimento_comissao' => null, 'digitador' => Yuppie_Auth::getIdentity()->login, 'forma_liberacao' => null, 'comissao_corretor' => null, 'comissao_empresa' => null, 'diferimento_corretor' => null, 'status_proposta' => null, 'subestabelecido_id' => null, 'verificar_contratos' => null, 'seguranca' => null, 'cartao' => 0, 'tipo_formalizacao' => 0 ]; try { $contrato['cpf'] = String_Refatorar::formatarCpf($contrato['cpf']); $this->_getTipoContrato($contrato, $dados); $this->_getProduto($contrato, $dados); $this->_getPrazo($contrato, $dados); $this->_getValorBrutoLiquido($contrato, $dados); $this->_getValorParcela($contrato, $dados); $this->_getEstornado($contrato, $dados); $this->_getNumeroContrato($contrato, $dados); $this->_getNumeroAde($contrato, $dados); $this->_getConvenioIdTabelaId($contrato, $dados); $this->_getCorretorId($contrato, $dados); $this->_getEmpresaId($contrato, $dados); $this->_getClienteId($contrato, $dados, $config); $this->_getDataEmissao($contrato, $dados); $this->_getComissaoCorretorAndEmpresa($contrato, $dados); $this->_getStatusProposta($contrato, $dados); $this->_getDataLiberacao($contrato, $dados); $this->_getOutros($contrato, $dados); $this->_getDigitador($contrato, $dados); $this->_getSubestabelecido($contrato, $dados); $this->_getContratoVerificado($contrato, $dados); $this->_getBancoBeneficiado($contrato, $dados); $this->_getContaBeneficiado($contrato, $dados); $this->_getAgenciaBeneficiado($contrato, $dados); $this->_getNumeroBeneficio($contrato, $dados); $this->_getStatusCartao($contrato, $dados); $this->_getObs($contrato, $dados); $this->_getCodigoBarrasAde($contrato, $dados); $this->_getDataRecebimentoComissao($contrato, $dados); $this->_getTipoFormalizacao($contrato, $dados); $this->_getAnteriorBanco($contrato, $dados); $this->_getAnteriorNumero($contrato, $dados); $this->_getAnteriorParcelasPagas($contrato, $dados); $this->_getAnteriorPrazo($contrato, $dados); $this->_getAnteriorSequencialCompra($contrato, $dados); $this->_getAnteriorTipoQuitacao($contrato, $dados); $this->_getTaxaContrato($contrato, $dados); $this->_getEspecie($contrato, $dados); $this->_getIdadeCliente($contrato, $dados); $this->_getSaldoDevedor($contrato, $dados); $this->setNaoComissionadoMotivo($contrato, $dados); $this->contratosImportados[] = $dados['numero_contrato']; $this->salvarLinha($contrato, $dados); } catch ( Core_Exception $e) { $this->_addNaoImportado($dados, $contrato, $this->naoImportados, $e->getMessage()); } catch ( Zend_Db_Exception $e){ $this->_addNaoImportado($dados, $contrato, $this->naoImportados, "Erro na consulta SQL. " . $e->getMessage()); } } return $this->naoImportados; } protected function _contratoExiste($dbtable, $dados) { $where = "(numero_contrato = '{$dados['numero_contrato']}' OR numero_contrato = '{$dados['numero_ade']}')" . " AND banco_id = {$this->getBancoId()}"; $this->_dadosContrato = $dbtable->fetchRow($where); return $this->_dadosContrato; } protected function _getTipoContrato(array $contrato, array &$dados) { switch ($contrato['tipo_operacao']) { case !empty(stristr($contrato['tipo_operacao'], 'REFIN DA PORTABILIDADE')): $dados['tipo'] = 'REFIN DA PORTABILIDADE'; break; case !empty(stristr($contrato['tipo_operacao'], 'refin')): $dados['tipo'] = 'REFINANCIAMENTO'; break; case !empty(stristr($contrato['tipo_operacao'], 'port')): $dados['tipo'] = 'PORTABILIDADE'; break; case !empty(stristr($contrato['tipo_operacao'], 'CARTÃO CONSIGNADO BENEFÍCIO (REPR LEGAL)')): $dados['tipo'] = 'CARTAO BENEFICIO REP LEGAL'; break; case !empty(stristr($contrato['tipo_operacao'], 'CARTÃO CONSIGNADO BENEFÍCIO')): $dados['tipo'] = 'CARTAO BENEFICIO'; break; case !empty(stristr($contrato['tipo_operacao'], 'CARTÃO DIGITAL RMC')): $dados['tipo'] = 'CARTAO'; break; case !empty(stristr($contrato['tipo_operacao'], 'MARGEM COMPLEMENTAR DIGITAL')): $dados['tipo'] = 'AUMENTO DE MARGEM'; break; default: $dados['tipo'] = 'NOVO'; break; } } protected function _getProduto(array $contrato, array &$dados) { $dadosProduto = explode('-', $contrato['tipo_operacao']); @$colunaCodigoProduto = trim($dadosProduto[0]); $colunaDescricaoProduto = trim($dadosProduto[1]); $codigoProduto = 0; if ($colunaCodigoProduto) { $produto = new Model_Produto(); $dadosProduto = $produto->existe($colunaCodigoProduto, $this->getBancoId()); if ($dadosProduto == null) { $produto->setCodigo($colunaCodigoProduto); $produto->setDescricao($colunaDescricaoProduto); $produto->setBancoId($this->getBancoId()); $produto->setTipo($dados['tipo'] ?? "NOVO"); $result = $produto->salvar($produto); if ($result != null) { $codigoProduto = $colunaCodigoProduto; $dados['tipo'] = $dados['tipo'] ?? "NOVO"; } } else { $codigoProduto = $dadosProduto['codigo']; $dados['tipo'] = $dadosProduto['tipo']; } } $dados['produto'] = $codigoProduto; } protected function _getConvenioIdTabelaId(array $contrato, array &$dados) { $dadosTabela = explode('-', $contrato['tabela']); $colunaCodigoTabela = trim($dadosTabela[0]); $colunaTabela = trim($dadosTabela[1]); $colunaConvenio = $contrato[$this->getColuna('convenio')]; if (!empty($colunaConvenio)) { $dados['convenio_id'] = (new Model_Convenio())->getOrCreateConvenio($colunaConvenio); } if (!empty($colunaCodigoTabela)) { $tipoFormalizacao = stristr($contrato[$this->getColuna('tipo_formalizacao')], 'Digital' ) ? 1 : 0; $dados['tabela_id'] = (new Model_Tabela)->getOrCreateTabelaByCodigo($colunaCodigoTabela, $colunaTabela, $dados['convenio_id'], $this->getBancoId(), $tipoFormalizacao); } if (stristr($colunaTabela, "Cartão Benefício Seg") || stristr($colunaTabela, "GOLD")) { $dados['tipo'] .= " COM SEGURO"; } if (stristr($colunaConvenio, 'FGTS') && $dados['prazo'] > 12) { $dados['prazo'] = $dados['prazo']/12; } } protected function _getClienteId(array $contrato, array &$dados, $config = null) { $rest = new Core_Banco_Service_Facta_Rest($config); $response = $rest->getCliente($contrato['cpf']); $cliente = new Model_Cliente(); $cliente->setId($cliente->existe($contrato['cpf'])->id ?? null); $cliente->setEmpresaId($dados['empresa_id']); $cliente->setCpf($contrato['cpf']); $cliente->setNome($contrato['cliente']); if (!empty($response->cliente)) { $pessoa = current($response->cliente); $dataEmissao = null; $dataNascimento = null; if (!empty($pessoa->EMISSAORG)) { $dataEmissao = Core_Util::convertDate($pessoa->EMISSAORG); if (is_array($dataEmissao)) { throw new Core_Exception("Não foi possível converter a data de emissão para o banco de dados. ({$pessoa->EMISSAORG})."); } } if (!empty($pessoa->DATANASCIMENTO)) { $dataNascimento = Core_Util::convertDate($pessoa->DATANASCIMENTO); if (is_array($dataNascimento)) { throw new Core_Exception("Não foi possível converter a data de emissão para o banco de dados. ({$pessoa->DATANASCIMENTO})."); } } $cliente->setRg($pessoa->RG); $cliente->setOrgaoExpedidor($pessoa->ORGAOEMISSOR); $cliente->setUfExpedidor($pessoa->ESTADORG); $cliente->setDataExpedicao($dataEmissao); $cliente->setDataNascimento($dataNascimento); $cliente->setSexo($pessoa->SEXO); $cliente->setEstadoCivil($pessoa->ESTADOCIVIL); $cliente->setNaturalidade($pessoa->CIDADENATURAL); $cliente->setEndereco($pessoa->ENDERECO . ', ' . $pessoa->NUMERO); $cliente->setComplemento($pessoa->COMPLEMENTO); $cliente->setBairro($pessoa->BAIRRO); $cliente->setCidade($pessoa->CIDADE); $cliente->setUf($pessoa->ESTADO); $cliente->setCep(String_Refatorar::soNumeros($pessoa->CEP)); $cliente->setFone(String_Refatorar::formatarTelefone($pessoa->FONE)); $cliente->setCelular(String_Refatorar::formatarTelefone($pessoa->CELULAR)); $cliente->setTipoMoradia($pessoa->TIPORESIDENCIA); $cliente->setNomePai($pessoa->NOMEPAI); $cliente->setNomeMae($pessoa->NOMEMAE); } $dados['cliente_id'] = $cliente->salvar($cliente); } protected function _getStatusProposta(array $contrato, array &$dados) { $arrayStatus = explode('-', $contrato['status_proposta']); $colunaStatusProposta = trim($arrayStatus[1]) ?? null; if (count($arrayStatus) > 1) { unset($arrayStatus[0]); $colunaStatusProposta = implode(" - ", array_map("trim", $arrayStatus)); } $status = new Model_StatusProposta(); $dadosStatus = $status->existe($colunaStatusProposta); if ($dadosStatus == null) { $status->setDescricao($colunaStatusProposta); $statusId = $status->salvar($status); } else if ($dadosStatus['parent_id']) { $statusId = $dadosStatus['parent_id']; } else { $statusId = $dadosStatus['id']; } $dados['status_proposta'] = $statusId; } protected function _getDataRecebimentoComissao(array $contrato, array &$dados) { // $colunaDtReceb = $contrato['data_efetivacao'] ?? null; // $dataRecebimento = null; // if ( !empty($colunaDtReceb) ) { // $dataRecebimento = Core_Util::convertDate($colunaDtReceb); // if( is_array($dataRecebimento) ){ // throw new Core_Exception("Não foi possível converter a data de recebimento para o banco de dados. ({$colunaDtReceb})"); // } // } // $dados['data_recebimento_comissao'] = $dataRecebimento; } protected function _getCorretorId(array $contrato, array &$dados) { $colLoginCorretor = !empty($contrato['login_corretor']) ? $contrato['login_corretor'] : null; $colVendedor = !empty($contrato['vendedor']) ? $contrato['vendedor'] : null; $codigoAgente = $colVendedor && $colVendedor != "0" ? $colVendedor : $colLoginCorretor; $corretorSenha = new Model_CorretorSenha(); $dados['corretor_id'] = $corretorSenha->getCorretorIdBySenha($codigoAgente, $dados['banco_id']); } protected function _getDigitador(array $contrato, array &$dados) { $colLoginCorretor = !empty($contrato['login_corretor']) ? $contrato['login_corretor'] : null; $colVendedor = !empty($contrato['vendedor']) ? $contrato['vendedor'] : null; if (!empty($colVendedor)) { $dados['digitador'] = $colVendedor; } elseif (!empty($colLoginCorretor)) { $dados['digitador'] = $colLoginCorretor; } else { $dados['digitador'] = Yuppie_Auth::getIdentity()->login; } } protected function _getSaldoDevedor(array $contrato, array &$dados) { $saldoDevedor = $contrato['saldo_devedor'] ? String_Refatorar::parseStringToFloat($contrato['saldo_devedor']) : 0.00; $dados['saldo_banco'] = number_format($saldoDevedor, 2, ',', '.'); } protected function _getIdadeCliente(array $contrato, array &$dados) { $modelCliente = new Model_Cliente(); $cliente = $modelCliente->existe($contrato['cpf']); $colunaData = $cliente->data_nascimento ?? null; if (empty($colunaData) || $colunaData == '0000-00-00') { return; } $dataNascimento = Core_Util::convertDate($colunaData); if (is_array($dataNascimento)) { return; } $now = Zend_Date::now(); $dados['idade_cliente'] = (int)$now->subDate($dataNascimento, Zend_Date::YEAR)->get('YY'); } }
💾 保存文件
← 返回文件管理器