✏️ 正在编辑: DigitacaoAutomatica.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/application/models/DbTable/DigitacaoAutomatica.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Model_DbTable_DigitacaoAutomatica extends Core_DbTable { protected $_primary = 'id'; protected $_name = 'tb_digitacao_automatica'; public function gravarParaDigitacao(array $clientes, int $convenioId, int $bancoId, $tipoOperacao = 'NOVO') { $banco = Model_Banco::bancoPorId($bancoId); $convenio = (new Model_Convenio())->exibir($convenioId); if (empty($banco)) { throw new Core_Exception("Banco não localizado!"); } if (empty($convenio)) { throw new Core_Exception("Convênio não localizado!"); } $retorno = []; foreach ($clientes as $clienteId) { $dadosCliente = (new Model_Cliente())->exibir($clienteId); if (!$dadosCliente) { $retorno[] = [ 'status' => false, 'cliente_id' => $clienteId, 'descricao' => "Cliente não localizado para digitação" ]; continue; } $dbtable = new Model_DbTable_Contrato(); $select = $dbtable->getAdapter()->select()->from("tb_contratos") ->where("excluido<>1") ->where("cliente_id = ?", $clienteId); $contratos = $dbtable->getAdapter()->fetchAll($select); $dadosContrato = new stdClass(); foreach ($contratos as $contrato) { $dadosContrato->valor_beneficio = empty($dadosContrato->valor_beneficio) && !empty($contrato->valor_beneficio) ? $contrato->valor_beneficio : 0; $dadosContrato->numero_beneficio = empty($dadosContrato->numero_beneficio) && !empty($contrato->numero_beneficio) ? $contrato->numero_beneficio : ""; $dadosContrato->especie = empty($dadosContrato->especie) && !empty($contrato->especie)? $contrato->especie : ""; $dadosCliente->cep = !empty($contrato->cep) ? $contrato->cep : $dadosCliente->cep; $dadosCliente->endereco = !empty($contrato->endereco) ? $contrato->endereco : $dadosCliente->endereco; $dadosCliente->bairro = !empty($contrato->bairro) ? $contrato->bairro : $dadosCliente->bairro; $dadosCliente->cidade = !empty($contrato->cidade) ? $contrato->cidade : $dadosCliente->cidade; $dadosCliente->uf = !empty($contrato->uf) ? $contrato->uf : $dadosCliente->uf; if (empty($dadosContrato->corretor_id) && !empty($contrato->corretor_id)) { $dadosContrato->corretor_id = $contrato->corretor_id; } } if (!$dadosContrato) { $retorno[] = [ 'status' => false, 'cliente_id' => $clienteId, 'descricao' => "Contrato não possui informações suficientes para digitação" ]; continue; } $config = service('config_callcenter')->get(); if ($config->consulta_beneficio && $config->consulta_beneficio_digitacao_automatica == 1 && !stristr($convenio->nome, 'FGTS')) { $serviceClass = 'Core_Service_' . $config->consulta_beneficio; $consulta = new $serviceClass; try { $dadosHiscon = $consulta->getMaiorMargem($dadosCliente->cpf); } catch (Core_Exception $erro) { Yuppie_Log::write("Erro ao consultar Hiscon! " . $erro->getMessage(), $this); } } if ($dadosHiscon) { $dadosContrato->valor_beneficio = !empty($dadosContrato->valor_beneficio) ? $dadosContrato->valor_beneficio : $dadosHiscon['mr']; $dadosCliente->data_nascimento = !empty($dadosCliente->data_nascimento) ? $dadosCliente->data_nascimento : $dadosHiscon['nascto']; $dadosCliente->sexo = !empty($dadosCliente->sexo) ? $dadosCliente->sexo : $dadosHiscon['sexo']; $dadosContrato->numero_beneficio = !empty($dadosContrato->numero_beneficio) ? $dadosContrato->numero_beneficio : $dadosHiscon['beneficio']; $dadosContrato->especie = !empty($dadosContrato->especie) ? $dadosContrato->especie : $dadosHiscon['especie']; $dadosCliente->rg = !empty($dadosCliente->rg) ? $dadosCliente->rg : $dadosHiscon['rg']; $dadosCliente->orgao_expedidor = !empty($dadosCliente->orgao_expedidor) ? $dadosCliente->orgao_expedidor : $dadosHiscon['orgao_expedidor']; $dadosCliente->uf_expedidor = !empty($dadosCliente->uf_expedidor) ? $dadosCliente->uf_expedidor : $dadosHiscon['uf']; $dadosCliente->data_expedicao = !empty($dadosCliente->data_expedicao) ? $dadosCliente->data_expedicao : (new Zend_Date($dadosHiscon['nascto']))->addYear(1)->get('yyyy-MM-dd'); $dadosCliente->cep = !empty($dadosCliente->cep) ? $dadosCliente->cep : $dadosHiscon['cep']; $dadosCliente->endereco = !empty($dadosCliente->endereco) ? $dadosCliente->endereco : $dadosHiscon['logradouro']; $dadosCliente->bairro = !empty($dadosCliente->bairro) ? $dadosCliente->bairro : $dadosHiscon['bairro']; $dadosCliente->cidade = !empty($dadosCliente->cidade) ? $dadosCliente->cidade : $dadosHiscon['cidade']; $dadosCliente->uf = !empty($dadosCliente->uf) ? $dadosCliente->uf : $dadosHiscon['uf']; $dadosCliente->representante_legal = $dadosCliente->representante_legal ?? $dadosHiscon['rep_legal']; $dadosCliente->nome_representante = $dadosCliente->nome_representante ?? ""; $dadosCliente->cpf_representante = $dadosCliente->cpf_representante ?? ""; $dadosCliente->celular = !empty($dadosCliente->celular) ? $dadosCliente->celular : $dadosHiscon['celular']; } //verifica se tem IN100 ligada // $configMaster = service('config_api')->get(); // if (!empty($configMaster->BANCO_MASTER->usuario)) { // try { // $service = new Core_Banco_Service_Master_Api(); // $consulta = $service->consultaIn100(['cpf' => $dadosCliente->cpf, 'beneficio' => $dadosContrato->numero_beneficio]); // $dadosContrato->banco_beneficiado = !empty($dadosContrato->banco_beneficiado) ? $dadosContrato->banco_beneficiado : $consulta->CbcIfPagadora; // $dadosContrato->agencia_beneficiado = !empty($dadosContrato->agencia_beneficiado) ? $dadosContrato->agencia_beneficiado : $consulta->AgenciaPagadora; // $dadosContrato->conta_beneficiado = !empty($dadosContrato->conta_beneficiado) ? $dadosContrato->conta_beneficiado : $consulta->ContaCorrente; // } catch (Exception $e) { // // // } // } if ($tipoOperacao == "NOVO") { $margem = !empty($dadosHiscon['margem']) ? $dadosHiscon['margem'] : 0; if (!empty($consulta->MargemDisponivel)) { $margem = $consulta->MargemDisponivel; } } elseif (stristr($tipoOperacao, "AUMENTO")) { $margem = (92*35/100); //margem 2024 } elseif($tipoOperacao == "CREDCESTA") { $margem = $consulta->MargemDisponivelRcc; } if ($margem == 0 && !stristr($convenio->nome, 'FGTS')) { $retorno[] = [ 'status' => false, 'contrato_id' => $dadosContrato->id, 'descricao' => "Cliente sem margem para iniciar a digitação." ]; continue; } if ($this->fetchRow(["cliente_id = ?" => $dadosCliente->id, "banco = ?" => $banco])) { $retorno[] = [ 'status' => false, 'contrato_id' => $dadosContrato->id, 'descricao' => "Digitação já acionada para este cliente neste banco" ]; continue; } $result = $this->insert([ 'cliente_id' => $dadosCliente->id, 'corretor_id' => $dadosContrato->corretor_id, 'banco' => $banco, 'convenio' => $convenio->nome, 'tipo_operacao' => $tipoOperacao, 'nome' => $dadosCliente->nome, 'cpf' => $dadosCliente->cpf, 'sexo' => $dadosCliente->sexo, 'celular' => String_Refatorar::formatarTelefone($dadosCliente->celular), 'data_nascimento' => $dadosCliente->data_nascimento, 'numero_beneficio' => $dadosContrato->numero_beneficio, 'especie' => $dadosContrato->especie, 'renda_valor' => !empty($dadosContrato->valor_beneficio) ? $dadosContrato->valor_beneficio : 1412, 'margem' => $margem, 'rg' => $dadosCliente->rg, 'orgao_emissor' => !empty($dadosCliente->orgao_expedidor) ? $dadosCliente->orgao_expedidor : "SSP", 'uf_emissor' => $dadosCliente->uf_expedidor, 'data_emissao_rg' => $dadosCliente->data_expedicao, 'nome_mae' => $dadosCliente->nome_mae, 'possui_representante_legal' => $dadosCliente->representante_legal, 'nome_representante_legal' => $dadosCliente->nome_representante, 'cpf_representante_legal' => $dadosCliente->cpf_representante, 'cep' => $dadosCliente->cep, 'endereco' => $dadosCliente->endereco, 'bairro' => $dadosCliente->bairro, 'cidade' => $dadosCliente->cidade, 'uf' => $dadosCliente->uf, 'numero' => !empty($dadosCliente->numero) ? $dadosCliente->numero : "S/N", 'banco_beneficiado' => $dadosContrato->banco_beneficiado, 'agencia_beneficiado' => $dadosContrato->agencia_beneficiado, 'conta_beneficiado' => $dadosContrato->conta_beneficiado, // 'digito_conta_beneficiado' => $dadosContrato->conta_beneficiado, 'tipo_conta_beneficiado' => $dadosContrato->operacao_beneficiado != "001" ? "POUPANCA" : "CORRENTE", 'cod_oper_cef' => '001' ]); if ($result) { $retorno[] = [ 'status' => true, 'contrato_id' => $dadosContrato->id, 'descricao' => "Enviado para digitação" ]; continue; } $retorno[] = [ 'status' => false, 'contrato_id' => $dadosContrato->id, 'descricao' => "Não inserido para digitação." ]; } return $retorno; } public function viewEsteira(array $params) { $where = []; if (!empty($params['convenio'])) { $where['convenio = ?'] = $params['convenio']; } if (!empty($params['banco'])) { $where['banco = ?'] = $params['banco']; } if (!empty($params['status_digitacao'])) { $where['status_digitacao = ?'] = $params['status_digitacao']; } if (!empty($params['data_digitacao_de'])) { $where['data_cadastro >= ?'] = (new Zend_Date($params['data_digitacao_de']))->get('yyyy-MM-dd') . " 00:00:00"; } if (!empty($params['data_digitacao_a'])) { $where['data_cadastro <= ?'] = (new Zend_Date($params['data_digitacao_a']))->get('yyyy-MM-dd') . " 23:59:59"; } return $this->fetchAll($where); } public static function complementarDados(&$dados) { $banco = ucfirst(strtolower($dados['banco'])); $dados['banco'] = $banco; $dados['consulta_banco'] = '_consultar' . $banco; $dados['tipo_operacao'] = $dados['tipo_operacao'] ?? "NOVO"; $dados['codigo_orgao'] = $dados['convenio']; $dados['valor_solicitado'] = $dados['margem']; $dados['uf_emissao_documento'] = $dados['uf_emissor']; $dados['data_emissao_documento'] = $dados['data_emissao_rg']; $dados['fone'] = $dados['celular']; $dados['numero_banco'] = $dados['banco_beneficiado']; $dados['numero_agencia'] = $dados['agencia_beneficiado']; $dados['numero_conta'] = $dados['conta_beneficiado']; $dados['margem_complementar'] = stristr($dados['tipo_operacao'], "AUMENTO") ? true : false; unset($dados['id']); } public function update(array $data, $where) { $this->closeConnection(); return parent::update($data, $where); } public function gravarParaDigitacaoCampanha(array $base, int $convenioId, int $bancoId, $tipoOperacao = 'NOVO') { $banco = Model_Banco::bancoPorId($bancoId); $convenio = (new Model_Convenio())->exibir($convenioId); if (empty($banco)) { throw new Core_Exception("Banco não localizado!"); } if (empty($convenio)) { throw new Core_Exception("Convênio não localizado!"); } foreach ($base as $cliente) { $beneficios = (new Model_DbTable_CallcenterBeneficio())->fetchRow('base_cliente_id = ' . $cliente['id'], 'margem_livre DESC'); $telefones = (new Model_DbTable_CallcenterTelefone())->fetchRow('cliente_id = ' . $cliente['id'], 'whatsapp DESC'); $enderecos = (new Model_DbTable_CallcenterEndereco())->fetchRow('cpf_cliente = ' . $cliente['cpf'], 'cep DESC'); if ($tipoOperacao == "NOVO") { $margem = $beneficios['margem_livre'] ?? 0; } elseif(stristr($tipoOperacao, "AUMENTO")) { $margem = (92*35/100); } if ($margem == 0 && !stristr($convenio->nome, 'FGTS')) { continue; } if ($this->fetchRow(["base_id = ?" => $cliente['id'], "banco = ?" => $banco])) { continue; } $this->insert([ 'base_id' => $cliente['id'], 'banco' => $banco, 'convenio' => $convenio->nome, 'tipo_operacao' => $tipoOperacao, 'nome' => $cliente['nome'], 'cpf' => $cliente['cpf'], 'sexo' => $cliente['sexo'], 'celular' => String_Refatorar::formatarTelefone($telefones->fone), 'data_nascimento' => $cliente['data_nascimento'], 'numero_beneficio' => $beneficios->beneficio, 'especie' => $beneficios->especie, 'renda_valor' => !empty($beneficios->mr) ? $beneficios->mr : 1412, 'margem' => $margem, 'rg' => $cliente['rg'], 'orgao_emissor' => "SSP", 'uf_emissor' => $enderecos->uf, 'data_emissao_rg' => (new Zend_Date($cliente['data_nascimento']))->addYear(1)->get('yyyy-MM-dd'), 'nome_mae' => $cliente['nome_mae'], 'possui_representante_legal' => $cliente['rep_legal'], 'nome_representante_legal' => $cliente['nome_responsavel'], 'cpf_representante_legal' => $cliente['cpf_responsavel'], 'cep' => $enderecos->cep, 'endereco' => $enderecos->endereco, 'bairro' => $enderecos->bairro, 'cidade' => $enderecos->cidade, 'uf' => $enderecos->uf, 'numero' => !empty($enderecos->numero) ? $enderecos->numero : "S/N", 'banco_beneficiado' => $beneficios->banco_pagto, 'agencia_beneficiado' => $beneficios->agencia_pagto, 'conta_beneficiado' => $beneficios->conta_pagto, 'tipo_conta_beneficiado' => $beneficios->tipo_pagto != "Conta Corrente" ? "POUPANCA" : "CORRENTE", 'cod_oper_cef' => '001' ]); } } public function gravarPropostaParaDigitacao(int $propostaId) { $tbProposta = new Model_DbTable_Proposta(); $proposta = $tbProposta->fetchRow(['id = ?' => $propostaId]); $banco = Model_Banco::bancoPorId($proposta->banco_id); $convenio = (new Model_Convenio())->exibir($proposta->convenio_id); $tabela = (new Model_Tabela())->exibir($proposta->tabela_id); $dadosCliente = (new Model_Cliente())->exibir($proposta->cliente_id); if (empty($banco)) { throw new Core_Exception("Banco não localizado!"); } if (empty($convenio)) { throw new Core_Exception("Convênio não localizado!"); } if (empty($tabela)) { throw new Core_Exception("Tabela não localizada!"); } if (empty($dadosCliente)) { throw new Core_Exception("Cliente não localizado para digitação!"); } $dadosProposta = new stdClass(); $dadosProposta->valor_beneficio = !empty($proposta->valor_beneficio) ? $proposta->valor_beneficio : 0; $dadosProposta->numero_beneficio = !empty($proposta->numero_beneficio) ? $proposta->numero_beneficio : ""; $dadosProposta->especie = !empty($proposta->especie) ? $proposta->especie : ""; $dadosProposta->corretor_id = !empty($proposta->corretor_id) ? $proposta->corretor_id : ""; $dadosCliente->cep = !empty($proposta->cep) ? $proposta->cep : $dadosCliente->cep; $dadosCliente->endereco = !empty($proposta->endereco) ? $proposta->endereco : $dadosCliente->endereco; $dadosCliente->bairro = !empty($proposta->bairro) ? $proposta->bairro : $dadosCliente->bairro; $dadosCliente->cidade = !empty($proposta->cidade) ? $proposta->cidade : $dadosCliente->cidade; $dadosCliente->uf = !empty($proposta->uf) ? $proposta->uf : $dadosCliente->uf; if (!$dadosProposta) { throw new Core_Exception("Proposta não possui informações suficientes para digitação!"); } if ($proposta->tipo == "NOVO") { $margem = !empty($proposta->valor_prestacao) ? $proposta->valor_prestacao : 0; } elseif (stristr($proposta->tipo, "AUMENTO") && empty($proposta->valor_prestacao)) { $margem = (92*35/100); //margem 2024 } if ($margem == 0) { throw new Core_Exception("Proposta sem valor de parcela para iniciar a digitação!"); } if ($this->fetchRow(["cliente_id = ?" => $dadosCliente->id, "banco = ?" => $banco, "proposta_id = ?" => $propostaId])) { throw new Core_Exception("Já existe uma digitação para esta proposta neste banco!"); } $result = $this->insert([ 'cliente_id' => $dadosCliente->id, 'corretor_id' => $dadosProposta->corretor_id, 'proposta_id' => $propostaId, 'banco' => $banco, 'convenio' => $convenio->nome, 'tabela' => !empty($tabela->codigo) ? $tabela->codigo : $tabela->nome, 'tipo_operacao' => $proposta->tipo, 'nome' => $dadosCliente->nome, 'cpf' => $dadosCliente->cpf, 'sexo' => $dadosCliente->sexo, 'celular' => String_Refatorar::formatarTelefone($dadosCliente->celular), 'data_nascimento' => $dadosCliente->data_nascimento, 'numero_beneficio' => $dadosProposta->numero_beneficio, 'especie' => $dadosProposta->especie, 'renda_valor' => !empty($dadosProposta->valor_beneficio) ? $dadosProposta->valor_beneficio : 1412, 'margem' => $margem, 'rg' => $dadosCliente->rg, 'orgao_emissor' => !empty($dadosCliente->orgao_expedidor) ? $dadosCliente->orgao_expedidor : "SSP", 'uf_emissor' => $dadosCliente->uf_expedidor, 'data_emissao_rg' => $dadosCliente->data_expedicao, 'nome_mae' => $dadosCliente->nome_mae, 'possui_representante_legal' => $dadosCliente->representante_legal, 'nome_representante_legal' => $dadosCliente->nome_representante, 'cpf_representante_legal' => $dadosCliente->cpf_representante, 'cep' => $dadosCliente->cep, 'endereco' => $dadosCliente->endereco, 'bairro' => $dadosCliente->bairro, 'cidade' => $dadosCliente->cidade, 'uf' => $dadosCliente->uf, 'numero' => !empty($dadosCliente->numero) ? $dadosCliente->numero : "S/N", 'banco_beneficiado' => $dadosProposta->banco_beneficiado, 'agencia_beneficiado' => $dadosProposta->agencia_beneficiado, 'conta_beneficiado' => $dadosProposta->conta_beneficiado, 'tipo_conta_beneficiado' => $dadosProposta->operacao_beneficiado != "001" ? "POUPANCA" : "CORRENTE", 'cod_oper_cef' => '001', 'tipo_pix' => $dadosProposta->tipo_pix ?? "", 'chave_pix' => $dadosProposta->chave_pix ?? "" ]); if ($result) { return true; } return false; } }
💾 保存文件
← 返回文件管理器