✏️ 正在编辑: Proposta.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/application/models/Proposta.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Model_Proposta { private $_id; private $_empresaId; private $_subestabelecidoId; private $_clienteId; private $_bancoId; private $_tabelaId; private $_convenioId; private $_corretorId; private $_tipo; //NOVO, REFIN, COMPRA private $_prazo; private $_dataEmissao; private $_formaLiberacao; private $_produto; private $_numeroBeneficio; private $_valorBruto; private $_valorLiquido; private $_valorPrestacao; private $_bancoBeneficiado; private $_agenciaBeneficiado; private $_operacaoBeneficiado; private $_contaBeneficiado; private $_digitador; private $_statusProposta; private $_obs; private $_cep; private $_endereco; private $_complemento; private $_bairro; private $_cidade; private $_uf; private $_numeroContrato; private $_numeroAde; private $_especie; private $_digitadoBanco; private $_dataImpressao; private $_usuarioImpressao; private $_usuarioEfetivacao; private $_dataEfetivacao; private $_usuarioDigitado; private $_tokenProposta; private $_statusAnexo; private $_statusAnexoCorretor; private $_saldoBanco; private $_anteriorBanco; private $_anteriorParcelasRestantes; private $_anteriorSaldoDevedor; private $_anteriorNumero; private $_anteriorPrazo; private $_anteriorValorParcela; private $_midiaOrigemId; private $_dataAgendamentoProposta; private $_horaAgendada; private $_tipoFormalizacao; private $_valorReducao; private $_bancoReducao; private $_valorBeneficio; private $_beneficiadoRecebeCartao; private $_bancoCartao; private $_agenciaCartao; private $_captadorId; private $_tipoPix; private $_chavePix; public function getId() { return $this->_id; } public function setId($id) { $this->_id = $id; } public function getEmpresaId() { return $this->_empresaId; } public function setEmpresaId($empresaId) { $this->_empresaId = $empresaId; } public function getSubestabelecidoId() { return $this->_subestabelecidoId; } public function setSubestabelecidoId($subestabelecidoId) { $this->_subestabelecidoId = $subestabelecidoId; } public function getClienteId() { return $this->_clienteId; } public function setClienteId($clienteId) { $this->_clienteId = $clienteId; } public function getBancoId() { return $this->_bancoId; } public function setBancoId($bancoId) { $this->_bancoId = $bancoId; } public function getTabelaId() { return $this->_tabelaId; } public function setTabelaId($tabelaId) { $this->_tabelaId = $tabelaId; } public function getConvenioId() { return $this->_convenioId; } public function setConvenioId($propostaId) { $this->_convenioId = $propostaId; } public function getCorretorId() { return $this->_corretorId; } public function setCorretorId($corretorId) { $this->_corretorId = $corretorId; } public function getTipo() { return $this->_tipo; } public function setTipo($tipo) { $this->_tipo = $tipo; } public function getPrazo() { return $this->_prazo; } public function setPrazo($prazo) { $this->_prazo = $prazo; } public function getDataEmissao() { return $this->_dataEmissao; } public function setDataEmissao($dataEmissao) { if( !empty($dataEmissao) ){ try { $data = new Zend_Date($dataEmissao, Zend_Date::DATES, 'pt'); $dataEmissao = $data->toString('yyyy-MM-dd'); } catch ( Zend_Date_Exception $e ) { echo $e->getMessage(); $dataEmissao = null; } } else { $dataEmissao = null; } $this->_dataEmissao = $dataEmissao; } public function getFormaLiberacao() { return $this->_formaLiberacao; } public function setFormaLiberacao($formaLiberacao) { $this->_formaLiberacao = $formaLiberacao; } public function getProduto() { return $this->_produto; } public function setProduto($produto) { $this->_produto = $produto; } public function getNumeroBeneficio() { return $this->_numeroBeneficio; } public function setNumeroBeneficio($numeroBeneficio) { $this->_numeroBeneficio = $numeroBeneficio; } public function getValorBruto() { return $this->_valorBruto; } public function setValorBruto($valorBruto) { $this->_valorBruto = $valorBruto; } public function getValorLiquido() { return $this->_valorLiquido; } public function setValorLiquido($valorLiquido) { $this->_valorLiquido = $valorLiquido; } public function getBancoBeneficiado() { return $this->_bancoBeneficiado; } public function setBancoBeneficiado($bancoBeneficiado) { $this->_bancoBeneficiado = $bancoBeneficiado; } public function getAgenciaBeneficiado() { return $this->_agenciaBeneficiado; } public function setAgenciaBeneficiado($agenciaBeneficiado) { $this->_agenciaBeneficiado = $agenciaBeneficiado; } public function getContaBeneficiado() { return $this->_contaBeneficiado; } public function setContaBeneficiado($contaBeneficiado) { $this->_contaBeneficiado = $contaBeneficiado; } public function getDigitador() { return $this->_digitador; } public function setDigitador($digitador) { $this->_digitador = $digitador; } public function getStatusProposta() { return $this->_statusProposta; } public function setStatusProposta($statusProposta) { $this->_statusProposta = $statusProposta; } public function getObs() { return $this->_obs; } public function setObs($obs) { $this->_obs = $obs; } public function getCep() { return $this->_cep; } public function setCep($cep) { $this->_cep = $cep; } public function getEndereco() { return $this->_endereco; } public function setEndereco($endereco) { $this->_endereco = $endereco; } public function getComplemento() { return $this->_complemento; } public function setComplemento($complemento) { $this->_complemento = $complemento; } public function getBairro() { return $this->_bairro; } public function setBairro($bairro) { $this->_bairro = $bairro; } public function getCidade() { return $this->_cidade; } public function setCidade($cidade) { $this->_cidade = $cidade; } public function getUf() { return $this->_uf; } public function setUf($uf) { $this->_uf = $uf; } public function getNumeroContrato() { return $this->_numeroContrato; } public function setNumeroContrato($numeroContrato) { $this->_numeroContrato = trim($numeroContrato); } function getNumeroAde() { return $this->_numeroAde; } function setNumeroAde($numeroAde) { $this->_numeroAde = $numeroAde; } public function getOperacaoBeneficiado() { return $this->_operacaoBeneficiado; } public function setOperacaoBeneficiado($operacaoBeneficiado) { $this->_operacaoBeneficiado = $operacaoBeneficiado; } public function getValorPrestacao() { return $this->_valorPrestacao; } public function setValorPrestacao($valorPrestacao) { $this->_valorPrestacao = $valorPrestacao; } public function getEspecie() { return $this->_especie; } public function setEspecie($especie) { $this->_especie = $especie; } public function getDigitadoBanco() { return $this->_digitadoBanco; } public function setDigitadoBanco($digitado) { $this->_digitadoBanco = $digitado; } public function getDataImpressao() { return $this->_dataImpressao; } public function setDataImpressao($dataImpressao) { if( !empty($dataImpressao) ){ try { $data = new Zend_Date($dataImpressao, Zend_Date::DATES, 'pt'); $dataImpressao = $data->toString('yyyy-MM-dd'); } catch ( Zend_Date_Exception $e ) { echo $e->getMessage(); $dataImpressao = null; } } else { $dataImpressao = null; } $this->_dataImpressao = $dataImpressao; } public function getUsuarioImpressao() { return $this->_usuarioImpressao; } public function setUsuarioImpressao($usuarioImpressao) { $this->_usuarioImpressao = $usuarioImpressao; } public function getUsuarioEfetivacao() { return $this->_usuarioEfetivacao; } public function setUsuarioEfetivacao($usuarioEfetivacao) { $this->_usuarioEfetivacao = $usuarioEfetivacao; } public function getDataEfetivacao() { return $this->_dataEfetivacao; } public function setDataEfetivacao($dataEfetivacao) { $this->_dataEfetivacao = $dataEfetivacao; } public function getUsuarioDigitado() { return $this->_usuarioDigitado; } public function setUsuarioDigitado($usuarioDigitado) { $this->_usuarioDigitado = $usuarioDigitado; return $this; } public function getTokenProposta() { return $this->_tokenProposta; } public function setTokenProposta($tokenProposta) { $this->_tokenProposta = $tokenProposta; } public function getStatusAnexo() { return $this->_statusAnexo; } public function setStatusAnexo($statusAnexo) { $this->_statusAnexo = $statusAnexo; } public function getStatusAnexoCorretor() { return $this->_statusAnexoCorretor; } public function setStatusAnexoCorretor($statusAnexoCorretor) { $this->_statusAnexoCorretor = $statusAnexoCorretor; } public function getSaldoBanco() { return $this->_saldoBanco; } public function setSaldoBanco($saldoBanco) { $this->_saldoBanco = $saldoBanco; } function getAnteriorBanco() { return $this->_anteriorBanco; } function getAnteriorParcelasRestantes() { return $this->_anteriorParcelasRestantes; } function getAnteriorSaldoDevedor() { return $this->_anteriorSaldoDevedor; } function getAnteriorNumero() { return $this->_anteriorNumero; } function getAnteriorPrazo() { return $this->_anteriorPrazo; } function getAnteriorValorParcela() { return $this->_anteriorValorParcela; } function setAnteriorBanco($anteriorBanco) { $this->_anteriorBanco = $anteriorBanco; } function setAnteriorParcelasRestantes($anteriorParcelasRestantes) { $this->_anteriorParcelasRestantes = $anteriorParcelasRestantes; } function setAnteriorSaldoDevedor($anteriorSaldoDevedor) { $this->_anteriorSaldoDevedor = $anteriorSaldoDevedor; } function setAnteriorNumero($anteriorNumero) { $this->_anteriorNumero = $anteriorNumero; } function setAnteriorPrazo($anteriorPrazo) { $this->_anteriorPrazo = $anteriorPrazo; } function setAnteriorValorParcela($anteriorValorParcela) { $this->_anteriorValorParcela = $anteriorValorParcela; } function getMidiaOrigemId() { return $this->_midiaOrigemId; } function setMidiaOrigemId($midiaOrigemId) { $this->_midiaOrigemId = $midiaOrigemId; } function getDataAgendamentoProposta() { return $this->_dataAgendamentoProposta; } function setDataAgendamentoProposta($dataAgendamentoProposta) { if( !empty($dataAgendamentoProposta) ){ try { $data = new Zend_Date($dataAgendamentoProposta, Zend_Date::DATES, 'pt'); $dataAgendamentoProposta = $data->toString('yyyy-MM-dd'); } catch ( Zend_Date_Exception $e ) { echo $e->getMessage(); $dataAgendamentoProposta = null; } } else { $dataAgendamentoProposta = null; } $this->_dataAgendamentoProposta = $dataAgendamentoProposta; } public function getHoraAgendada() { return $this->_horaAgendada; } public function setHoraAgendada($horaAgendada) { $this->_horaAgendada = $horaAgendada; } public function getTipoFormalizacao() { return (int)$this->_tipoFormalizacao; } public function setTipoFormalizacao($tipoFormalizacao) { $this->_tipoFormalizacao = (int)$tipoFormalizacao; } public function getValorReducao() { return $this->_valorReducao; } public function setValorReducao($valorReducao) { $this->_valorReducao = $valorReducao; } public function getBancoReducao() { return $this->_bancoReducao; } public function setBancoReducao($bancoReducao) { $this->_bancoReducao = $bancoReducao; } public function getValorBeneficio() { return $this->_valorBeneficio; } public function setValorBeneficio($valorBeneficio) { $this->_valorBeneficio = $valorBeneficio; } public function getBeneficiadoRecebeCartao() { return $this->_beneficiadoRecebeCartao; } public function setBancoCartao($bancoCartao) { $this->_bancoCartao = $bancoCartao; } public function getBancoCartao() { return $this->_bancoCartao; } public function setAgenciaCartao($agenciaCartao) { $this->_agenciaCartao = $agenciaCartao; } public function getAgenciaCartao() { return $this->_agenciaCartao; } public function setCaptadorId($captadorId) { $this->_captadorId = $captadorId; } public function getCaptadorId() { return $this->_captadorId; } public function setBeneficiadoRecebeCartao($beneficiadoRecebeCartao) { $recebeCartao = $beneficiadoRecebeCartao; if ($beneficiadoRecebeCartao == '') { $recebeCartao = null; } $this->_beneficiadoRecebeCartao = $recebeCartao; } public function getTipoPix() { return $this->_tipoPix; } public function setTipoPix($tipoPix) { $this->_tipoPix = $tipoPix; } public function getChavePix() { return $this->_chavePix; } public function setChavePix($chavePix) { $this->_chavePix = $chavePix; } public function __construct($options = null) { if( is_array($options) ){ $this->setOptions($options); } } public function setOptions(array $options) { $methods = get_class_methods($this); foreach ( $options as $key => $value ) { $explode = explode("_", $key); $methodName = ''; foreach ( $explode as $v ) { $methodName .= ucfirst($v); } $key = $methodName != '' ? $methodName : $key; $method = 'set' . ucfirst($key); if( in_array($method, $methods) ){ $this->$method($value); } } return $this; } public function _toArray() { $dbtable = new Model_DbTable_Proposta(); $info = $dbtable->info(); $methods = get_class_methods($this); $data = array(); foreach ( $info['cols'] as $key ) { $col = $key; $explode = explode("_", $key); $methodName = ''; foreach ( $explode as $v ) { $methodName .= ucfirst($v); } $key = $methodName != '' ? $methodName : $key; $method = 'get' . ucfirst($key); if( in_array($method, $methods) ){ $data[$col] = $this->$method(); } } return $data; } /** * Insere ou altera o registro passado por parâmetro * * @param Model_Proposta $proposta * @param Model_Cliente|null $cliente * @return mixed|null * @throws Core_Exception * @throws Zend_Session_Exception */ public function salvar(Model_Proposta $proposta, Model_Cliente $cliente = null) { $dbtable = new Model_DbTable_Proposta(); $dbtableContrato = new Model_DbTable_Contrato(); $dadosCorretor = (new Model_Corretor())->exibir($proposta->getCorretorId()); if( empty($dadosCorretor) ){ throw new Core_Exception('Corretor para a proposta não foi identificado!'); } $proposta->setEmpresaId($dadosCorretor->empresa_id); //atualiza os dados do cliente if( $cliente != null ){ $cliente->setEmpresaId($dadosCorretor->empresa_id); $arrayCliente = $cliente->_toArray(); unset($arrayCliente['id']); if( ($dadosCliente = $cliente->existe($arrayCliente['cpf'])) != null ){ $dadosCliente->setFromArray($arrayCliente); $dadosCliente->save(); $proposta->setClienteId($dadosCliente->id); } else { $proposta->setClienteId($cliente->salvar($cliente)); } } if( $proposta->getId() > 0 ){ $data = $proposta->_toArray(); $ns = new Zend_Session_Namespace(); $acl = $ns->acl; if( !empty(Yuppie_Auth::getIdentity()) && $acl->isAllowed(Yuppie_Auth::getIdentity()->grupo, 'desativar-atualizar-observacao-proposta') ){ unset($data['obs']); } //pega as comissões $dbtableContrato->getComissaoCorretorAndEmpresa($data); $result = $dbtable->update($data, "id = " . $proposta->getId()); if( $result > 0 ){ return $proposta->getId(); } return null; } else { $data = $proposta->_toArray(); //pega as comissões $dbtableContrato->getComissaoCorretorAndEmpresa($data); return $dbtable->insert($data); } } /** * Se o anexo foi adicionado depois da pendência, então considera como reanexo * @param int $propostaId * @return int */ public function verificarReAnexo($propostaId) { $anexo = new Model_DbTable_ContratoAnexo(); $anexos = $anexo->fetchRow("contrato_id = {$propostaId}", "id DESC"); $pendencia = new Model_DbTable_HistoricoPendencia(); $pendencias = $pendencia->fetchRow("contrato_id = {$propostaId}", "id DESC"); $reAnexo = 0; if( count($anexos) > 0 && count($pendencias) > 0 ){ if( current($anexos)['data_cadastro'] > current($pendencias)['data_historico'] ){ $reAnexo = 1; } } if( $reAnexo ){ $dbtable = new Model_DbTable_Proposta(); $model = $dbtable->fetchRow("id = {$propostaId}"); $model->reanexo = 1; $model->save(); } return $reAnexo; } /** * Insere ou altera o registro passado por parâmetro * @param Model_Proposta $proposta */ public function adicionar(Model_Proposta $proposta, Model_Cliente $cliente = null) { $dbtable = new Model_DbTable_Proposta(); $dbtableContrato = new Model_DbTable_Contrato(); $dadosCorretor = (new Model_Corretor())->exibir($proposta->getCorretorId()); if( empty($dadosCorretor) ){ throw new Core_Exception("Corretor não identificado!"); } $proposta->setEmpresaId($dadosCorretor->empresa_id); $cliente->setEmpresaId($dadosCorretor->empresa_id); //atualiza os dados do cliente if( $cliente != null ){ if( ($dadosCliente = $cliente->existe($cliente->getCpf())) != null ){ $cliente->setId($dadosCliente['id']); $proposta->setClienteId($cliente->getId()); $dbtableCliente = new Model_DbTable_Cliente(); $dbtableCliente->update(array( 'empresa_id' => Yuppie_Auth::getIdentity()->empresa_id, 'nome' => $cliente->getNome(), 'cpf' => $cliente->getCpf(), 'rg' => $cliente->getRg(), 'orgao_expedidor' => $cliente->getOrgaoExpedidor(), 'uf_expedidor' => $cliente->getUfExpedidor(), 'data_expedicao' => $cliente->getDataExpedicao(), 'data_nascimento' => $cliente->getDataNascimento(), 'nome_pai' => $cliente->getNomePai(), 'nome_mae' => $cliente->getNomeMae(), 'conjuge' => $cliente->getConjuge(), 'endereco' => $cliente->getEndereco(), 'complemento' => $cliente->getComplemento(), 'bairro' => $cliente->getBairro(), 'cidade' => $cliente->getCidade(), 'uf' => $cliente->getUf(), 'cep' => $cliente->getCep(), 'email' => $cliente->getEmail(), 'celular' => $cliente->getCelular(), 'fax' => $cliente->getFax(), 'fone' => $cliente->getFone(), 'telefone_comercial' => $cliente->getTelefoneComercial(), 'naturalidade' => $cliente->getNaturalidade(), 'senha_contracheque' => $cliente->getSenhaContracheque(), 'renda' => $cliente->getRenda() ), 'id = ' . $cliente->getId()); } else { $proposta->setClienteId($cliente->salvar($cliente)); } } if( $proposta->getId() <= 0 ){ $data = $proposta->_toArray(); //pega as comissões $dbtableContrato->getComissaoCorretorAndEmpresa($data); $result = $dbtable->insert($data); if( $result && $proposta->getTipo() == "REDUCAO DE PARCELA" ){ $proposta->clonarProposta($result, [ 'tipo' => 'COMPLEMENTO DA REDUCAO', 'valor_liquido' => '0,00', 'valor_bruto' => '0,00', 'valor_prestacao' => $proposta->getValorReducao(), 'valor_reducao' => '0,00', 'banco_id' => $proposta->getBancoReducao(), 'banco_reducao' => '0,00', ]); } return $result; } } public function clonarProposta($propostaId, array $parametros) { $modelProposta = $this->exibir($propostaId); if( empty($modelProposta) ){ throw new Core_Exception("Proposta a ser duplicada não foi localizada!"); } $dadosProposta = $modelProposta->toArray(); unset($dadosProposta['id']); unset($dadosProposta['numero_contrato']); $modelCliente = $modelProposta->findParentRow('Model_DbTable_Cliente', 'Cliente'); if( empty($modelCliente) ){ throw new Core_Exception("Cliente não localizado!"); } $dadosCliente = $modelCliente->toArray(); $dados = array_merge($dadosProposta, $parametros); $proposta = new Model_Proposta($dados); $cliente = new Model_Cliente($dadosCliente); $result = $proposta->adicionar($proposta, $cliente); return $result; } /** * @param array $params * @param ArrayAccess $corretor * @param $info * @param string $file * @return array */ public function enviarCapaWhatsapp(array $params, ArrayAccess $corretor, $info, string $file): array { $mimeType = 'application/pdf'; if ($info['extension'] != 'pdf') { $mimeType = 'image/' . $info['extension']; } $whatsapp = Core_Whatsapp_Factory::load(); $whatsapp->sendMessage( String_Refatorar::soNumeros($corretor->celular), "Olá {$corretor->nome}, segue a capa da proposta do cliente {$params['nome_cliente']}" ); $result = $whatsapp->sendFileMessage( String_Refatorar::soNumeros($corretor->celular), "Capa_Proposta_{$params['proposta_id']}.{$info['extension']}", $mimeType, base64_encode(file_get_contents($file)) ); return $result ? ['status' => 1, 'msg' => 'Arquivo enviado com sucesso.'] : ['status' => 0, 'msg' => 'Houve um erro durante o envio da mensagem.']; } /** * @param array $params * @param ArrayAccess $corretor * @param $info * @return mixed * @throws Core_Exception */ public function enviarCapaEmail(array $params, ArrayAccess $corretor, $info) { $mensagem = "Prezado parceiro, segue em anexo, capa do contrato. Cliente: <strong>{$params['nome_cliente']}</strong>.<br>"; $email = new Core_Mail(); $result = $email->enviarEmailCorretor( 'Capa de contrato', $mensagem, $corretor->id, "Capa_Proposta_{$params['proposta_id']}.{$info['extension']}" ); return $result; } protected function _getBaseComissaoValor(array $dados, $valorBruto = 0, $valorLiquido = 0) { $dados['base_comissao_empresa_valor'] = $valorLiquido; $dados['base_comissao_valor'] = $valorLiquido; if( isset($dados['base_comissao_empresa']) && !empty($dados['base_comissao_empresa']) ){ switch ( $dados['base_comissao_empresa'] ) { case "VALOR BRUTO": $dados['base_comissao_empresa_valor'] = $valorBruto; break; } } if( isset($dados['base_comissao']) && !empty($dados['base_comissao']) ){ switch ( $dados['base_comissao'] ) { case "VALOR BRUTO": $dados['base_comissao_valor'] = $valorBruto; break; } } return $dados; } /** * Exclui o registro passado por parâmetro * @param int $id * @return int The number of rows deleted */ public function excluir($id) { if( $id > 0 ){ $dbtableProposta = new Model_DbTable_Proposta(); $result = $dbtableProposta->delete("id = {$id}"); if( $result ){ $modelAnexo = new Model_ContratoAnexo(); $anexos = $modelAnexo->listar(array("contrato_id = ?" => $id)); foreach ($anexos as $registro){ $filename = UPLOAD_PATH . "/{$registro['arquivo']}"; if (file_exists($filename)){ unlink($filename); } Yuppie_Log::write("Exclusão de anexo: " . print_r($registro, true), $this); $modelAnexo->excluir($registro['id']); } } return $result; } return null; } protected function _getSelectProposta(Model_DbTable_Proposta $dbtable, array $columns) { $select = $dbtable->getAdapter()->select()->from(array( 'contratos' => 'tb_contratos' ), array()) ->columns($columns) ->joinInner(array( "clientes" => "tb_clientes" ), "contratos.cliente_id = clientes.id", array()) ->joinInner(array( "corretores" => "tb_corretores" ), "contratos.corretor_id = corretores.id", array()) ->joinLeft(array( 'bancos' => 'tb_bancos' ), "bancos.id = contratos.banco_id", array()) ->joinLeft(array( 'convenios' => 'tb_convenios' ), "convenios.id = contratos.convenio_id", array()) ->joinLeft(array( 'tabelas' => 'tb_tabelas' ), "tabelas.id = contratos.tabela_id", array()) ->joinLeft(array( 'rotas' => "tb_rotas" ), 'corretores.rota_id = rotas.id', array()) ->joinLeft(array( 'empresas' => "tb_empresas" ), "contratos.empresa_id = empresas.id", array()) ->joinLeft(array( 'status_propostas' => 'tb_tipos' ), 'contratos.status_proposta = status_propostas.id', array()) ->where("contratos.excluido<>1") ->where("contratos.tipo_registro = 0") ->where("contratos.empresa_id = 1"); return $select; } /** * Retorna uma lista * @param string $where * @param string $order * @param int $count * @param int $offset * @return array */ public function listar($fields = array(), $page = null, $limit = null, $order = "contratos.id ASC", $range = null) { $dbtable = new Model_DbTable_Proposta(); $select = $dbtable->getAdapter()->select(); $params = ["contratos.excluido<>1 AND contratos.tipo_registro = 0"]; $having = null; $selectPendentes = $dbtable->getAdapter()->select()->from('tb_historico_pendencias', array( 'contrato_id', 'id' )) ->where("excluido<>1 AND resolvida <> 1"); $columns = array('id', 'tabela_id', 'convenio_id', 'data_cadastro', 'data_emissao', 'corretor_id', 'prazo', 'data_impressao', 'usuario_impressao', 'data_efetivacao', 'usuario_efetivacao', 'numero_contrato', 'digitacao_rapida', 'descricao_pendencia', 'motivo_fraude', 'data_validacao_fraude', 'reanexo', 'status', 'digitado_banco', 'tipo', 'valor_liquido', 'valor_bruto', 'valor_prestacao' ); $select->from(array( 'contratos' => "tb_contratos" ), $columns) ->joinInner(array( 'clientes' => "tb_clientes" ), 'contratos.cliente_id = clientes.id', array( 'cliente' => 'nome', 'cpf', 'cliente_id' => 'id' )) ->joinLeft(array( 'corretores' => "tb_corretores" ), 'contratos.corretor_id = corretores.id', array( 'corretor' => 'nome', 'corretor_desativado' )) ->joinLeft(array( 'produtos' => "tb_produtos" ), 'contratos.produto = produtos.id', array( 'produto' => 'CONCAT(produtos.codigo, " - ", produtos.tipo)' )) ->joinLeft(array( 'rotas' => "tb_rotas" ), 'corretores.rota_id = rotas.id', array()) ->joinLeft(array( 'empresas' => "tb_empresas" ), "contratos.empresa_id = empresas.id", array( 'empresa' => 'nome' )) ->joinLeft(array( 'convenios' => "tb_convenios" ), "contratos.convenio_id = convenios.id", array( 'convenio' => 'nome' )) ->joinLeft(array( 'bancos' => "tb_bancos" ), "contratos.banco_id = bancos.id", array( 'banco' => 'nome' )) ->joinLeft(array( 'pendencias' => $selectPendentes ), 'pendencias.contrato_id = contratos.id', array( 'qtd_pendencias' => 'count(pendencias.id)' )) ->joinLeft(array( 'usuarios_digitadores' => 'tb_usuarios' ), 'contratos.usuario_digitado = usuarios_digitadores.id', array( 'usuario_digitador' => 'nome' )) ->joinLeft(array( 'usuarios_fraude' => 'tb_usuarios' ), 'contratos.usuario_fraude = usuarios_fraude.id', array( 'usuario_fraude_nome' => 'nome' )) ->group('contratos.id'); $ns = new Zend_Session_Namespace(); if (!$ns->acl->isAllowed(Yuppie_Auth::getIdentity()->grupo, 'visualizar-propostas-filiais')) { $params[] = "contratos.empresa_id = " . Yuppie_Auth::getIdentity()->empresa_id; } //não exibe os contratos de cartão, caso esteja com a permissão setada. if( !$ns->acl->isAllowed(Yuppie_Auth::getIdentity()->grupo, 'permitir-exibir-cartao') ){ $params[] = 'contratos.cartao <> 1'; } if (Yuppie_Auth::getIdentity()->grupo == 'Supervisor') { $select->where('rotas.gerente_id = ' . Yuppie_Auth::getIdentity()->id); } elseif (Yuppie_Auth::getIdentity()->grupo == 'Gerente Regional') { $select->joinLeft(array( 'supervisores' => 'tb_gerente_rota' ), 'supervisores.id = rotas.gerente_id', array()); $select->where('supervisores.gerente_id = ' . Yuppie_Auth::getIdentity()->id); } elseif (Yuppie_Auth::getIdentity()->grupo == "Corretor") { $params[] = "contratos.corretor_id = " . Yuppie_Auth::getIdentity()->id; } elseif (Yuppie_Auth::getIdentity()->forma_equipe) { $select->joinInner(['equipe' => 'tb_usuarios_equipe'], 'contratos.corretor_id = equipe.corretor_id AND equipe.excluido <> 1', []); } elseif ( isset(Yuppie_Auth::getIdentity()->corretor_id) && Yuppie_Auth::getIdentity()->corretor_id > 0 && !$ns->acl->isAllowed(Yuppie_Auth::getIdentity()->grupo, 'visualizar-corretores-callcenter')) { $params[] = "contratos.corretor_id = " . Yuppie_Auth::getIdentity()->corretor_id; } $where = null; if(!empty($fields['anexo_capa'])){ $selectCapaContrato = $dbtable->getAdapter()->select()->from('tb_contratos_anexos', array("*")) ->joinInner(array( 'tipos' => "tb_tipos" ), "tb_contratos_anexos.tipo_id = tipos.id AND tipos.descricao = 'Capa do contrato'", array()) ->where("tb_contratos_anexos.excluido <> 1"); $select->joinLeft(array( 'capa_contrato' => $selectCapaContrato ), 'capa_contrato.contrato_id = contratos.id', array( 'anexo_capa' => 'arquivo' )); } if(!empty($fields['anexo_contrato'])){ $selectAnexoContrato = $dbtable->getAdapter()->select()->from('tb_contratos_anexos', array("*")) ->joinInner(array( 'tipos' => "tb_tipos" ), "tb_contratos_anexos.tipo_id = tipos.id AND tipos.descricao = 'Contrato'", array()) ->where("tb_contratos_anexos.excluido <> 1"); $select->joinLeft(array( 'contrato' => $selectAnexoContrato ), 'contrato.contrato_id = contratos.id', array( 'anexo_contrato' => 'arquivo' )); } if(!empty($fields['anexo_boleto'])){ $selectBoleto = $dbtable->getAdapter()->select()->from('tb_contratos_anexos', array("*")) ->joinInner(array( 'tipos' => "tb_tipos" ), "tb_contratos_anexos.tipo_id = tipos.id AND tipos.descricao = 'Boleto'", array()) ->where("tb_contratos_anexos.excluido <> 1"); $select->joinLeft(array( 'boleto' => $selectBoleto ), 'boleto.contrato_id = contratos.id', array( 'anexo_boleto' => 'arquivo' )); } if(!empty($fields['anexo_contrato_assinado'])){ $selectContratoAssinado = $dbtable->getAdapter()->select()->from('tb_contratos_anexos', array("*")) ->joinInner(array( 'tipos' => "tb_tipos" ), "tb_contratos_anexos.tipo_id = tipos.id AND tipos.descricao = 'Contrato assinado'", array()) ->where("tb_contratos_anexos.excluido <> 1"); $select->joinLeft(array( 'contrato_assinado' => $selectContratoAssinado ), 'contrato_assinado.contrato_id = contratos.id', array( 'anexo_contrato_assinado' => 'arquivo' )); } if(!empty($fields['anexo_formulario'])){ $selectFormulario = $dbtable->getAdapter()->select()->from('tb_contratos_anexos', array("*")) ->joinInner(array( 'tipos' => "tb_tipos" ), "tb_contratos_anexos.tipo_id = tipos.id AND tipos.descricao = 'Formulário digitalizado'", array()) ->where("tb_contratos_anexos.excluido <> 1"); $select->joinLeft(array( 'formulario' => $selectFormulario ), 'formulario.contrato_id = contratos.id', array( 'anexo_formulario' => 'arquivo' )); } if (isset($fields['digitado_banco']) && $fields['digitado_banco'] != '') { if ($fields['digitado_banco'] == 4){ $params[] = "contratos.status = 3"; } elseif( $fields['digitado_banco'] == 1 ){ $params[] = "digitado_banco = '" . $fields['digitado_banco'] . "'"; } elseif( $fields['digitado_banco'] == -1 ){ $having[] = "qtd_pendencias > 0 OR digitado_banco = -1"; } else { if ($fields['digitado_banco'] > 1) { $params[] = "digitado_banco = '" . $fields['digitado_banco'] . "'"; }else{ //Não digitado = 0, exibe tb os stauts 2,3,5 e 6 $params[] = "(digitado_banco = 0 OR digitado_banco IS NULL OR digitado_banco = '' OR digitado_banco IN (2,3,5,6))"; //remove da exibição os que tem pendência $having[] = "qtd_pendencias < 1"; } } } if( isset($fields['antifraude']) && !empty($fields['antifraude']) ){ $params[] = "contratos.status not in (0,2)"; } elseif(empty($fields['digitado_banco']) || $fields['digitado_banco'] != 4){ if (Yuppie_Auth::getIdentity()->grupo == 'Corretor'){ $params[] = "(contratos.status IN (0,1,2) or contratos.status is null)"; }else{ $params[] = "(contratos.status IN (0,2) or contratos.status is null)"; } } if( isset($fields['anexo_formulario']) && !empty($fields['anexo_formulario']) ){ if( $fields['anexo_formulario'] == "Sim" ){ $params[] = "anexo_formulario IS NOT NULL"; } elseif( $fields['anexo_formulario'] == "Nao" ){ $params[] = "anexo_formulario IS NULL"; } } if( isset($fields['status']) && !empty($fields['status']) ){ $params[] = "contratos.status = {$fields['status']}"; } if( isset($fields['numero_contrato']) && $fields['numero_contrato'] != '' ){ $params[] = "numero_contrato = '" . $fields['numero_contrato'] . "'"; } if( isset($fields['numero_ade']) && $fields['numero_ade'] != '' ){ $params[] = "numero_ade = '" . $fields['numero_ade'] . "'"; } if( isset($fields['corretor_id']) && !empty($fields['corretor_id']) ){ $params[] = 'contratos.corretor_id = ' . $fields['corretor_id']; } if( isset($fields['cpf']) && !empty($fields['cpf']) ){ $params[] = "clientes.cpf = '" . String_Refatorar::formatarCpf($fields['cpf']) . "'"; } if( isset($fields['status_proposta']) && $fields['status_proposta'] != '' ){ $params[] = "status_proposta = '" . $fields['status_proposta'] . "'"; } if( isset($fields['banco_id']) && $fields['banco_id'] != '' ){ $params[] = "contratos.banco_id = '" . $fields['banco_id'] . "'"; } if( isset($fields['id_corretor']) && $fields['id_corretor'] != '' ){ $params[] = "corretores.id = '" . $fields['id_corretor'] . "'"; } if( isset($fields['digitador']) && $fields['digitador'] != '' ){ $params[] = "digitador like '%" . $fields['digitador'] . "%'"; } if( isset($fields['empresa_id']) && !empty($fields['empresa_id']) ){ $params[] = "contratos.empresa_id = " . $fields['empresa_id']; } if( isset($fields['tipo_produto']) && $fields['tipo_produto'] != '' ){ $params[] = "contratos.tipo = '" . $fields['tipo_produto'] . "'"; } if( isset($fields['midia_origem_id']) && !empty($fields['midia_origem_id']) ){ $params[] = "contratos.midia_origem_id = " . $fields['midia_origem_id']; } if( isset($fields['usuario_impresso']) && !empty($fields['usuario_impresso']) ){ if( $fields['usuario_impresso'] == "Sim" ){ $params[] = "usuario_impressao IS NOT NULL"; } elseif( $fields['usuario_impresso'] == "Nao" ){ $params[] = "usuario_impressao IS NULL"; } } if( isset($fields['usuario_efetivacao']) && !empty($fields['usuario_efetivacao']) ){ $params[] = "usuario_efetivacao = '" . $fields['usuario_efetivacao'] . "'"; } if (!empty($fields['impresso_por'])) { $params[] = "usuario_impressao IN('" . implode("','", $fields['impresso_por']) . "')"; } if(!empty($fields['grupo_comissao'])){ $select->joinInner(['tipo' => 'tb_tipos'], 'corretores.grupo_comissao = tipo.id', ['grupo_comissao' => 'descricao']); $params[] = "corretores.grupo_comissao = ".$fields['grupo_comissao']; } if( isset($fields['data_emissao_de']) && $fields['data_emissao_de'] ){ $data = new Zend_Date($fields['data_emissao_de'], 'dd/MM/yyyy'); $params[] = "data_emissao >= '" . $data->get('yyyy-MM-dd') . "'"; } if( isset($fields['data_emissao_a']) && $fields['data_emissao_a'] ){ $data = new Zend_Date($fields['data_emissao_a'], 'dd/MM/yyyy'); $params[] = "data_emissao <= '" . $data->get('yyyy-MM-dd') . "'"; } if( !empty($fields['data_digitacao_de']) ){ if( !Zend_Date::isDate($fields['data_digitacao_de'], 'dd/MM/yyyy') ){ throw new Core_Exception("Informe uma data de digitação válida!"); } $data = new Zend_Date($fields['data_digitacao_de'], 'dd/MM/yyyy'); $params[] = "contratos.data_cadastro >= '" . $data->get('yyyy-MM-dd') . " 00:00:00'"; } if( !empty($fields['data_digitacao_a']) ){ if( !Zend_Date::isDate($fields['data_digitacao_a'], 'dd/MM/yyyy') ){ throw new Core_Exception("Informe uma data de digitação válida!"); } $data = new Zend_Date($fields['data_digitacao_a'], 'dd/MM/yyyy'); $params[] = "contratos.data_cadastro <= '" . $data->get('yyyy-MM-dd') . " 23:59:59'"; } if( isset($fields['callcenter']) && !empty($fields['callcenter']) ){ $select->joinLeft(array( 'usuarios' => 'tb_usuarios' ), 'contratos.corretor_id = usuarios.corretor_id', array()) ->joinLeft(array( 'base' => 'tb_callcenter_base' ), 'clientes.cpf = base.cpf', array()) ->joinLeft(array( 'atendimentos' => 'tb_callcenter_atendimentos' ), 'usuarios.id = atendimentos.usuario AND base.id = atendimentos.cliente_id', array( 'atendimento_id' => 'MAX(atendimentos.id)' )); if( $fields['callcenter'] == "SIM" ){ $params[] = ("atendimentos.id IS NOT NULL"); } elseif( $fields['callcenter'] == "NAO" ){ $params[] = ("atendimentos.id IS NULL"); } } if( isset($fields['gerente_id']) && !empty($fields['gerente_id']) ){ $params[] = "rotas.gerente_id = {$fields['gerente_id']}"; } if( isset($fields['convenio_id']) && !empty($fields['convenio_id']) ){ $params[] = "contratos.convenio_id = {$fields['convenio_id']}"; } if( isset($fields['cliente_id']) && !empty($fields['cliente_id']) ){ $params[] = "contratos.cliente_id = {$fields['cliente_id']}"; } if (!empty($fields['captador_id'])) { $params[] = 'contratos.captador_id = ' . $fields['captador_id']; } if( count($params) > 0 ){ $where = implode(' AND ', $params); } if( $where != null ) $select->where($where); if( $having != null ) $select->having(implode(" AND ", $having)); if( $order != null ){ $select->order($order); } if ($page) { $paginator = Zend_Paginator::factory($select); $paginator->setCurrentPageNumber($page); if( $limit && is_numeric($limit) ){ $paginator->setItemCountPerPage($limit); } if( $range && is_numeric($range) ){ $paginator->setPageRange($range); } return $paginator; } return $dbtable->getAdapter()->fetchAll($select); } //Buscar a lista dos Contratos Efetivados //Para gerar um relatório no menu Proposta/Efetivação public function listarEfetivados($fields = array(), $page = null, $limit = null, $order = "contratos.id ASC", $range = null) { $dbtable = new Model_DbTable_Proposta(); $params = array( "contratos.tipo_registro = 1" ); $having = null; $ns = new Zend_Session_Namespace(); if( Yuppie_Auth::getIdentity()->grupo == "Corretor" ){ $params[] = "contratos.corretor_id = " . Yuppie_Auth::getIdentity()->id; } elseif( isset(Yuppie_Auth::getIdentity()->corretor_id) && Yuppie_Auth::getIdentity()->corretor_id > 0 && !$ns->acl->isAllowed(Yuppie_Auth::getIdentity()->grupo, 'visualizar-corretores-callcenter') ){ $params[] = "contratos.corretor_id = " . Yuppie_Auth::getIdentity()->corretor_id; } $where = null; if( isset($fields['status']) && !empty($fields['status']) ){ $params[] = "contratos.status = {$fields['status']}"; } if( isset($fields['numero_contrato']) && $fields['numero_contrato'] != '' ){ $params[] = "numero_contrato = '" . $fields['numero_contrato'] . "'"; } if( isset($fields['numero_ade']) && $fields['numero_ade'] != '' ){ $params[] = "numero_ade = '" . $fields['numero_ade'] . "'"; } if( isset($fields['corretor_id']) && !empty($fields['corretor_id']) ){ $params[] = 'contratos.corretor_id = ' . $fields['corretor_id']; } if( isset($fields['cpf']) && !empty($fields['cpf']) ){ $params[] = "clientes.cpf = '" . String_Refatorar::formatarCpf($fields['cpf']) . "'"; } if( isset($fields['banco_id']) && $fields['banco_id'] != '' ){ $params[] = "contratos.banco_id = '" . $fields['banco_id'] . "'"; } if( isset($fields['id_corretor']) && $fields['id_corretor'] != '' ){ $params[] = "contratos.corretor_id = '" . $fields['id_corretor'] . "'"; } if( isset($fields['tipo_produto']) && $fields['tipo_produto'] != '' ){ $params[] = "contratos.tipo = '" . $fields['tipo_produto'] . "'"; } if( isset($fields['data_emissao_de']) && $fields['data_emissao_de'] ){ $data = new Zend_Date($fields['data_emissao_de'], 'dd/MM/yyyy'); $params[] = "data_emissao >= '" . $data->get('yyyy-MM-dd') . "'"; } if( isset($fields['data_emissao_a']) && $fields['data_emissao_a'] ){ $data = new Zend_Date($fields['data_emissao_a'], 'dd/MM/yyyy'); $params[] = "data_emissao <= '" . $data->get('yyyy-MM-dd') . "'"; } if( isset($fields['data_digitacao_de']) && $fields['data_digitacao_de'] && empty($fields['data_digitacao_a']) ){ $data = new Zend_Date($fields['data_digitacao_de'], 'dd/MM/yyyy'); $params[] = "contratos.data_cadastro >= '" . $data->get('yyyy-MM-dd') . "'"; } if( isset($fields['data_digitacao_a']) && $fields['data_digitacao_a'] && empty($fields['data_digitacao_de']) ){ $data = new Zend_Date($fields['data_digitacao_a'], 'dd/MM/yyyy'); $params[] = "contratos.data_cadastro <= '" . $data->get('yyyy-MM-dd') . "'"; } if( isset($fields['convenio_id']) && !empty($fields['convenio_id']) ){ $params[] = "contratos.convenio_id = {$fields['convenio_id']}"; } if( count($params) > 0 ){ $where = implode(' AND ', $params); } $select = $dbtable->getAdapter()->select()->from(array( 'contratos' => "tb_contratos" ), array( 'qtd' => 'contratos.id' )) ->joinInner(array( 'clientes' => "tb_clientes" ), 'contratos.cliente_id = clientes.id', array( 'cliente' => 'nome', 'cpf' )); if( $where != null ) $select->where($where); if( $order != null ){ $select->order($order); } return $dbtable->getAdapter()->fetchCol($select); } /** * * @param array $fields * @return type * * Buscar a lista dos Contratos Efetivados * Para gerar um relatório no menu Proposta/Efetivação */ public function efetivadoStatus($fields = []) { $params = []; $ns = new Zend_Session_Namespace(); if (Yuppie_Auth::getIdentity()->grupo == "Corretor") { $params[] = "contratos.corretor_id = " . Yuppie_Auth::getIdentity()->id; } elseif (!empty(Yuppie_Auth::getIdentity()->corretor_id) && !$ns->acl->isAllowed(Yuppie_Auth::getIdentity()->grupo, 'visualizar-corretores-callcenter')) { $params[] = "contratos.corretor_id = " . Yuppie_Auth::getIdentity()->corretor_id; } if (!empty($fields['digitado_banco'])) { $params[] = "contratos.digitado_banco IN (" . implode(',', $fields['digitado_banco']) . ")"; } if (!empty($fields['numero_contrato'])) { $params[] = "numero_contrato = '" . $fields['numero_contrato'] . "'"; } if (!empty($fields['numero_ade'])) { $params[] = "numero_ade = '" . $fields['numero_ade'] . "'"; } if (!empty($fields['corretor_id'])) { $params[] = 'contratos.corretor_id = ' . $fields['corretor_id']; } if (!empty($fields['cpf'])) { $params[] = "clientes.cpf = '" . String_Refatorar::formatarCpf($fields['cpf']) . "'"; } if (!empty($fields['banco_id'])) { $params[] = "contratos.banco_id = '" . $fields['banco_id'] . "'"; } if (!empty($fields['id_corretor'])) { $params[] = "contratos.corretor_id = '" . $fields['id_corretor'] . "'"; } if (!empty($fields['tipo_produto'])) { $params[] = "contratos.tipo = '" . $fields['tipo_produto'] . "'"; } if (!empty($fields['data_emissao_de'])) { $data = new Zend_Date($fields['data_emissao_de'], 'dd/MM/yyyy'); $params[] = "data_emissao >= '" . $data->get('yyyy-MM-dd') . "'"; } if (!empty($fields['data_emissao_a'])) { $data = new Zend_Date($fields['data_emissao_a'], 'dd/MM/yyyy'); $params[] = "data_emissao <= '" . $data->get('yyyy-MM-dd') . "'"; } if (!empty($fields['data_digitacao_de'])) { $data = new Zend_Date($fields['data_digitacao_de'], 'dd/MM/yyyy'); $params[] = "contratos.data_cadastro >= '" . $data->get('yyyy-MM-dd') . " 00:00:00'"; } if (!empty($fields['data_digitacao_a'])) { $data = new Zend_Date($fields['data_digitacao_a'], 'dd/MM/yyyy'); $params[] = "contratos.data_cadastro <= '" . $data->get('yyyy-MM-dd') . " 23:59:59'"; } if (!empty($fields['convenio_id'])) { $params[] = "contratos.convenio_id = {$fields['convenio_id']}"; } if (count($params) > 0) { $where = implode(' AND ', $params); } $dbtable = new Model_DbTable_Proposta(); $select = $dbtable->getAdapter()->select() ->from(array('contratos' => 'tb_contratos'), array('total' => 'COUNT(DISTINCT contratos.id)', 'digitado_banco', 'digitador')) ->where("contratos.excluido<>1") ->group(array('digitado_banco', 'digitador')) ->order("total DESC"); if ($fields['tipo_relatorio'] == 2) { $select->where("contratos.tipo_registro = 1 and contratos.usuario_efetivacao is not null AND contratos.usuario_efetivacao <> ''"); } else { $select->where("contratos.tipo_registro = 0"); } if (!empty($where)) { $select->where($where); } return $dbtable->getAdapter()->fetchAll($select); } public function getUsuariosEfetivacao($order = null) { $dbtable = new Model_DbTable_Proposta(); $select = $dbtable->getAdapter()->select()->from(array( 'contratos' => "tb_contratos" ), array( 'contratos.usuario_efetivacao', 'contratos.id' )) ->where('usuario_efetivacao is not null') ->where('contratos.excluido <> 1') ->where('contratos.tipo_registro = 1') ->group('contratos.usuario_efetivacao'); if( $order != null ){ $select->order($order); } return $dbtable->getAdapter()->fetchCol($select); } /** * Retorna um fetchRow do item passado por parâmetro * @param int $id * @return Zend_Db_Table_Row_Abstract | null */ public function exibir($id) { $dbtable = new Model_DbTable_Proposta(); return $dbtable->fetchRow(["id = ?" => $id]); } /** * @param $data * @return null|Zend_Db_Table_Row_Abstract */ public function existe($data) { $dbtable = new Model_DbTable_Proposta(); $where = []; if(!empty($data['tipo'])){ $where['tipo = ?'] = $data['tipo']; } if(!empty($data['banco_id'])){ $where['banco_id = ?'] = $data['banco_id']; } if(!empty($data['tabela_id'])){ $where['tabela_id = ?'] = $data['tabela_id']; } if(!empty($data['convenio_id'])){ $where['convenio_id = ?'] = $data['convenio_id']; } if(!empty($data['cliente_id'])){ $where['cliente_id = ?'] = $data['cliente_id']; } if(!empty($data['valor_liquido'])){ $where['valor_liquido = ?'] = $data['valor_liquido']; } if(!empty($data['valor_bruto'])){ $where['valor_bruto = ?'] = $data['valor_bruto']; } return $dbtable->fetchRow($where); } /** * Transforma a proposta em contrato */ public function efetivar($id) { if( $id > 0 ){ $dbtable = new Model_DbTable_Proposta(); $proposta = $dbtable->fetchRow(["id = ?" => $id]); if( !$proposta ){ return null; } $banco = new Model_Banco(); $dadosBanco = $banco->exibir($proposta->banco_id); if( $dadosBanco->permitir_contrato_autonumeracao == 1 && empty($proposta->numero_contrato) ){ $proposta->numero_contrato = $proposta->id; $proposta->save(); } if ($dbtable->podeEfetivar($proposta->id)) { $statusEfetivacao = $dadosBanco->efetivar_finalizar == 1 ? 43 : 66; $result = $dbtable->efetivarProposta($id, $statusEfetivacao); $dadosContrato = $dbtable->fetchRow(["id = ?" => $id]); if (!empty($dadosContrato)) { new Model_FisicosPendentes($dadosContrato); } return $result; } } return null; } public function definirDigitadoBanco($id, $status) { if( $id > 0 ){ $dbtable = new Model_DbTable_Proposta(); return $dbtable->update( array( 'digitado_banco' => (int) $status, 'usuario_digitado' => Yuppie_Auth::getIdentity()->id ), "id = {$id}" ); } return null; } public function registrarImpressao($id) { $dbtable = new Model_DbTable_Proposta(); return $dbtable->registrarImpressao( Zend_Date::now()->get('yyyy-MM-dd HH:mm:ss'), Yuppie_Auth::getIdentity()->login, $id ); } public function getUsuariosDigitados($order = null) { $dbtable = new Model_DbTable_Proposta(); $select = $dbtable->getAdapter()->select()->from(array( 'contratos' => "tb_contratos" ), array( 'contratos.usuario_digitado' )) ->joinInner(array( 'usuarios' => 'tb_usuarios' ), 'usuarios.id = contratos.usuario_digitado', array( 'nome' )) ->where('usuario_digitado IS NOT NULL') ->where('contratos.excluido <> 1') ->group('contratos.usuario_digitado'); if( $order != null ){ $select->order($order); } return $dbtable->getAdapter()->fetchAll($select); } public function validarAumentoSalarial($proposta) { $convenioModel = new Model_Convenio(); $convenio = $convenioModel->getConvenioAumentoSalario($proposta->getConvenioId()); if( $proposta->getTipo() != "AUMENTO SALARIAL" && $convenio ){ return true; } } public function fraude($contratoId, $data = null) { $dataNow = new Zend_Date(); $dbtable = new Model_DbTable_Proposta(); $dbtableHistorico = new Model_DbTable_EsteiraAntiFraudeHistorico(); $motivoFraude = array(); $result = null; $verificarFraude = $this->_verificarFraude($contratoId, $motivoFraude); if( $verificarFraude ){ //status 1 - Fraude (Aguardando) $result = $dbtable->update(array( 'status' => 1, 'motivo_fraude' => $motivoFraude ), "id = $contratoId"); if( $result && !empty($data) ){ $dados = [ 'cpf_cliente' => $data['cpf'], 'nome_cliente' => $data['nome'], 'contrato_id' => $contratoId, 'numero_protocolo' => $data['numero_contrato'], 'status' => 1, 'motivo_fraude' => $motivoFraude, 'data_cadastro' => $dataNow->now()->get('yyyy-MM-dd HH:mm:ss'), 'usuario_fraude' => Yuppie_Auth::getIdentity()->id ]; $dbtableHistorico->insert($dados); } } return $result; } public function _verificarFraude($contratoId, &$motivoFraude) { if( $contratoId ){ $dados = $this->exibir($contratoId); } if( empty($dados) ){ return null; } //se a proposta tiver sido aprovada (status 2) não é necessário verificar if( $dados->status == 2 ){ return null; } $dadosBanco = $dados->findParentRow("Model_DbTable_Banco"); if( !$dadosBanco ){ return null; } if( $dadosBanco->anti_fraude == 1 ){ //verifica se o cliente já possui fraude ou ação judicial if( $dados->cliente_id ) { $dbtable = new Model_DbTable_Contrato(); $select = $dbtable->getAdapter()->select() ->from(array('contratos' => 'tb_contratos'), array('id')) ->joinLeft(array('contratos_judiciais' => 'tb_contratos_acoes'), 'contratos_judiciais.contrato_id = contratos.id', array()) ->where("contratos_judiciais.id IS NOT NULL OR contratos.status = 3") ->where("contratos.cliente_id = $dados->cliente_id") ->where("contratos.excluido <> 1"); $contratos = $dbtable->getAdapter()->fetchAll($select); if (count($contratos) > 0) { $motivoFraude = "Cliente possui fraude ou ação judicial registrada no sistema."; return true; } } if ($dados->corretor_id) { $modelCorretor = new Model_Corretor(); $dadosCorretor = $modelCorretor->exibir($dados->corretor_id); //caso o nível de esteira do corretor seja livre, //não realiza o restante das validações if ($dadosCorretor->nivel_esteira == 0) { return false; } //caso o nível de esteira do corretor seja aprovador, //obriga cair no anti-fraude e não realiza o restante das validações if ($dadosCorretor->nivel_esteira == 1) { $motivoFraude = "Corretor com esteira aprovador."; return true; } //verifica se o corretor já possui fraude $dbtable = new Model_DbTable_Contrato(); $select = $dbtable->getAdapter()->select() ->from(array('contratos' => 'tb_contratos'), array('id')) ->joinInner(array('contratos_judiciais' => 'tb_contratos_acoes'), 'contratos_judiciais.contrato_id = contratos.id', array('acao_id' => 'id')) ->where("contratos_judiciais.resposta_analise LIKE 'FRAUDE' AND contratos.corretor_id = " . $dados->corretor_id) ->where("contratos.excluido<>1"); $contratos = $dbtable->getAdapter()->fetchAll($select); if (count($contratos) > 0) { $motivoFraude = "Corretor possui fraude registrada no sistema."; return true; } //verifica se o corretor e novo, cadastrado a menos de X dias. $date = new Zend_Date($dadosCorretor->data_cadastro); $diferencaDias = floor((((time() - $date->get()) / 60) / 60) / 24); if( $diferencaDias < 30 ){ $motivoFraude = "Cadastrado a menos de 30 dias"; return true; } //verifica se o valor e maior que a media de producao $mediaProducao = $this->mediaProducaoCorretor($dados->corretor_id); $valorLiquido = Core_FilterValor::filter($dados->valor_liquido); if( $valorLiquido > $mediaProducao ){ $motivoFraude = "Valor da proposta maior que a média de produção."; return true; } } //verifica se o valor da proposta é maior que o valor base do convenio if( $dados->convenio_id ){ $modelConvenio = new Model_Convenio(); $dadosConvenio = $modelConvenio->exibir($dados->convenio_id); $valorBase = Core_FilterValor::filter($dadosConvenio->valor_base); if( $valorBase > 0 ){ if( $valorLiquido > $valorBase ){ $motivoFraude = "Valor da proposta maior que o valor base do convênio."; return true; } } } } return false; } public function mediaProducaoCorretor($corretorId) { $dbtable = new Model_DbTable_Contrato(); $status = Model_Contrato::findByNameStatus(['Operacao Finalizada']); $where = "contratos.tipo_registro = 1 AND contratos.excluido <> 1 AND clientes.excluido <> 1 and corretores.excluido <> 1 and corretores.id = {$corretorId}"; $selectQtdContratos = $dbtable->getAdapter()->select()->from(array( 'contratos' => 'tb_contratos' ), array( 'qtd_contratos' => 'COUNT(contratos.id)' )) ->joinInner(array( "clientes" => "tb_clientes" ), "contratos.cliente_id = clientes.id", array()) ->joinInner(array( "corretores" => "tb_corretores" ), "contratos.corretor_id = corretores.id", array()) ->where("contratos.status_proposta IN ('" . implode("','", $status) . "')") ->where($where); $selectTotalLiquido = $dbtable->getAdapter()->select()->from(array( 'contratos' => 'tb_contratos' ), array( 'total_liquido' => 'SUM(contratos.valor_liquido)' )) ->joinInner(array( "clientes" => "tb_clientes" ), "contratos.cliente_id = clientes.id", array()) ->joinInner(array( "corretores" => "tb_corretores" ), "contratos.corretor_id = corretores.id", array()) ->where("contratos.status_proposta IN ('" . implode("','", $status) . "')") ->where($where); $resultQ = $dbtable->getAdapter()->fetchRow($selectQtdContratos, '', Zend_Db::FETCH_OBJ); $resultT = $dbtable->getAdapter()->fetchRow($selectTotalLiquido, '', Zend_Db::FETCH_OBJ); $totalLiquido = 0; $qtdContratos = 0; $valorMedia = 0; if ($resultQ) { $qtdContratos = $resultQ->qtd_contratos ?? 0; } if ($resultT) { $totalLiquido = $resultT->total_liquido ?? 0; } if ($qtdContratos > 0) { $valorMedia = Core_FilterValor::filter($totalLiquido / $qtdContratos); } return $valorMedia; } public function getPropostaRecusada() { $dbtable = new Model_DbTable_Proposta(); $select = $dbtable->getAdapter()->select()->from(array( 'contratos' => "tb_contratos" ), array( 'base_comissao_valor', 'descricao_pendencia' )) ->joinInner(array( 'clientes' => "tb_clientes" ), 'contratos.cliente_id = clientes.id', array( 'cliente' => 'nome', 'cpf' )) ->joinLeft(array( 'convenios' => "tb_convenios" ), "contratos.convenio_id = convenios.id", array( 'convenio' => 'nome' )) ->joinLeft(array( 'bancos' => "tb_bancos" ), "contratos.banco_id = bancos.id", array( 'banco' => 'nome' )) ->where("contratos.status = '3'") ->where("contratos.tipo_registro = 0") ->where("contratos.excluido<>1") ->group('contratos.id'); if( Yuppie_Auth::getIdentity()->grupo == "Corretor" ){ $select->where("contratos.corretor_id = ?", Yuppie_Auth::getIdentity()->id); } elseif( !empty(Yuppie_Auth::getIdentity()->corretor_id) ){ $select->where("contratos.corretor_id = ?", Yuppie_Auth::getIdentity()->corretor_id); } return $dbtable->getAdapter()->fetchAll($select); } public function salvarPropostaSimulacao($data) { if(empty(Yuppie_Auth::getIdentity()->corretor_id)){ return ['alert' => 'Seu usuário deve estar vinculado a um corretor ' . 'para digitar a proposta']; } $data['empresa_id'] = Yuppie_Auth::getIdentity()->empresa_id; if( Yuppie_Auth::getIdentity()->grupo != "Corretor" && empty(Yuppie_Auth::getIdentity()->corretor_id) ){ return [ 'success' => false, 'message' => 'O digitador não é um corretor ou não está vinculado.' ]; } if( empty($data['fator_id']) ){ return [ 'success' => false, 'message' => 'Tabela de fator não identificada' ]; } $base = (new Model_CallcenterBase())->existeCpf($data['cpf']); if( empty($base) ){ return [ 'success' => false, 'message' => 'Cliente não localizado no banco de dados.' ]; } $midiaOrigem = (new Model_Tipo())->getMidiaOrigemByDescricao('Telemarketing'); $data = array_merge( $data, (new Model_CallcenterBeneficio())->getBeneficioByNumero( $base->id, $data['numero_beneficio'] ), ["midia_origem_id" => $midiaOrigem->id ?? null] ); unset($data['cliente_id']); $data['cpf'] = String_Refatorar::formatarCpf($data['cpf']); $telefones = $base->getTable()->findPhonesToInsert($base->id); $dadosCliente = array_merge($base->toArray(), $data, $telefones); unset($dadosCliente['id']); $dadosCliente['empresa_id'] = $data['empresa_id']; $cliente = new Model_Cliente($dadosCliente); $fator = (new Model_TabelaFator())->getDadosFator($data['fator_id']); if(!empty($fator)){ unset($fator['id']); $data = array_merge($data, $fator); } $data['data_emissao'] = Zend_Date::now()->get('yyyy-MM-dd'); $clienteObj = $cliente->existe($data['cpf']); if(empty($clienteObj)){ $data['cliente_id'] = $cliente->salvar($cliente); }else{ $data['cliente_id'] = $clienteObj->id; } if( empty($data['cliente_id']) ){ return [ 'success' => false, 'message' => 'Não foi possível cadastrar ou localizar o cliente' . ' para inserção da proposta.' ]; } if(!empty($data['quitacao'])){ $data['valor_bruto'] = ($data['valor_liquido'] + $data['quitacao']); } $tiposCartao = ['ATIVACAO', 'PLASTICO', 'SAQUE', 'SAQUE COM SEGURO', 'COMPLEMENTAR', 'COMPLEMENTAR COM SEGURO']; if (!in_array($data['tipo'], $tiposCartao + ['NOVO'])) { $prazoAnterior = explode(' ', $data['prazo_anterior'])[2]; $data = array_merge( $data, [ 'anterior_banco' => explode(' ', $data['banco_anterior'])[0], 'anterior_prazo' => $prazoAnterior, 'anterior_parcelas_restantes' => $prazoAnterior - explode(' ', $data['prazo_anterior'])[0], 'anterior_saldo_devedor' => $data['quitacao'], 'anterior_numero' => $data['contrato_anterior'], 'anterior_valor_parcela' => $data['valor_prestacao'] ] ); } if(!empty($data['banco'])){ preg_match_all('/[a-zA-Z]+/', $data['banco'], $matches); $banco = (new Model_DbTable_Banco())->fetchRow(["nome LIKE (?)" => current($matches[0])]); if($fator['banco_id'] == $banco->id){ $data['tipo'] = 'REFINANCIAMENTO'; }else{ $data['tipo'] = 'PORTABILIDADE'; } } $data['corretor_id'] = Yuppie_Auth::getIdentity()->corretor_id; $proposta = new Model_Proposta($data); $existe = $proposta->existe($data); if( !empty($existe) ){ return [ 'success' => false, 'message' => 'Já existe uma proposta com os dados digitados.' ]; } try{ $result = $proposta->salvar($proposta); } catch (Exception $ex) { return [ 'success' => false, 'message' => $ex->getMessage() ]; } if( $result ){ return [ 'success' => true, 'message' => 'Proposta digitada com sucesso!' ]; } return [ 'success' => false, 'message' => 'A proposta não foi digitada, verifique os dados e tente novamente.' ]; } public function adicionarPropostaCliente(Model_Proposta $proposta, Model_Cliente $cliente) { $dbtable = new Model_DbTable_Proposta(); $dbtableCliente = new Model_DbTable_Cliente(); if (($dadosCliente = $cliente->existe($cliente->getCpf())) != null) { $cliente->setId($dadosCliente['id']); $proposta->setClienteId($cliente->getId()); $dbtableCliente->update($cliente->_toArray(), "id = " . $cliente->getId()); } else { $proposta->setClienteId($dbtableCliente->insert($cliente->_toArray())); } $dadosProposta = $proposta->_toArray(); foreach ($dadosProposta as $key => $item) { if (!$item) unset($dadosProposta[$key]); } $result = $dbtable->insert($dadosProposta); if ($result) { if ($whatsapp = \Core_Whatsapp_Factory::load()) { $textoMensagem = "Olá *{$cliente->getNome()}*! Tudo bem com você?\n" . "Essa é uma mensagem automática. Sua proposta já está sendo preparada para envio ao banco.\n" . "Qualquer dúvida, estamos à disposição!."; $whatsapp->sendMessage( \String_Refatorar::formatarTelefone($cliente->getCelular()), $textoMensagem ); } return true; } return false; } public function efetuarLoginPropostaCliente() { $usuario = new stdClass(); $usuario->{'login'} = "PROPOSTA CLIENTE"; $usuario->{'grupo'} = NULL; Yuppie_Auth::writeStorage($usuario); $acl = new Core_LibraryAcl($usuario->grupo); $ns = new Zend_Session_Namespace(); $ns->acl = $acl; } public function enviarCapaContrato(array $params) { $anexo = (new Model_ContratoAnexo())->getAnexo($params['proposta_id']); $corretor = (new Model_Corretor())->exibir($params['corretor_id']); if (!$anexo) { return ['status' => 0, 'msg' => 'Capa do contrato não foi anexada.']; } $result = null; $info = pathinfo($anexo['arquivo']); $file = UPLOAD_PATH . "/" . $anexo['arquivo']; if (strstr($anexo['arquivo'], "amazonaws.com")) { /** @var Service_S3 $s3 */ $s3 = service('s3'); $file = $s3->saveLocal('/propostas/' . $info['basename'], "Capa_Proposta_{$params['proposta_id']}.{$info['extension']}" ); } if (!$file) { return ['status' => 0, 'msg' => 'Arquivo não encontrado.']; } if ($params['tipo'] == 'whatsapp') { $result = $this->enviarCapaWhatsapp($params, $corretor, $info, $file); } if ($params['tipo'] == 'email') { $result = $this->enviarCapaEmail($params, $corretor, $info); } if ($s3) { unlink($file); } return $result; } public static function aprovarPropostas($propostas) { $tbPropostas = new Model_DbTable_Proposta(); return $tbPropostas->update([ 'digitado_banco' => 0 ],['id IN(?)' => $propostas]); } public function anexarDocumentosPropostaCliente($parametros) { $documento = new Model_ContratoAnexo(); $tbTipos = new Model_DbTable_Tipos(); $result = false; $upload = new Zend_File_Transfer_Adapter_Http(); $upload->setDestination(UPLOAD_PATH); foreach ($upload->getOptions() as $key => $campo) { $tipo = $tbTipos->fetchRow([ "descricao LIKE ?" => "%{$key}%", "tipo = ?" => "ANEXO_CONTRATO" ]); if ($upload->isValid($key) && $upload->receive($key)) { $extension = strtolower(pathinfo($upload->getFileName($key), PATHINFO_EXTENSION)); if (!in_array($extension, ['jpg','pdf','png','bmp'])) { $upload->addValidator('Size', false, "300KB"); } else { $upload->addValidator('Size', false, "1MB"); } $config = new Zend_Config_Ini(CLIENT_PATH . "/configs/application.ini"); $s3Options = $config->toArray(); if (empty($s3Options['production']['amazon']['s3'])) { $json['alert'] = 'Amazon S3 não configurado nesse sistema'; return $json; } $s3 = new Yuppie_Amazon_S3($s3Options['production']['amazon']['s3']); $dir = Yuppie_Auth::getSiteKey() . '/propostas'; $fname = time() . ".{$extension}"; $arquivo = $dir . '/' . $fname; $localArquivo = $s3->putObject($arquivo, $upload->getFileName($key)); $documento->setArquivo($localArquivo); $documento->setContratoId($parametros['id']); $documento->setDescricao($tipo->descricao); $documento->setTipoId($tipo->id); $result = $documento->salvar(); $this->validarDocumentoPropostaResolve($upload->getFileName()); } } return $result; } public static function enviarLinkDocumentacao($idProposta) { $service = Core_Whatsapp_Factory::load(); if ($service) { $proposta = (new Model_DbTable_Proposta())->fetchRow(["id = ?" => $idProposta]); $corretor = (new Model_DbTable_Corretor())->fetchRow(["id = ?" => $proposta->corretor_id]); $cliente = (new Model_DbTable_Cliente())->fetchRow("id = {$proposta['cliente_id']}"); $celular = String_Refatorar::formatarTelefone($cliente->celular); if (!Core_Service_Sms::isValidPhone($celular)) { return ["msg" => "O telefone informado é inválido."]; } $textoMensagem = self::formatarMensagemOportunidade($cliente, $corretor, $idProposta); if (!$textoMensagem) return ["msg" => "Corretor não possui link gerado."]; if ($service->sendMessage($celular, $textoMensagem) != false ) Yuppie_Log::write("Mensagem enviada para {$celular} com texto {$textoMensagem}"); return ["msg" => "Link enviado com sucesso!"]; } else { return ["msg" => "O sistema não está configurado para o envio de mensagens."]; } } public static function formatarMensagemOportunidade($cliente, $corretor, $idProposta) { $tokenProposta = self::carregarTokenProposta($idProposta); if ($corretor['token_sinc_yuppies']) { $front = Zend_Controller_Front::getInstance(); $link = Core_Link::criaLink("http://{$_SERVER['HTTP_HOST']}{$front->getBaseUrl()}/proposta-cliente/anexar-documentos", "token_proposta={$tokenProposta}"); return "Ola {$cliente->nome}, acesse o link a seguir anexar os documentos necessários à sua proposta: \n" . "{$link}"; } return false; } public static function carregarTokenProposta($idProposta) { $proposta = new Model_DbTable_Proposta(); $token = $proposta->fetchRow(['id = ?' => $idProposta])->token_proposta; if (!$token) { $token = md5(time()); $proposta->update([ 'token_proposta' => $token ], ['id = ?' => $idProposta]); } return $token; } /** * @param $files */ public static function validarDocumentoPropostaResolve($files): void { if (!is_array($files)) { self::DocumentoPropostaResolve($files); return; } foreach ($files as $file) { self::DocumentoPropostaResolve($file); } } /** * @param string $file */ public static function DocumentoPropostaResolve(string $file): void { if (file_exists($file)) { unlink($file); } } /** * @param Zend_Controller_Request_Abstract|null $request * @return array|string[] */ public function digitacaoCapaContrato(?Zend_Controller_Request_Abstract $request): array { try { $modelCliente = new Model_Cliente($request->getPost()); $modelContrato = new Model_Contrato($request->getPost()); $modelContrato->setClienteId($modelCliente->getOrCreateByCpf()); $modelContrato->setCorretorId(Yuppie_Auth::getIdentity()->id); $modelContrato->setEmpresaId(Yuppie_Auth::getIdentity()->empresa_id); $contratoId = $modelContrato->getByNumeroContrato(); $contratoAnexo = new Model_ContratoAnexo(); $contratoAnexo->adicionarCapaContrato($request, $contratoId); return ['success' => 'Dados salvos com sucesso']; } catch (Throwable $throwable) { return ['error' => $throwable->getMessage()]; } } /** * @param $post * @param $condicoesCredito * @param $tipoAuto * @return mixed|null * @throws Core_Exception * @throws Zend_Session_Exception */ public function saveByInclusaoAutocontratacao($post, $condicoesCredito, $convenio, $tipo = 'NOVO') { $corretorId = $post['corretor_id'] ?? null; if (!empty(Yuppie_Auth::getIdentity()) && empty($corretorId)) { $corretorId = Yuppie_Auth::getIdentity()->grupo == 'Corretor' ? Yuppie_Auth::getIdentity()->id : Yuppie_Auth::getIdentity()->corretor_id ?? null; } $dados = $post; $dados['banco_id'] = $this->getBancoId(); if (empty($dados['banco_id'])) { Yuppie_Log::write("Banco não habilitado no sistema.", $this); throw new Core_Exception("Banco não habilitado no sistema."); } if (empty($corretorId)) { Yuppie_Log::write("Foi no getOrCreate do corretor", $this); $corretorId = (new Model_Corretor())->getOrCreate($dados['banco_id'], $condicoesCredito->login_certificado); } $dados['corretor_id'] = $corretorId; $dados['tipo'] = $tipo; $dados['data_emissao'] = date('d/m/Y'); $dados['convenio_id'] = (new Model_Convenio)->getOrCreateConvenio($convenio); $dados['tabela_id'] = (new Model_Tabela())->getOrCreateTabelaByNome($condicoesCredito->codigo_tabela_financiamento, $condicoesCredito->descricao_tabela_financiamento, $dados['convenio_id'], $dados['banco_id'], 1); $dados['produto'] = (new Model_Produto())->getOrCreateProdutoCodigo($condicoesCredito->codigo_produto, $condicoesCredito->descricao_produto, $dados['banco_id'], $dados['tipo']); $dados['valor_bruto'] = $condicoesCredito->valor_financiado; $dados['valor_liquido'] = $condicoesCredito->valor_liquido; $dados['prazo'] = $condicoesCredito->prazo; $dados['taxa_contrato'] = $condicoesCredito->taxa_referencia_mensal; $dados['forma_liberacao'] = "C/C"; $dados['digitador'] = $condicoesCredito->login_certificado; $dados['tipo_formalizacao'] = 1; $dados['data_expedicao'] = $post['data_emissao_documento']; $dados['uf_expedidor'] = $post['uf_emissao_documento']; $dados['banco_beneficiado'] = $post['numero_banco']; $dados['agencia_beneficiado'] = $post['digito_agencia'] ? $post['numero_agencia'] . "-" . $post['digito_agencia'] : $post['numero_agencia']; $dados['conta_beneficiado'] = $post['digito_conta'] ? $post['numero_conta'] . "-" . $post['digito_conta'] : $post['numero_conta']; $dados['renda'] = $post['renda_valor'] ? $post['renda_valor'] : null; $dados['tipo_pix'] = $post['tipo_pix'] ?? null; $dados['chave_pix'] = $post['chave_pix'] ?? null; $proposta = new Model_Proposta($dados); $cliente = new Model_Cliente($dados); $clienteExiste = $cliente->existe($dados['cpf']); if ($clienteExiste) { $proposta->setClienteId($clienteExiste->id); $dados['cliente_id'] = $clienteExiste->id; } else { $dadosCorretor = (new Model_Corretor())->exibir($dados['corretor_id']); $empresaId = $dadosCorretor ? $dadosCorretor->empresa_id : (new Model_Empresa())->getPrimeiraEmpresaAtiva()['id']; $dados['empresa_id'] = $empresaId; $arrayCliente = $dados; unset($arrayCliente['id']); $cliente = new Model_Cliente($arrayCliente); $dados['cliente_id'] = $cliente->salvar($cliente); $proposta->setClienteId($dados['cliente_id']); } $propostaExiste = $proposta->existe($dados); if ($propostaExiste) { $proposta->setId($propostaExiste->id); $proposta->salvar($proposta, $cliente); Yuppie_Log::write("Proposta já existente com o ID " . $propostaExiste->id, $this); return $propostaExiste->id; } return $proposta->salvar($proposta, $cliente); } /** * @param int $id * @param string $numeroProposta * @return int * @throws Core_Exception */ public function efetivarPropostaInclusao(int $id, $retornoInclusao) { Yuppie_Log::write("efetivarPropostaInclusao => " . print_r($retornoInclusao, true), $this); if (empty($retornoInclusao->numero_proposta) && empty($retornoInclusao->token_proposta)) { return null; } $table = new Model_DbTable_Proposta(); $dadosProposta = $table->fetchRow(["id = ?" => $id]); if (empty($dadosProposta)) { throw new Core_Exception("Proposta não localizada para efetivação"); } $atualizado = $table->update([ 'banco_id' => $dadosProposta->banco_id, 'tipo_registro' => 1, 'status_proposta' => 66, 'usuario_efetivacao' => Yuppie_Auth::getIdentity() ? Yuppie_Auth::getIdentity()->login : "AUTO", 'data_efetivacao' => date('Y-m-d'), 'numero_contrato' => !empty($retornoInclusao->numero_proposta) ? $retornoInclusao->numero_proposta : $id . "-AUTO", 'numero_ade' => !empty($retornoInclusao->numero_ade) ? $retornoInclusao->numero_ade : null, 'token_proposta' => !empty($retornoInclusao->token_proposta) ? $retornoInclusao->token_proposta : null, 'verificar_contratos' => 1 ], ['id = ?' => $id]); Yuppie_Log::write("Retorno do update em efetivarPropostaInclusao => " . print_r($atualizado, true), $this); return $atualizado; } }
💾 保存文件
← 返回文件管理器