✏️ 正在编辑: CallcenterBase.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/application/models/CallcenterBase.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php use Modules\Automatizacao\Model\DbTable\OportunidadesNegocioTable; class Model_CallcenterBase extends Model_PessoaFisica { private $_campanhaId; private $_statusAtendimento; private $_lojaFinalizar; //quando o cliente disser ao operador que vai finalizar na loja private $_comentario; private $_agendadoPara; //data de agendamento do atendimento private $_horaAgendada; private $_agendaNotificada = 0; private $_orgao; private $_orgaoId; private $_procon; private $_ativo; private $_obito; private $_repLegal; private $_cargo; private $_secretaria; private $_secretariaId; private $_siglaUpg; private $_dataHigienizacao; private $_usuarioUltimoAtendimento; private $_razaoSocial; private $_nomeResponsavel; private $_cpfResponsavel; private $_tipoPessoa; private $_telefoneChamada; private $_higienizarTelefones; private $_senhaContraCheque; private $_dataHigienizacaoTelefones; private $_midiaOrigemId; public function getCampanhaId() { return $this->_campanhaId; } public function setCampanhaId($campanhaId) { $this->_campanhaId = $campanhaId; } public function getAtivo() { return $this->_ativo; } public function setAtivo($ativo) { $this->_ativo = $ativo; } public function getStatusAtendimento() { return $this->_statusAtendimento; } public function setStatusAtendimento($statusAtendimento) { $this->_statusAtendimento = $statusAtendimento; } public function getUsuarioUltimoAtendimento() { return $this->_usuarioUltimoAtendimento; } public function setUsuarioUltimoAtendimento($usuarioUltimoAtendimento) { $this->_usuarioUltimoAtendimento = $usuarioUltimoAtendimento ? $usuarioUltimoAtendimento : Yuppie_Auth::getIdentity()->id; } public function getRazaoSocial() { return $this->_razaoSocial; } public function setRazaoSocial($razaoSocial): void { $this->_razaoSocial = $razaoSocial; } public function getNomeResponsavel() { return $this->_nomeResponsavel; } public function setNomeResponsavel($nomeResponsavel): void { $this->_nomeResponsavel = $nomeResponsavel; } public function getCpfResponsavel() { return $this->_cpfResponsavel; } public function setCpfResponsavel($cpfResponsavel): void { $this->_cpfResponsavel = !empty($cpfResponsavel) ? String_Refatorar::formatarCpf($cpfResponsavel) : null; } public function getTipoPessoa() { return $this->_tipoPessoa; } public function setTipoPessoa($tipoPessoa): void { $this->_tipoPessoa = $tipoPessoa; } public function getAgendadoPara() { return $this->_agendadoPara; } public function setAgendadoPara($agendadoPara) { if( !empty($agendadoPara) ){ try { $data = new Zend_Date($agendadoPara, Zend_Date::DATES, 'pt'); $agendadoPara = $data->toString('yyyy-MM-dd'); } catch ( Zend_Date_Exception $e ) { echo $e->getMessage(); $agendadoPara = null; } } else { $agendadoPara = null; } $this->_agendadoPara = $agendadoPara; } public function getAgendaNotificada(){ return $this->_agendaNotificada; } public function setAgendaNotificada($notificada){ $this->_agendaNotificada = $notificada; } public function getLojaFinalizar() { return $this->_lojaFinalizar; } public function setLojaFinalizar($lojaFinalizar) { $this->_lojaFinalizar = $lojaFinalizar; } public function getComentario() { return $this->_comentario; } public function setComentario($comentario) { $this->_comentario = $comentario; } public function getHoraAgendada() { return $this->_horaAgendada; } public function setHoraAgendada($horaAgendada) { $this->_horaAgendada = $horaAgendada; } public function getOrgao() { return $this->_orgao; } public function setOrgao($orgao) { $this->_orgao = $orgao; } public function setInicioContrato($inicioContrato) { if( !empty($inicioContrato) ){ try { $data = new Zend_Date($inicioContrato, Zend_Date::DATES, 'pt'); $inicioContrato = $data->toString('yyyy-MM-dd'); } catch ( Zend_Date_Exception $e ) { echo $e->getMessage(); $inicioContrato = null; } } else { $inicioContrato = null; } $this->_inicioContrato = $inicioContrato; } public function setTerminoContrato($terminoContrato) { if( !empty($terminoContrato) ){ try { $data = new Zend_Date($terminoContrato, Zend_Date::DATES, 'pt'); $terminoContrato = $data->toString('yyyy-MM-dd'); } catch ( Zend_Date_Exception $e ) { echo $e->getMessage(); $terminoContrato = null; } } else { $terminoContrato = null; } $this->_terminoContrato = $terminoContrato; } public function getProcon() { return $this->_procon; } public function setProcon($procon) { $this->_procon = $procon; } public function getObito() { return $this->_obito; } public function getRepLegal() { return $this->_repLegal; } public function getCargo() { return $this->_cargo; } public function getSecretaria() { return $this->_secretaria; } public function getSiglaUpg() { return $this->_siglaUpg; } public function setObito($obito) { $this->_obito = (int)$obito; } public function setRepLegal($repLegal) { $this->_repLegal = $repLegal; } public function setCargo($cargo) { $this->_cargo = $cargo; } public function setSecretaria($secretaria) { $this->_secretaria = $secretaria; } public function setSiglaUpg($siglaUpg) { $this->_siglaUpg = $siglaUpg; } public function getDataHigienizacao() { return $this->_dataHigienizacao; } public function setDataHigienizacao($dataHigienizacao) { $this->_dataHigienizacao = $dataHigienizacao; } public function getOrgaoId() { return $this->_orgaoId; } public function setOrgaoId($orgaoId): void { $this->_orgaoId = $orgaoId; } public function getSecretariaId() { return $this->_secretariaId; } public function setSecretariaId($secretariaId): void { $this->_secretariaId = $secretariaId; } public function getTelefoneChamada() { return $this->_telefoneChamada; } public function setTelefoneChamada($telefoneChamada) { $this->_telefoneChamada = $telefoneChamada; } public function getSenhaContraCheque() { return $this->_senhaContraCheque; } public function setSenhaContraCheque($senhaContraCheque): void { $this->_senhaContraCheque = $senhaContraCheque; } public function getMidiaOrigemId() { return $this->_midiaOrigemId; } public function setMidiaOrigemId($midiaOrigemId): void { $this->_midiaOrigemId = $midiaOrigemId; } public function __construct($options = null) { if( is_array($options) ){ $this->setOptions($options); } } public function setOptions(array $options, $exists = false) { $values = $options; if( isset($options['id']) && $options['id'] > 0 && $exists == false){ $fetch = $this->exibir($options['id']); $values = array_merge($fetch->toArray(), $options); } $methods = get_class_methods($this); foreach ( $values 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_CallcenterBase(); $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) ){ $value = $this->$method(); if(!empty($value) || $value == "0"){ $data[$col] = $this->$method(); } } } return $data; } /** * Insere ou altera o registro passado por parâmetro * @param Model_CallcenterBase $base */ public function salvar(Model_CallcenterBase $base) { $dbtable = new Model_DbTable_CallcenterBase(); if( $base->getId() > 0 ){ $statusDesativaCliente = Model_CallcenterStatusAtendimento::getStatusDesativaCliente(); if( in_array($base->getStatusAtendimento(), $statusDesativaCliente) ){ $base->setAtivo(0); } $dbtable->update($base->_toArray(), 'id = ' . $base->getId()); return $base->getId(); } else { return $dbtable->insert($base->_toArray()); } } /** * Retorna uma lista * @param string $where * @param string $order * @param int $page * @return array */ public function listar($fields = null, $order = 'base.nome ASC', $page = null) { $usuario = Yuppie_Auth::getIdentity(); $dbtable = new Model_DbTable_CallcenterBase(); $select = $dbtable->getAdapter()->select(); /** * colunas necessárias: * id, ativo, campanha, nome, matrícula, cpf, nascimento, cidade, uf, orgao, status atendimento, * ultimo atendimento, usuario, usuario carteirizacao, data agendada, hora agendada */ $select->from(['base' => 'tb_callcenter_base'], [ 'id', 'ativo', 'nome', 'cpf', 'data_nascimento', 'matricula', 'cep', 'endereco', 'numero', 'complemento', 'bairro', 'cidade', 'uf', 'orgao', 'status_atendimento', 'data_ultimo_atendimento', 'agendado_para', 'hora_agendada', 'email', 'carteira_corretor', 'valor_saque']) ->joinLeft(["campanhas" => "tb_callcenter_campanhas"], "base.campanha_id = campanhas.id", array( 'campanha' => 'nome' )) ->joinLeft(["usuarios" => "tb_usuarios"], "usuarios.id = base.usuario_ultimo_atendimento", array( 'usuario' => 'login', 'usuario_id' => 'id' )) ->joinLeft(["usuarios2" => "tb_usuarios"], "usuarios2.id = base.usuario_carteirizacao", array( 'usuario_carteira' => 'login' )) ->joinLeft(['corretores' => 'tb_corretores'], 'usuarios.corretor_id = corretores.id', array()) ->joinLeft(['rotas' => 'tb_rotas'], 'corretores.rota_id = rotas.id', array()) ->joinLeft(['orgao' => 'tb_orgaos'], 'base.orgao_id = orgao.id', array('orgao' => 'descricao')) ->joinLeft(['secretaria' => 'tb_secretarias'], 'base.secretaria_id = secretaria.id', array('secretaria' => 'descricao')) ->joinLeft(['telefones' => 'tb_callcenter_telefones'], 'base.id = telefones.cliente_id and telefones.excluido<>1', array("fones" => new Zend_Db_Expr("GROUP_CONCAT(fone SEPARATOR ' / ')"))) ->joinLeft(['supervisores' => 'tb_callcenter_campanha_supervisores'], 'campanhas.id = supervisores.campanha_id', []) ->group('base.id') ->order($order); $this->_prepareFilter($select, $fields); if($usuario->grupo == "Supervisor") { $select->where('supervisores.supervisor_id = ?', $usuario->id); } if (!empty($fields['convenio_id']) && count($fields['convenio_id']) > 0) { $select->joinLeft(["simulacao" => "tb_simulacao_aberta"], "base.id = simulacao.cliente_id", ['convenio_id']) ->where("simulacao.convenio_id IN(?)", $fields['convenio_id']); } if ($page) { $paginator = Zend_Paginator::factory($select); $paginator->setCurrentPageNumber($page); return $paginator; } else { $data = $dbtable->getAdapter()->fetchAll($select); } return $data; } public function getAgendaDashboard() { $dbtable = new Model_DbTable_CallcenterBase(); $select = $dbtable->getAdapter()->select(); $select->from(['base' => 'tb_callcenter_base'], ['id', 'nome', 'agendado_para', 'hora_agendada', 'cpf']) ->joinLeft(["campanhas" => "tb_callcenter_campanhas"], "base.campanha_id = campanhas.id", ['campanha' => 'nome']) ->order(["agendado_para ASC", "hora_agendada", ""]); $fields = [ 'status_atendimento' => Model_CallcenterStatusAtendimento::getStatusParaAgendamento(), 'data_agendada_a' => Zend_Date::now()->get('dd/MM/yyyy'), 'data_agendada_de' => Zend_Date::now()->subDay(60)->get('dd/MM/yyyy') ]; $ns = new Zend_Session_Namespace(); if( substr(Yuppie_Auth::getIdentity()->grupo, 0, 10) == "Callcenter" || (!$ns->acl->isAllowed(Yuppie_Auth::getIdentity()->grupo, 'visualizar-corretores-callcenter') && Yuppie_Auth::getIdentity()->grupo != 'Supervisor') ){ $fields['usuario_ultimo_atendimento'] = Yuppie_Auth::getIdentity()->id; } $this->_prepareFilter($select, $fields); return $dbtable->getAdapter()->fetchAll($select); } protected function _prepareFilter(&$select, array $fields) { if( isset($fields['campanha_id']) ){ if( is_array($fields['campanha_id']) && count(array_filter($fields['campanha_id'])) > 0 ){ $select->where("base.campanha_id IN(" . implode(", ", array_filter($fields['campanha_id'])) . ")"); } elseif( !empty($fields['campanha_id']) ){ $select->where("base.campanha_id = " . $fields['campanha_id']); } } if( isset($fields['apenas_carteirizados']) && $fields['apenas_carteirizados'] ){ $select->where("base.usuario_carteirizacao IS NOT NULL"); } if( isset($fields['nome']) && !empty($fields['nome']) ){ unset($fields['usuario_carteirizacao']); $select->where("base.nome LIKE ?", "%{$fields['nome']}%"); } if( isset($fields['orgao']) && !empty($fields['orgao']) ){ $select->where("base.orgao LIKE ?", "%{$fields['orgao']}%"); } if( isset($fields['orgao_id']) ){ if( is_array($fields['orgao_id']) && count(array_filter($fields['orgao_id'])) > 0 ){ $select->where("base.orgao_id IN (?)", implode(", ", array_filter($fields['orgao_id']))); } elseif( !empty($fields['campanha_id']) ){ $select->where("base.orgao_id = ?", $fields['orgao_id']); } } if( isset($fields['secretaria_id']) ){ if( is_array($fields['secretaria_id']) && count(array_filter($fields['secretaria_id'])) > 0 ){ $select->where("base.secretaria_id IN (?)", implode(", ", array_filter($fields['secretaria_id']))); } elseif( !empty($fields['secretaria_id']) ){ $select->where("base.secretaria_id = ?", $fields['secretaria_id']); } } if( !empty($fields['especie']) ){ $select->joinInner(['beneficios' => 'tb_callcenter_beneficios'],'base.id = beneficios.base_cliente_id', ['especie']); $select->where("beneficios.especie IN (?)", $fields['especie']); } if( isset($fields['cpf']) && !empty($fields['cpf']) ){ $select->where("base.cpf = ?", String_Refatorar::formatarCpf($fields['cpf'])); } if( isset($fields['uf']) && !empty($fields['uf']) ){ $select->where("base.uf = ?", $fields['uf']); } if( isset($fields['cidade']) && !empty($fields['cidade']) ){ $select->where("base.cidade = ?", $fields['cidade']); } if( isset($fields['idade_de']) && $fields['idade_de'] ){ $select->where("DATE_FORMAT(FROM_DAYS(DATEDIFF(now(), base.data_nascimento)), '%y') >= ?", $fields['idade_de']); } if( isset($fields['idade_ate']) && $fields['idade_ate'] ){ $select->where("DATE_FORMAT(FROM_DAYS(DATEDIFF(now(), base.data_nascimento)), '%y') <= ?", $fields['idade_ate']); } if( isset($fields['status_atendimento']) && !empty($fields['status_atendimento']) ){ if( is_array($fields['status_atendimento']) ){ $fields['status_atendimento'] = array_filter($fields['status_atendimento']); $tmp = array(); //verifica se foi passado o filtro SEM STATUS. Então filtra e remove o item do array if(($key = array_search("SEM_STATUS", $fields['status_atendimento'])) !== FALSE) { $tmp[] = '(base.status_atendimento IS NULL)'; unset($fields['status_atendimento'][$key]); } $fields['status_atendimento'] = array_filter($fields['status_atendimento']); if( count($fields['status_atendimento']) > 0 ){ $tmp[] = "(base.status_atendimento IN ('" . implode("', '", $fields['status_atendimento']) . "'))"; } if( count($tmp) > 0 ){ $select->where('(' . implode(' OR ', $tmp) . ')'); } } else { if( $fields['status_atendimento'] == 'sem_status' ){ $select->where("base.status_atendimento IS NULL"); } else { $select->where("(base.status_atendimento = '" . $fields['status_atendimento'] . "')"); } } } if(!empty($fields['data_agendada_de']) && empty($fields['data_agendada_a']) || empty($fields['data_agendada_de']) && !empty($fields['data_agendada_a']) ){ throw new Core_Exception('Ao filtrar por data, os dois campos devem estar preenchidos.'); }elseif( !empty($fields['data_agendada_de']) && !empty($fields['data_agendada_a'])){ try { $dataDe = new Zend_Date($fields['data_agendada_de']); $dataA = new Zend_Date($fields['data_agendada_a']); $dataA->subDay(60); } catch (Zend_Date_Exception $e) { throw new Core_Exception('Data informada é inválida'); } if ($dataDe->isEarlier($dataA)) { throw new Core_Exception('O filtro de datas deve estar entre um periodo de 60 dias.'); } $select->where("base.agendado_para >= STR_TO_DATE(?, '%d/%m/%Y')", $fields['data_agendada_de']); $select->where("base.agendado_para <= STR_TO_DATE(?, '%d/%m/%Y')", $fields['data_agendada_a']); } if( !empty($fields['usuario_ultimo_atendimento']) ){ $select->where('base.usuario_ultimo_atendimento = ?', $fields['usuario_ultimo_atendimento']); } if( isset($fields['fone']) && !empty($fields['fone']) ){ if( !array_key_exists("telefones", $select->getPart(Zend_Db_Select::FROM)) ){ $select->joinLeft(array( 'telefones' => 'tb_callcenter_telefones' ), 'base.id = telefones.cliente_id', array()); } $select->where("telefones.fone LIKE ?", preg_replace("/[^0-9]/", "", $fields['fone'])); } if( !empty($fields['existe_telefone']) ){ if( !array_key_exists("telefones", $select->getPart(Zend_Db_Select::FROM)) ){ $select->joinLeft(['telefones' => 'tb_callcenter_telefones'], 'base.id = telefones.cliente_id and telefones.excluido<>1', []); } if( $fields['existe_telefone'] == "S" ){ $select->where("telefones.fone IS NOT NULL"); }elseif( $fields['existe_telefone'] == "N" ){ $select->where("telefones.fone IS NULL"); } } if( isset($fields['matricula']) && !empty($fields['matricula']) ){ $select->where("base.matricula LIKE ?", "%{$fields['matricula']}%"); } if( (isset($fields['data_inicial']) && $fields['data_inicial']) || (isset($fields['hora_inicial']) && $fields['hora_inicial']) ){ if( !isset($fields['hora_inicial']) || !$fields['hora_inicial'] ){ $fields['hora_inicial'] = '00:00:00'; } if( !isset($fields['data_inicial']) || !$fields['data_inicial'] ){ $fields['data_inicial'] = Zend_Date::now()->get('dd/MM/yyyy'); } $dtInicial = new Zend_Date($fields['data_inicial'] . ' ' . $fields['hora_inicial'], 'dd/MM/yyyy HH:mm:ss'); $select->where("(data_ultimo_atendimento >= '" . $dtInicial->get('yyyy-MM-dd HH:mm:ss') . "')"); } if( isset($fields['data_final']) && $fields['data_final'] || isset($fields['hora_final']) && $fields['hora_final'] ){ if( !isset($fields['hora_final']) || !$fields['hora_final'] ){ $fields['hora_final'] = '23:59:59'; } if( !isset($fields['data_final']) || !$fields['data_final'] ){ $fields['data_final'] = Zend_Date::now()->get('dd/MM/yyyy'); } $dtFinal = new Zend_Date($fields['data_final'] . ' ' . $fields['hora_final'], 'dd/MM/yyyy HH:mm:ss'); $select->where("(data_ultimo_atendimento <= '" . $dtFinal->get('yyyy-MM-dd HH:mm:ss') . "')"); } if( isset($fields['usuario_carteirizacao']) && !empty($fields['usuario_carteirizacao']) ){ $select->where("base.usuario_carteirizacao = ?", $fields['usuario_carteirizacao']); } if( isset($fields['secretaria']) && !empty($fields['secretaria']) ){ $select->where("base.secretaria LIKE ?", "%{$fields['secretaria']}%"); } if( isset($fields['cargo']) && !empty($fields['cargo']) ){ $select->where("base.cargo LIKE ?", "%{$fields['cargo']}%"); } if( isset($fields['ativo']) && !empty($fields['ativo']) ){ if( $fields['ativo'] == 1 ){ $select->where("base.ativo = 1"); }else{ $select->where("base.ativo = 0"); } } if(!empty($fields['obito'])){ if( $fields['obito'] == 1 ){ $select->where("base.obito = 1"); }else{ $select->where("base.obito = 0"); } } if(!empty($fields['data_higienizacao_de']) && empty($fields['data_higienizacao_a']) || empty($fields['data_higienizacao_de']) && !empty($fields['data_higienizacao_a']) ){ throw new Core_Exception('Ao filtrar por data, os dois campos devem estar preenchidos.'); }elseif( !empty($fields['data_higienizacao_de']) && !empty($fields['data_higienizacao_a'])){ $dataDe = new Zend_Date($fields['data_higienizacao_de']); $dataA = new Zend_Date($fields['data_higienizacao_a']); $dataA->subDay(60); if ($dataDe->isEarlier($dataA)) { throw new Core_Exception('O filtro de datas deve estar entre um periodo de 60 dias.'); } $select->where("base.data_higienizacao >= STR_TO_DATE(?, '%d/%m/%Y')", $fields['data_higienizacao_de']); $select->where("base.data_higienizacao <= STR_TO_DATE(?, '%d/%m/%Y')", $fields['data_higienizacao_a']); } if( !empty($fields['parcelas_pagas']) ){ if( !array_key_exists('emprestimos', $select->getPart(Zend_Db_Select::FROM)) ){ $select->joinInner( array('emprestimos' => 'tb_callcenter_emprestimos_clientes'), "emprestimos.base_cliente_id = base.id", array()); } $select->where("emprestimos.parcelas_pagas >= ?", $fields['parcelas_pagas']); } if ( !empty($fields['rota_id']) ){ $select->where("(base.usuario_ultimo_atendimento IS NOT NULL AND rotas.id = ?)" ." OR (base.usuario_ultimo_atendimento IS NULL AND base.usuario_carteirizacao IS NULL)", $fields['rota_id']); } if( !empty($fields['banco_emp']) ){ if( !array_key_exists('emprestimos', $select->getPart(Zend_Db_Select::FROM)) ){ $select->joinInner( array('emprestimos' => 'tb_callcenter_emprestimos_clientes'), "emprestimos.base_cliente_id = base.id", array()); } $select->where("emprestimos.banco IN (?)", $fields['banco_emp']); } if( !empty( $fields['valor_parcela'] )){ $fields['valor_parcela_de'] = $fields['valor_parcela']; } if( !empty( $fields['valor_parcela_de'] )){ $valorParcela = String_Refatorar::parseStringToFloat($fields['valor_parcela_de']); if( $valorParcela > 0 ){ if( !array_key_exists('emprestimos', $select->getPart(Zend_Db_Select::FROM)) ){ $select->joinInner( array('emprestimos' => 'tb_callcenter_emprestimos_clientes'), "emprestimos.base_cliente_id = base.id", array()); } $select->where("emprestimos.valor_parcela >= $valorParcela"); } } if( !empty( $fields['valor_parcela_a'] )){ $valorParcela = String_Refatorar::parseStringToFloat($fields['valor_parcela_a']); if( $valorParcela > 0 ){ if( !array_key_exists('emprestimos', $select->getPart(Zend_Db_Select::FROM)) ){ $select->joinInner( array('emprestimos' => 'tb_callcenter_emprestimos_clientes'), "emprestimos.base_cliente_id = base.id", array()); } $select->where("emprestimos.valor_parcela <= $valorParcela"); } } if(!empty( $fields['margem'])){ $fields['margem_consignado_de'] = $fields['margem']; } if(!empty( $fields['margem_consignado_de'])){ $margem = String_Refatorar::parseStringToFloat($fields['margem_consignado_de']); if( $margem > 0 ){ if( !array_key_exists('beneficios', $select->getPart(Zend_Db_Select::FROM)) ){ $select->joinInner(array('beneficios' => 'tb_callcenter_beneficios'), 'base.cpf = beneficios.cpf_cliente', array()); } $select->where("beneficios.margem_livre >= {$margem}") ->where("beneficios.cessado = 0") ->where("beneficios.bloq_emp = 0"); } } if(!empty( $fields['margem_consignado_a'])){ $margem = String_Refatorar::parseStringToFloat($fields['margem_consignado_a']); if( $margem > 0 ){ if( !array_key_exists('beneficios', $select->getPart(Zend_Db_Select::FROM)) ){ $select->joinInner(array('beneficios' => 'tb_callcenter_beneficios'), 'base.cpf = beneficios.cpf_cliente', array()); } $select->where("beneficios.margem_livre <= {$margem}") ->where("beneficios.cessado = 0") ->where("beneficios.bloq_emp = 0"); } } if(!empty($fields['margem_cartao'])){ $fields['margem_cartao_de'] = $fields['margem_cartao']; } if(!empty( $fields['margem_cartao_de'])){ $margem = String_Refatorar::parseStringToFloat($fields['margem_cartao_de']); if( $margem > 0 ){ if( !array_key_exists('beneficios', $select->getPart(Zend_Db_Select::FROM)) ){ $select->joinInner(array('beneficios' => 'tb_callcenter_beneficios'), 'base.cpf = beneficios.cpf_cliente', array()); } $select->where("beneficios.margem_cartao >= {$margem}") ->where("beneficios.cessado = 0") ->where("beneficios.bloq_emp = 0"); } } if(!empty( $fields['margem_cartao_a'])){ $margem = String_Refatorar::parseStringToFloat($fields['margem_cartao_a']); if( $margem > 0 ){ if( !array_key_exists('beneficios', $select->getPart(Zend_Db_Select::FROM)) ){ $select->joinInner(array('beneficios' => 'tb_callcenter_beneficios'), 'base.cpf = beneficios.cpf_cliente', array()); } $select->where("beneficios.margem_cartao <= {$margem}") ->where("beneficios.cessado = 0") ->where("beneficios.bloq_emp = 0"); } } if(!empty($fields['saque_complementar'])){ $fields['saque_complementar_de'] = $fields['saque_complementar']; } if(!empty( $fields['saque_complementar_de'])){ $margem = String_Refatorar::parseStringToFloat($fields['saque_complementar_de']); if( $margem > 0 ){ if( !array_key_exists('beneficios', $select->getPart(Zend_Db_Select::FROM)) ){ $select->joinInner(array('beneficios' => 'tb_callcenter_beneficios'), 'base.cpf = beneficios.cpf_cliente', array()); } $select->where("beneficios.saque_complementar >= {$margem}") ->where("beneficios.cessado = 0") ->where("beneficios.bloq_emp = 0"); } } if(!empty( $fields['saque_complementar_a'])){ $margem = String_Refatorar::parseStringToFloat($fields['saque_complementar_a']); if( $margem > 0 ){ if( !array_key_exists('beneficios', $select->getPart(Zend_Db_Select::FROM)) ){ $select->joinInner(array('beneficios' => 'tb_callcenter_beneficios'), 'base.cpf = beneficios.cpf_cliente', array()); } $select->where("beneficios.saque_complementar <= {$margem}") ->where("beneficios.cessado = 0") ->where("beneficios.bloq_emp = 0"); } } if(!empty( $fields['margem_bens_duraveis'])){ $fields['margem_bens_duraveis_de'] = $fields['margem_bens_duraveis']; } if(!empty($fields['margem_bens_duraveis_de'])){ $margem = String_Refatorar::parseStringToFloat($fields['margem_bens_duraveis_de']); if( $margem > 0 ){ if( !array_key_exists('beneficios', $select->getPart(Zend_Db_Select::FROM)) ){ $select->joinInner(array('beneficios' => 'tb_callcenter_beneficios'), 'base.cpf = beneficios.cpf_cliente', array()); } $select->where("beneficios.margem_bens_duraveis >= {$margem}"); } } if(!empty( $fields['margem_bens_duraveis_a'])){ $margem = String_Refatorar::parseStringToFloat($fields['margem_bens_duraveis_a']); if( $margem > 0 ){ if( !array_key_exists('beneficios', $select->getPart(Zend_Db_Select::FROM)) ){ $select->joinInner(array('beneficios' => 'tb_callcenter_beneficios'), 'base.cpf = beneficios.cpf_cliente', array()); } $select->where("beneficios.margem_bens_duraveis <= {$margem}"); } } if( array_key_exists('opcao_ura_reversa', $fields) && $fields['opcao_ura_reversa'] != '#' ){ if( !array_key_exists('telefones', $select->getPart(Zend_Db_Select::FROM)) ){ $select->joinInner(['telefones' => 'tb_callcenter_telefones'],'base.id = telefones.cliente_id AND telefones.excluido<>1', []); } $select->where("telefones.opcao_ura_reversa = ?", $fields['opcao_ura_reversa']); } if (!empty($fields['salario_de'])) { $salario = String_Refatorar::parseStringToFloat($fields['salario_de']); (new Model_DbTable_CallcenterBase())->getJoinBeneficios($select); $select->where("beneficios.mr >= {$salario}"); } if (!empty($fields['salario_a'])) { $salario = String_Refatorar::parseStringToFloat($fields['salario_a']); (new Model_DbTable_CallcenterBase())->getJoinBeneficios($select); $select->where("beneficios.mr <= {$salario}"); } if (!empty($fields['emprestimos_de']) || !empty($fields['emprestimos_a'])) { $subquery = (new Model_DbTable_CallcenterEmprestimoCliente())->sqlQuantidadeEmprestimos(); $select->join(['emprestimos' => $subquery], "emprestimos.cpf = base.cpf", ['emprestimos.quantidade_emprestimos']); } if (!empty($fields['emprestimos_de'])) { $select->where("emprestimos.quantidade_emprestimos >= {$fields['emprestimos_de']}"); } if (!empty($fields['emprestimos_a'])) { $select->where("emprestimos.quantidade_emprestimos <= {$fields['emprestimos_a']}"); } if (!empty($fields['fgts_ativo'])) { if( !array_key_exists('fgts', $select->getPart(Zend_Db_Select::FROM)) ){ $select->joinLeft(['fgts' => 'tb_callcenter_fgts'], 'base.id = fgts.base_id', []); } if ($fields['fgts_ativo'] == 1) { $select->where("fgts.id IS NOT NULL AND fgts.valor > 0"); } else { $select->where("fgts.id IS NULL OR fgts.valor = 0"); } } if (!empty($fields['status_fgts'])) { if( !array_key_exists('fgts', $select->getPart(Zend_Db_Select::FROM)) ){ $select->joinLeft(['fgts' => 'tb_callcenter_fgts'], 'base.id = fgts.base_id', []); } $select->where("fgts.descricao_erro IN (?)", $fields['status_fgts']); } if (!empty( $fields['taxa_de'])) { $taxa = String_Refatorar::parseStringToFloat($fields['taxa_de']); if ($taxa > 0) { if (!array_key_exists('emprestimos', $select->getPart(Zend_Db_Select::FROM))) { $select->joinInner( array('emprestimos' => 'tb_callcenter_emprestimos_clientes'), "emprestimos.base_cliente_id = base.id", []); } $select->where("emprestimos.taxa >= $taxa"); } } if (!empty( $fields['taxa_ate'])) { $taxa = String_Refatorar::parseStringToFloat($fields['taxa_ate']); if ($taxa > 0) { if (!array_key_exists('emprestimos', $select->getPart(Zend_Db_Select::FROM))) { $select->joinInner( array('emprestimos' => 'tb_callcenter_emprestimos_clientes'), "emprestimos.base_cliente_id = base.id", []); } $select->where("emprestimos.taxa <= $taxa"); } } } /** * Exclui o registro passado por parâmetro * @param int $id * @return int The number of rows deleted */ public function excluir($id) { if( $id > 0 ){ $dbtable = new Model_DbTable_CallcenterBase(); return $dbtable->delete("id = " . $id); } return null; } /** * Retorna um fetchRow do item passado por parâmetro * @param int $id * @return Zend_Db_Table_Row_Abstract | null */ public function exibir($id) { if( empty($id) ){ return; } // $dbtable = new Model_DbTable_CallcenterBase(); // $dbtable->closeConnection(); // return $dbtable->fetchRow("id = " . $id); $dbtable = new Model_DbTable_CallcenterBase(); $dbtable->closeConnection(); $sql = $dbtable->select() ->from(['base' => 'tb_callcenter_base'], [ '*' ]) ->joinLeft([ 'orgao' => 'tb_orgaos' ], 'base.orgao_id = orgao.id', ['orgao' => 'descricao']) ->joinLeft([ 'secretaria' => 'tb_secretarias' ], 'base.secretaria_id = secretaria.id', ['secretaria' => 'descricao']) ->where("base.id = ?", $id) ->setIntegrityCheck(false); return $dbtable->fetchRow($sql); } public function existeCpf($cpf) { $dbtable = new Model_DbTable_CallcenterBase(); $dbtable->closeConnection(); return $dbtable->fetchRow(["cpf = ?" => String_Refatorar::formatarCpf($cpf)]); } /** * Salva o registro passado por parâmetro * @param Model_CallcenterBase $base */ public function higienizar(Model_CallcenterBase $base) { $dbtable = new Model_DbTable_CallcenterBase(); if( $base->getId() > 0 ){ $dados = $base->_toArray(); unset($dados['status_atendimento']); unset($dados['agendado_para']); unset($dados['loja_finalizar']); unset($dados['ativo']); $dbtable->update($dados, "id = " . $base->getId()); return $base->getId(); } return null; } /** * Adiciona os emprestimos do cliente consultados no MultiBR * @param array $dadosConsulta * @return int */ public function adicionarEmprestimos($dadosConsulta, $baseId, $tipo = 'EMPRESTIMO') { $cpfCliente = String_Refatorar::formatarCpf($dadosConsulta['cpf']); $tipoLaco = "emprestimos"; if($tipo == 'EMPRESTIMO OCULTO' ){ $tipoLaco = "emprestimos_ocultos"; }elseif($tipo == "RESERVA CARTAO"){ $tipoLaco = "reserva_cartao"; } if( isset($dadosConsulta['itens'][$tipoLaco]) ){ $beneficio = $dadosConsulta['beneficio'] ? $dadosConsulta['beneficio'] : $dadosConsulta['matricula']; $callcenterEmprestimo = new Model_DbTable_CallcenterEmprestimoCliente(); //limpa as consultas existentes $callcenterEmprestimo->limparConsultaEmprestimos($cpfCliente, $beneficio, $tipo); $dadosInserir = array(); foreach ( $dadosConsulta['itens'][$tipoLaco] as $emprestimo ) { $dtInicio = null; if( !empty($emprestimo['inicio_contrato']) ){ if( strlen($emprestimo['inicio_contrato']) == 7 ){ $dtInicio = new Zend_Date($emprestimo['inicio_contrato'], 'MM/yyyy'); }else{ $dtInicio = new Zend_Date($emprestimo['inicio_contrato']); } } $dtTermino = null; if( !empty($emprestimo['fim_contrato']) ){ if( strlen($emprestimo['fim_contrato']) == 7 ){ $dtTermino = new Zend_Date($emprestimo['fim_contrato'], 'MM/yyyy'); }else{ $dtTermino = new Zend_Date($emprestimo['fim_contrato']); } } $dataInclusao = null; if( isset($emprestimo['data_inclusao']) && !empty($emprestimo['data_inclusao']) ){ $dataInclusao = new Zend_Date($emprestimo['data_inclusao']); } $dadosInserir[] = array( 'cpf_cliente' => $cpfCliente, 'base_cliente_id' => $baseId, 'tipo' => $emprestimo['tipo'], 'beneficio' => $beneficio, 'banco' => isset($emprestimo['nome_banco']) ? $emprestimo['nome_banco'] : null, 'valor_parcela' => isset($emprestimo['valor_parcela']) ? $emprestimo['valor_parcela'] : null, 'quitacao' => isset($emprestimo['quitacao']) ? $emprestimo['quitacao'] : null, 'qtd_parcelas' => isset($emprestimo['prazo']) ? $emprestimo['prazo'] : null, 'parcelas_pagas' => isset($emprestimo['qtypagas']) ? $emprestimo['qtypagas']: null, 'numero_contrato' => isset($emprestimo['contrato']) ? $emprestimo['contrato'] : null, 'numero_banco' => isset($emprestimo['banco']) ? $emprestimo['banco'] : null, 'inicio_contrato' => $dtInicio instanceof Zend_Date ? $dtInicio->get('yyyy-MM') : null, 'termino_contrato' => $dtTermino instanceof Zend_Date ? $dtTermino->get('yyyy-MM') : null, 'valor_emprestimo' => $emprestimo['tipo'] == "RESERVA CARTAO" ? $emprestimo['valor_reservado'] : $emprestimo['vlremprestimo'], 'valor_atual_beneficio' => isset($emprestimo['limite_cartao']) ? $emprestimo['limite_cartao'] : null, 'data_inclusao' => $dataInclusao instanceof Zend_Date ? $dataInclusao->get('yyyy-MM-dd') : null, 'situacao' => isset($emprestimo['situacao']) ? $emprestimo['situacao'] : null, 'emp_bloq' => isset($emprestimo['emp_bloq']) ? $emprestimo['emp_bloq'] : null, 'data_quitacao' => !empty($emprestimo['fim_contrato']) ? $emprestimo['fim_contrato'] : null, 'parcelas_abertas' => !empty($emprestimo['parcelas_restantes']) ? $emprestimo['parcelas_restantes'] : null, 'taxa' => $emprestimo['taxa']?? 0 ); } return $callcenterEmprestimo->insertMultipleValues($dadosInserir); } } protected function adicionarTelefones($cpfCliente, $dadosConsulta, $clienteId = 0) { $cont = 0; $filterDigits = new Zend_Filter_Digits(); if( isset($dadosConsulta['itens']['telefones']) && $this->_higienizarTelefones ){ $telefones = $dadosConsulta['itens']['telefones']; foreach ( $telefones as $fone ) { if( !$clienteId ){ $callcenterBase = new Model_DbTable_CallcenterBase(); $cliente = $callcenterBase->fetchRow("cpf = '{$filterDigits->filter($cpfCliente)}'"); $clienteId = $cliente->id; } if( $clienteId ){ $callcenterTelefone = new Model_DbTable_CallcenterTelefone(); $result = $callcenterTelefone->insert(array( 'cliente_id' => $clienteId, 'cpf_cliente' => String_Refatorar::formatarCpf($cpfCliente), 'fone' => $fone, 'nao_perturbe' => 0 )); if( $result != null ){ $cont++; } } } } return $cont; } /** * Retorna a quantidade de emprestimos do cliente consultados * @param array $beneficios * @return int */ public function consultaBeneficios($cpfCliente, $beneficios, $tipo = 'A', $registrarConsulta = true) { if (!is_array($beneficios)) { return; } $configs = include CLIENT_PATH . '/configs/callcenter.php'; if (!isset($configs['consulta_beneficio'])) { throw new Core_Exception('Selecione um serviço para consulta de benefício nas configurações.' ); } $serviceClass = 'Core_Service_' . $configs['consulta_beneficio']; $consulta = new $serviceClass; $dadosCliente = $this->existeCpf($cpfCliente); if (!$dadosCliente) { throw new Core_Exception("Cliente não localizado!"); } foreach ( $beneficios as $registro ) { $beneficio = $registro['beneficio']; //consulta informacoes dos beneficios $consulta->setCpf($cpfCliente); try { $dadosConsulta = $consulta->getConsignadoPorBeneficio(trim($beneficio)); } catch (Exception $e) { continue; } if ($dadosConsulta != null) { //tratamento pq em alguns casos o analise.info não está trazendo o cpf no retorno dessa consulta. if (empty($dadosConsulta['cpf'])) { $dadosConsulta['cpf'] = $cpfCliente; } if ($registrarConsulta) { //registra que a consulta foi efetuada $consultaMultiBr = new Model_DbTable_ConsultaHiscon(); $consultaMultiBr->insert(array( 'cpf' => $cpfCliente, 'beneficio' => trim($beneficio), 'tipo' => $tipo, 'margem_cartao' => $dadosConsulta['margem_cartao'], 'margem_cartao_rmc' => $dadosConsulta['margem_cartao_rmc'], 'margem' => $dadosConsulta['margem'], 'origem' => $dadosConsulta['origem'] )); } $atualizaCliente = false; if ($dadosConsulta['obito'] == "SIM") { $dadosCliente->obito = 1; $atualizaCliente = true; continue; } if ($dadosConsulta['rep_legal'] == "SIM") { $dadosCliente->rep_legal = 1; $atualizaCliente = true; } if (empty($dadosCliente->nome)) { $dadosCliente->nome = $dadosConsulta['nome']; $atualizaCliente = true; } if (empty($dadosCliente->sexo)) { $dadosCliente->sexo = $dadosConsulta['sexo']; $atualizaCliente = true; } if (empty($dadosCliente->data_nascimento) && !empty($dadosConsulta['data_nascimento'])) { $dataNascimento = Core_Util::convertDate($dadosConsulta['data_nascimento']); if (!is_array($dataNascimento)) { $dadosCliente->data_nascimento = $dataNascimento; $atualizaCliente = true; } } if ($atualizaCliente) { $dadosCliente->save(); } //adiciona os empréstimos no callcenter $this->adicionarEmprestimos($dadosConsulta, $dadosCliente->id); $this->adicionarEmprestimos($dadosConsulta, $dadosCliente->id, "EMPRESTIMO OCULTO"); $this->adicionarEmprestimos($dadosConsulta, $dadosCliente->id, "RESERVA CARTAO"); try{ //adiciona os telefones no callcenter $this->adicionarTelefones($cpfCliente, $dadosConsulta, $dadosCliente->id); } catch (Exception $e){ // } $this->addEnderecos($dadosConsulta['itens']['enderecos'], $cpfCliente); $this->addBeneficios($dadosConsulta, $cpfCliente, $dadosCliente->id); } } unset($dadosCliente); } public function consultaSiape($cpfCliente, $matricula = null, $tipo = 'A', $registrarConsulta = true) { if( empty($cpfCliente) && empty($matricula) ){ return; } $configs = include CLIENT_PATH . '/configs/callcenter.php'; if( !isset($configs['consulta_beneficio']) ){ $this->_helper->json(array( 'alert' => 'Selecione um serviço ' . 'para consulta de benefício nas configurações' )); } $serviceClass = 'Core_Service_' . $configs['consulta_beneficio']; $consulta = new $serviceClass; $dadosCliente = $this->existeCpf($cpfCliente); $this->setOptions($dadosCliente->toArray(), true); //consulta informacoes dos beneficios $consulta->setCpf($cpfCliente); $dadosConsulta = $consulta->getSiape($matricula, $cpfCliente); if( $dadosConsulta != null ){ //tratamento pq em alguns casos o analise.info não está trazendo o cpf no retorno dessa consulta. if( empty($dadosConsulta['cpf']) ){ $dadosConsulta['cpf'] = $cpfCliente; } $dadosConsulta['beneficio'] = trim($dadosConsulta['matricula']); if( $registrarConsulta ){ //registra que a consulta foi efetuada $consultaMultiBr = new Model_DbTable_ConsultaHiscon(); $consultaMultiBr->insert(array( 'cpf' => $cpfCliente, 'beneficio' => trim($dadosConsulta['matricula']), 'tipo' => $tipo, 'margem_cartao' => $dadosConsulta['margem_cartao'], 'margem_cartao_rmc' => $dadosConsulta['margem_cartao_rmc'], 'margem' => $dadosConsulta['margem'], 'origem' => $dadosConsulta['origem'] )); } if( $dadosConsulta['obito'] == "SIM"){ $this->setObito(1); $this->salvar($this); } if( $dadosConsulta['rep_legal'] == "SIM"){ $this->setRepLegal(1); $this->salvar($this); } //adiciona os empréstimos no callcenter $this->adicionarEmprestimos($dadosConsulta, $dadosCliente->id); $this->adicionarEmprestimos($dadosConsulta, $dadosCliente->id, "EMPRESTIMO OCULTO"); $this->adicionarEmprestimos($dadosConsulta, $dadosCliente->id, "RESERVA CARTAO"); try{ //adiciona os telefones no callcenter $this->adicionarTelefones($cpfCliente, $dadosConsulta, $dadosCliente->id); } catch (Exception $e){ // } $this->addEnderecos($dadosConsulta['itens']['enderecos'], $cpfCliente); $this->addBeneficios($dadosConsulta, $cpfCliente, $dadosCliente->id); } unset($dadosCliente); } /** * Altera o status do cliente para que seja digitada a proposta dele no sistema * @param int $id * @return int | null */ public function finalizarFilial($id) { if( $id > 0 ){ $dbtable = new Model_DbTable_CallcenterBase(); return $dbtable->update(array( 'status_atendimento' => 'DIGITAR PROPOSTA' ), 'id = ' . $id); } return null; } public function resetarAtendimentoCliente($clienteId) { $dbtable = new Model_DbTable_CallcenterBase(); return $dbtable->resetAtendimentoCliente($clienteId); } public function agendarAtendimentoCliente($clienteId, $data, $hora, $status, $usuarioUltimoAtendimento = null) { $dbtable = new Model_DbTable_CallcenterBase(); return $dbtable->agendarAtendimentoCliente($clienteId, $data, $hora, $status, $usuarioUltimoAtendimento); } public function getUfs() { $dbtable = new Model_DbTable_CallcenterBase(); $sql = $dbtable->select() ->from('tb_callcenter_base', array( 'DISTINCT(uf)' )) ->where("uf IS NOT NULL") ->order(array( 'uf' )); return $dbtable->getAdapter()->fetchAll($sql); } public function localizaTelefone($cpf) { if( $cpf != null ){ $sistemasTelefones = Core_Factory_ConsultaTelefones::getSistemasAtivos(); foreach ( $sistemasTelefones as $sistema ) { try { $result = $this->consultaTelefones($sistema, $cpf); } catch( Core_Exception $e ){ continue; } if( $result ) return $result; } } return false; } public function resetarClientes($ids) { $dbtable = new Model_DbTable_CallcenterBase(); foreach ( $ids as $id ) { $dados = [ 'data_ultimo_atendimento' => NULL, 'usuario_ultimo_atendimento' => NULL, 'status_atendimento' => NULL, 'agendado_para' => NULL, 'hora_agendada' => NULL, 'telefone_chamada' => NULL, 'data_ultimo_reset' => Zend_Date::now()->get('yyyy-MM-dd') ]; $dbtable->update($dados, array('id = ?' => $id)); } } public function updateStatus($id){ $dbtable = new Model_DbTable_CallcenterBase(); $dados = array( 'status_atendimento' => NULL, ); $dbtable->update($dados, 'id = ' . $id); } public function getPropostasDigitar() { $params = array( "(base.status_atendimento LIKE 'RECEPCIONAR FISICO NA LOJA'" . " OR base.status_atendimento LIKE 'DIGITAR PROPOSTA'" . " OR base.status_atendimento LIKE 'PEGAR FISICO NO CLIENTE'" . " OR base.status_atendimento LIKE 'PRE DIGITACAO'". ")" ); $where = null; if( isset($fields['nome']) && !empty($fields['nome']) ){ $params[] = "base.nome LIKE '%" . $fields['nome'] . "%'"; } if( isset($fields['cpf']) && !empty($fields['cpf']) ){ $params[] = "base.cpf = '" . String_Refatorar::formatarCpf($fields['cpf']) . "'"; } //verifica se tem permissão de acesso a todos os clientes $ns = new Zend_Session_Namespace(); if( !$ns->acl->isAllowed(Yuppie_Auth::getIdentity()->grupo, 'visualizar-clientes-filiais') ){ $params[] = "base.loja_finalizar = " . Yuppie_Auth::getIdentity()->empresa_id; } if( count($params) > 0 ) $where = implode(' AND ', $params); $dbtable = new Model_DbTable_CallcenterBase(); $select = $dbtable->getAdapter()->select() ->from(array( 'base' => 'tb_callcenter_base' ), array( '*' )) ->joinInner(array( "usuarios" => "tb_usuarios" ), "base.usuario_ultimo_atendimento = usuarios.id", array( 'usuario' => 'login' )) ->joinLeft(array( "corretores" => "tb_corretores" ), "usuarios.corretor_id = corretores.id", array( 'corretor' => 'nome' )) ->where($where) ->order("base.nome ASC"); return $dbtable->getAdapter()->fetchAll($select); } public function clientesComTelefone(array $fields) { $params = array(); $where = null; if( isset($fields['campanha_id']) ){ if( is_array($fields['campanha_id']) ){ $fields['campanha_id'] = array_filter($fields['campanha_id']); if( is_array($fields['campanha_id']) ){ $fields['campanha_id'] = array_filter($fields['campanha_id']); $tmp = array(); foreach ( $fields['campanha_id'] as $value ) { if( $value == 'NULL' ){ $tmp[] = "base.campanha_id IS NULL"; } else { $tmp[] = "base.campanha_id = " . $value; } } if( count(array_filter($tmp)) > 0 ){ $params[] = '(' . implode(' OR ', $tmp) . ')'; } } elseif( !empty($fields['campanha_id']) ){ if( $fields['campanha_id'] == 'NULL' ){ $params[] = "base.campanha_id IS NULL"; } else { $params[] = "base.campanha_id = " . $fields['campanha_id']; } } } } if( isset($fields['nome']) && !empty($fields['nome']) ){ $params[] = "base.nome LIKE '%" . $fields['nome'] . "%'"; } if( isset($fields['cpf']) && !empty($fields['cpf']) ){ $params[] = "base.cpf = '" . String_Refatorar::formatarCpf($fields['cpf']) . "'"; } // verifica a uf e a cidade if( isset($fields['uf']) && !empty($fields['uf']) ){ $params[] = "base.uf = '" . $fields['uf'] . "'"; } if( isset($fields['cidade']) && !empty($fields['cidade']) ){ if( is_array($fields['cidade']) ){ $fields['cidade'] = array_filter($fields['cidade']); $tmp = array(); foreach ( $fields['cidade'] as $value ) { $tmp[] = "base.cidade = '{$value}'"; } if( count(array_filter($tmp)) > 0 ){ $params[] = '(' . implode(' OR ', $tmp) . ')'; } } else { $params[] = "base.cidade = '" . $fields['cidade'] . "'"; } } if( isset($fields['bairro']) ){ $fields['bairro'] = array_filter($fields['bairro']); } if( isset($fields['bairro']) && !empty($fields['bairro']) ){ if( is_array($fields['bairro']) ){ $fields['bairro'] = array_filter($fields['bairro']); $tmp = array(); foreach ( $fields['bairro'] as $value ) { $tmp[] = "base.bairro = '{$value}'"; } $params[] = '(' . implode(' OR ', $tmp) . ')'; } else { $params[] = "base.bairro = '" . $fields['bairro'] . "'"; } } //verifica se tem permissão de acesso a todos os clientes $ns = new Zend_Session_Namespace(); if( !$ns->acl->isAllowed(Yuppie_Auth::getIdentity()->grupo, 'visualizar-clientes-filiais') ){ $params[] = "base.loja_finalizar = " . Yuppie_Auth::getIdentity()->empresa_id; } if( isset($fields['status_atendimento']) && !empty($fields['status_atendimento']) ){ if( is_array($fields['status_atendimento']) ){ $fields['status_atendimento'] = array_filter($fields['status_atendimento']); $tmp = array(); foreach ( $fields['status_atendimento'] as $value ) { if( $value == 'sem_status' ){ $tmp[] = '(base.status_atendimento IS NULL)'; } else { $tmp[] = sprintf("(base.status_atendimento LIKE '%s')", $value); } } if( count($tmp) > 0 ){ $params[] = '(' . implode(' OR ', $tmp) . ')'; } } else { $params[] = "(base.status_atendimento = '" . $fields['status_atendimento'] . "')"; } } if( isset($fields['data_agendada_de']) && !empty($fields['data_agendada_de']) && isset($fields['data_agendada_a']) && !empty($fields['data_agendada_a']) ){ $params[] = "(base.agendado_para >= STR_TO_DATE('" . $fields['data_agendada_de'] . "', '%d/%m/%Y')" . " AND base.agendado_para <= STR_TO_DATE('" . $fields['data_agendada_a'] . "', '%d/%m/%Y'))"; } if( isset($fields['usuario_ultimo_atendimento']) && !empty($fields['usuario_ultimo_atendimento']) ){ $params[] = 'base.usuario_ultimo_atendimento = ' . $fields['usuario_ultimo_atendimento']; } if( count($params) > 0 ) $where = implode(' AND ', $params); $dbtable = new Model_DbTable_CallcenterBase(); $select = $dbtable->getAdapter()->select()->from(array( 'base' => 'tb_callcenter_base' ), array( 'COUNT(base.id)' )) ->joinInner(array( 'fones' => 'tb_callcenter_telefones' ), "base.id = fones.cliente_id", array()) ->where("fones.excluido<>1"); $dados = $dbtable->getAdapter()->fetchCol($select); if( $dados != null ){ return $dados[0]; } return 0; } public function clientesComMargem(array $fields, $margemMinima = 0) { $params = array(); $where = null; if( isset($fields['campanha_id']) ){ if( is_array($fields['campanha_id']) ){ $fields['campanha_id'] = array_filter($fields['campanha_id']); if( is_array($fields['campanha_id']) ){ $fields['campanha_id'] = array_filter($fields['campanha_id']); $tmp = array(); foreach ( $fields['campanha_id'] as $value ) { if( $value == 'NULL' ){ $tmp[] = "base.campanha_id IS NULL"; } else { $tmp[] = "base.campanha_id = " . $value; } } if( count(array_filter($tmp)) > 0 ){ $params[] = '(' . implode(' OR ', $tmp) . ')'; } } elseif( !empty($fields['campanha_id']) ){ if( $fields['campanha_id'] == 'NULL' ){ $params[] = "base.campanha_id IS NULL"; } else { $params[] = "base.campanha_id = " . $fields['campanha_id']; } } } } if( isset($fields['nome']) && !empty($fields['nome']) ){ $params[] = "base.nome LIKE '%" . $fields['nome'] . "%'"; } if( isset($fields['cpf']) && !empty($fields['cpf']) ){ $params[] = "base.cpf = '" . String_Refatorar::formatarCpf($fields['cpf']) . "'"; } // verifica a uf e a cidade if( isset($fields['uf']) && !empty($fields['uf']) ){ $params[] = "base.uf = '" . $fields['uf'] . "'"; } if( isset($fields['cidade']) && !empty($fields['cidade']) ){ if( is_array($fields['cidade']) ){ $fields['cidade'] = array_filter($fields['cidade']); $tmp = array(); foreach ( $fields['cidade'] as $value ) { $tmp[] = "base.cidade = '{$value}'"; } if( count(array_filter($tmp)) > 0 ){ $params[] = '(' . implode(' OR ', $tmp) . ')'; } } else { $params[] = "base.cidade = '" . $fields['cidade'] . "'"; } } if( isset($fields['bairro']) ){ $fields['bairro'] = array_filter($fields['bairro']); } if( isset($fields['bairro']) && !empty($fields['bairro']) ){ if( is_array($fields['bairro']) ){ $fields['bairro'] = array_filter($fields['bairro']); $tmp = array(); foreach ( $fields['bairro'] as $value ) { $tmp[] = "base.bairro = '{$value}'"; } $params[] = '(' . implode(' OR ', $tmp) . ')'; } else { $params[] = "base.bairro = '" . $fields['bairro'] . "'"; } } //verifica se tem permissão de acesso a todos os clientes $ns = new Zend_Session_Namespace(); if( !$ns->acl->isAllowed(Yuppie_Auth::getIdentity()->grupo, 'visualizar-clientes-filiais') ){ $params[] = "base.loja_finalizar = " . Yuppie_Auth::getIdentity()->empresa_id; } if( isset($fields['status_atendimento']) && !empty($fields['status_atendimento']) ){ if( is_array($fields['status_atendimento']) ){ $fields['status_atendimento'] = array_filter($fields['status_atendimento']); $tmp = array(); foreach ( $fields['status_atendimento'] as $value ) { if( $value == 'sem_status' ){ $tmp[] = '(base.status_atendimento IS NULL)'; } else { $tmp[] = sprintf("(base.status_atendimento LIKE '%s')", $value); } } if( count($tmp) > 0 ){ $params[] = '(' . implode(' OR ', $tmp) . ')'; } } else { $params[] = "(base.status_atendimento = '" . $fields['status_atendimento'] . "')"; } } if( isset($fields['data_agendada_de']) && !empty($fields['data_agendada_de']) && isset($fields['data_agendada_a']) && !empty($fields['data_agendada_a']) ){ $params[] = "(base.agendado_para >= STR_TO_DATE('" . $fields['data_agendada_de'] . "', '%d/%m/%Y')" . " AND base.agendado_para <= STR_TO_DATE('" . $fields['data_agendada_a'] . "', '%d/%m/%Y'))"; } if( isset($fields['usuario_ultimo_atendimento']) && !empty($fields['usuario_ultimo_atendimento']) ){ $params[] = 'base.usuario_ultimo_atendimento = ' . $fields['usuario_ultimo_atendimento']; } if( count($params) > 0 ) $where = implode(' AND ', $params); $dbtable = new Model_DbTable_CallcenterBase(); $select = $dbtable->getAdapter()->select()->from(array( 'base' => 'tb_callcenter_base' ), array( 'COUNT(base.id)' )) ->joinInner(array( 'beneficios' => 'tb_callcenter_beneficios' ), "base.cpf = beneficios.cpf_cliente", array()) ->where("beneficios.margem_livre > '{$margemMinima}'"); $dados = $dbtable->getAdapter()->fetchCol($select); if( $dados != null ){ return $dados[0]; } return 0; } public static function getSistemasTelefones() { $configFile = CLIENT_PATH . '/configs/callcenter.php'; $configs = require $configFile; if ( !isset($configs['sistemas_telefones'])){ $configs['sistemas_telefones'] = self::_sistemas; } return $configs['sistemas_telefones']; } public static function alterarOrdemSistemasTelefones(array $sistemasTelefones) { $configFile = CLIENT_PATH . '/configs/callcenter.php'; $configs = require $configFile; $novaOrdem = []; foreach ($sistemasTelefones as $sistema) { $key = array_search($sistema, $configs['sistemas_telefones']); $novaOrdem[$key] = $sistema; } $configs['sistemas_telefones'] = $novaOrdem; $config = new Zend_Config($configs, true); $writer = new Zend_Config_Writer_Array(['config' => $config,'filename' => $configFile]); $writer->write(); } public function consultaTelefones($sistema, $cpf) { $servico = Core_Factory_ConsultaTelefones::factory($sistema); $dados = $servico->getDadosPorCpf($cpf); return $dados; } public function salvarConsultaTelefone($dados, $cpf, $sobreporEndereco = true) { $callcenterBase = new Model_CallcenterBase(); $dadosCliente = $callcenterBase->existeCpf($cpf); if( !$dadosCliente ){ return 0; } $date = Zend_Date::now()->get('YYYY-MM-dd'); $clienteBase = new Model_CallcenterBase($dadosCliente->toArray()); $clienteBase->setDataHigienizacao($date); $clienteBase->setDataHigienizacaoTelefones($date); // [ConfirmeOnline] Atualiza dados do cliente if( !empty($dados['procon']) ){ $clienteBase->setProcon($dados['procon']); } if(!empty($dados['datanasc'])){ $clienteBase->setDataNascimento($dados['datanasc']); } if(!empty($dados['mae'])){ $clienteBase->setNomeMae($dados['mae']); } if(!empty($dados['email'])){ $clienteBase->setEmail($dados['email']); } if (!empty($dados['obito'])) { $clienteBase->setObito($dados['obito']); } if( count($dados['enderecos']) > 0 ){ // Pega o primeiro endereço $endereco = current($dados['enderecos']); if( $endereco && $sobreporEndereco ){ if($endereco['logradouro'] != "NULL" || $endereco['logradouro'] != 'ENDERECO NAO DIVULGADO'){ $clienteBase->setEndereco($endereco['logradouro']); } if($endereco['numero'] != "NULL"){ $clienteBase->setNumero($endereco['numero']); } if($endereco['complemento'] != "NULL"){ $clienteBase->setComplemento($endereco['complemento']); } if($endereco['bairro'] != "NULL"){ $clienteBase->setBairro($endereco['bairro']); } if($endereco['cep'] != "NULL"){ $clienteBase->setCep($endereco['cep']); } if($endereco['cidade'] != "NULL"){ $clienteBase->setCidade($endereco['cidade']); } if($endereco['uf'] != "NULL"){ $clienteBase->setUf($endereco['uf']); } } $this->addEnderecos($dados['enderecos'], $dadosCliente['cpf']); } if (!empty($dados['emails'])) { for ($i=0; $i < 3; $i++) { if (empty($dados['emails'][$i])) { continue; } if ($i == 0) { $clienteBase->setEmail($dados['emails'][$i]); } else { $metodo = "setEmail" . ($i + 1); $clienteBase->$metodo($dados['emails'][$i]); } } } $clienteBase->salvar($clienteBase); // [Catta] se for pessoa fisica atualiza a data de nascimento if( isset($dados['pessoa']) && $dados['pessoa'] == 1 ){ $dbtableBase = new Model_DbTable_CallcenterBase(); $dbtableBase->update(array( 'data_nascimento' => $dados['datanasc'] ), 'id = ' . $dadosCliente['id']); } $cont = 0; if( !isset($dados['telefones']) || count($dados['telefones']) == 0 ){ return 0; } /** * @todo Refatorar para tratar melhor os padrões de projeto */ $dbtableTelefone = new Model_DbTable_CallcenterTelefone(); foreach ( $dados['telefones'] as $telefone ) { try{ $inserido = $dbtableTelefone->insert(array( 'cliente_id' => $dadosCliente['id'], 'cpf_cliente' => $dadosCliente['cpf'], 'fone' => $telefone['numero'], 'origem' => $dados['origem'], 'whatsapp' => !empty($telefone['whatsapp']) ? true : false )); if( $inserido ){ $cont++; } } catch (Exception $ex) { continue; } } return array('cont' => $cont, 'cpf' => $cpf); } public function resetarVariosClientes(array $fields) { $dbtableBase = new Model_DbTable_CallcenterBase(); $dbtableTelefone = new Model_DbTable_CallcenterTelefone(); $dadosBase = [ 'data_ultimo_atendimento' => NULL, 'usuario_ultimo_atendimento' => NULL, 'status_atendimento' => NULL, 'agendado_para' => NULL, 'hora_agendada' => NULL, 'telefone_chamada' => NULL, 'data_ultimo_reset' => Zend_Date::now()->get('yyyy-MM-dd') ]; if( isset($fields['retirar_carteirizacao']) && $fields['retirar_carteirizacao'] > 0 ){ $dadosBase['usuario_carteirizacao'] = null; $dadosBase['carteira_corretor'] = null; } $select = $dbtableBase->filtrarClientes($fields, ['base.id'], 'sql'); $clientes = $dbtableBase->getAdapter()->fetchCol($select); if (empty($clientes)) { return 0; } $ids = implode($clientes, ','); $dbtableBase->update($dadosBase, "id IN ({$ids})"); if ( !empty($fields['status_discador']) ) { $dadosTelefones = [ 'discador_status' => null, 'discador_chamada_id' => null, 'opcao_ura_reversa' => null, ]; $fields['ids'] = $ids; $telefones = $dbtableTelefone->selectTelefonesParaResetar($fields); if ($telefones != null) { $dbtableTelefone->update($dadosTelefones, "id IN ($telefones)"); } } return count($clientes); } /** * Registra a consulta Siape no sistema * @param array|int $dadosConsulta * @return int */ public function registraConsultaSiape($cpfCliente, $baseId, $dadosConsulta, $tipo = 'A') { $qtdAdicionada = 0; if( $dadosConsulta != null ){ //registra que a consulta foi efetuada $consultaMultiBr = new Model_DbTable_ConsultaHiscon(); $consultaMultiBr->insert(array( 'cpf' => $cpfCliente, 'beneficio' => trim($dadosConsulta['matricula']), 'tipo' => $tipo, 'origem' => $dadosConsulta['origem'], 'orgao_consulta' => 'SIAPE' )); //adiciona os empréstimos no callcenter $qtdAdicionada = $this->adicionarEmprestimos($dadosConsulta, $baseId, "EMPRESTIMO"); $this->adicionarEmprestimos($dadosConsulta, $baseId, "EMPRESTIMO OCULTO"); $this->adicionarEmprestimos($dadosConsulta, $baseId, "RESERVA CARTAO"); //adiciona os telefones no callcenter try{ $this->adicionarTelefones($cpfCliente, $dadosConsulta); }catch(Exception $e){ } //insere os beneficios no callcenter $dbtableBeneficio = new Model_DbTable_CallcenterBeneficio(); $dbtableBeneficio->save(array( 'cpf_cliente' => String_Refatorar::formatarCpf($cpfCliente), 'base_cliente_id' => $baseId, 'beneficio' => $dadosConsulta['matricula'], 'margem_livre' => $dadosConsulta['margem'], 'margem_cartao' => $dadosConsulta['margem_cartao'], 'margem_cartao_rmc' => $dadosConsulta['margem_cartao_rmc'], 'mr' => $dadosConsulta['mr'], 'situacao' => $dadosConsulta['situacao'], 'banco_pagto' => $dadosConsulta['banco_pagto'], 'agencia_pagto' => $dadosConsulta['agencia_pagto'], 'conta_pagto' => $dadosConsulta['conta_pagto'], 'orgao_pagador' => $dadosConsulta['orgao_pagador'], 'tipo_pagto' => $dadosConsulta['tipo_pagto'], 'origem' => $dadosConsulta['origem'], 'competencia' => isset($dadosConsulta['competencia']) ? $dadosConsulta['competencia'] : '', 'especie' => isset($dadosConsulta['tipo']) ? $dadosConsulta['tipo'] : '', 'detalhamento' => isset($dadosConsulta['detalhamento']) && !empty($dadosConsulta['detalhamento']) ? $dadosConsulta['detalhamento'] : NULL, )); } return $qtdAdicionada; } /** * Grava no banco de dados do callcenter, o cliente consultado na consulta avulsa. * @param array $dadosConsulta * @return type */ public function gravarClienteConsulta($dadosConsulta) { if (empty($dadosConsulta['cpf'])) { return; } $db = Zend_Db_Table::getDefaultAdapter(); $db->getConnection(); $db->closeConnection(); $campanhaId = (new Model_DbTable_CallcenterCampanha())->getOrCreate('IMPORTACAO CONSULTA'); if( $campanhaId <= 0 ){ throw new Core_Exception('A campanha default não está cadastrada'); } try { $dt = new Zend_Date($dadosConsulta['nascto']); $dtNascimento = $dt->get("yyyy-MM-dd"); } catch( Zend_Date_Exception $e) { $dtNascimento = null; } $endereco = []; if (!empty($dadosConsulta['itens']['enderecos'])) { foreach ($dadosConsulta['itens']['enderecos'] as $enderecos){ if (empty($enderecos['logradouro'])){ continue; } else { $endereco = $enderecos; } } } $base = new Model_DbTable_CallcenterBase(); $baseId = $base->insert(array( 'campanha_id' => $campanhaId, 'nome' => !empty($dadosConsulta['nome']) ? $dadosConsulta['nome'] : "NAO IDENTIFICADO", 'matricula' => $dadosConsulta['matricula'] ? $dadosConsulta['matricula'] : $dadosConsulta['beneficio'], 'cpf' => $dadosConsulta['cpf'], 'data_nascimento' => $dtNascimento, 'endereco' => count($endereco) > 0 ? $endereco['logradouro'] : null, 'numero' => count($endereco) > 0 ? $endereco['numero'] : null, 'complemento' => count($endereco) > 0 ? $endereco['complemento'] : null, 'bairro' => count($endereco) > 0 ? $endereco['bairro'] : null, 'cidade' => count($endereco) > 0 ? $endereco['cidade'] : null, 'uf' => count($endereco) > 0 ? $endereco['uf'] : null, 'cep' => count($endereco) > 0 ? $endereco['cep'] : null, 'obito' => $dadosConsulta['obito'] == "SIM" ? 1 : 0, 'rep_legal' => $dadosConsulta['rep_legal'], 'nome_responsavel' => $dadosConsulta['nome_responsavel'], 'cpf_responsavel' => $dadosConsulta['cpf_responsavel'], 'sexo' => strtoupper(substr($dadosConsulta['sexo'], 0, 1)), )); if( $baseId ){ if( $dadosConsulta['orgao_consulta'] == "SIAPE" ){ $this->registraConsultaSiape($dadosConsulta['cpf'], $baseId, $dadosConsulta); }else{ $this->addBeneficios($dadosConsulta, String_Refatorar::formatarCpf($dadosConsulta['cpf']), $baseId); $this->adicionarEmprestimos($dadosConsulta, $baseId); $this->adicionarEmprestimos($dadosConsulta, $baseId, "EMPRESTIMO OCULTO"); $this->adicionarEmprestimos($dadosConsulta, $baseId, "RESERVA CARTAO"); } try{ $this->adicionarTelefones(String_Refatorar::formatarCpf($dadosConsulta['cpf']), $dadosConsulta, $baseId); } catch (Exception $ex) { // } $this->addEnderecos($dadosConsulta['itens']['enderecos'], String_Refatorar::formatarCpf($dadosConsulta['cpf'])); return $baseId; } return null; } public function transferirClientes(array $fields, $limit = 0) { $dbtable = new Model_DbTable_CallcenterBase(); $dados = ["campanha_id" => $fields['campanha_para']]; if ($fields['resetar'] == 1) { $dados['data_ultimo_atendimento'] = NULL; $dados['usuario_ultimo_atendimento'] = NULL; $dados['status_atendimento'] = NULL; $dados['agendado_para'] = NULL; $dados['hora_agendada'] = NULL; $dados['telefone_chamada'] = NULL; } if (isset($fields['validar_idade_de']) && $fields['validar_idade_de'] && isset($fields['validar_idade_a']) && $fields['validar_idade_a']) { if($fields['validar_idade_de'] > $fields['validar_idade_a'] ){ throw new Exception ('Parâmetros de idade invalidos!'); } } $select = $dbtable->filtrarClientes($fields, "base.id", "sql"); $select->limit($limit); $clientes = $dbtable->getAdapter()->fetchCol($select); $result = ['encontratos' => sizeof($clientes)]; if ($result['encontratos'] == 0) { throw new Exception("Não existem mais clientes disponíveis para transferência na campanha de origem."); } $ids = implode(",", $clientes); $result['transferidos'] = $dbtable->update($dados, "id in ({$ids})"); $result['naoTransferidos'] = $result['encontratos'] - $result['transferidos']; return $result; } public function transferirCarterizados($fields) { $dbtable = new Model_DbTable_CallcenterBase(); $params = array(); if(isset($fields['idade_de']) && $fields['idade_de'] && isset($fields['idade_ate']) && $fields['idade_ate']){ if($fields['idade_de'] > $fields['idade_ate'] ){ throw new Exception ('Parametros de idade invalidos'); } } if( isset($fields['status_atendimento']) && array_filter($fields['status_atendimento'])){ $params[] = "(status_atendimento NOT IN ('" . implode("', '", $fields['status_atendimento']) . "')" . " OR status_atendimento IS NULL)"; } if( isset($fields['uf']) && $fields['uf'] ){ $params[] = "(uf = '{$fields['uf']}')"; } if( isset($fields['orgao']) && !empty($fields['orgao']) ){ $params[] = "orgao LIKE '%" . $fields['orgao'] . "%'"; } if( isset($fields['especie']) && $fields['especie'] ){ $params[] = "(especie = '{$fields['especie']}')"; } if( isset($fields['campanha_id']) && $fields['campanha_id'] ){ $params[] = "(campanha_id = '{$fields['campanha_id']}')"; } if( isset($fields['cidade']) && $fields['cidade'] ){ $params[] = "(cidade = '{$fields['cidade']}')"; } if( isset($fields['cpf']) && $fields['cpf'] ){ $params[] = "(cpf = '{$fields['cpf']}')"; } if( isset($fields['bairro']) && $fields['bairro'] ){ $params[] = "(bairro = '{$fields['bairro']}')"; } if( isset($fields['idade_de']) && $fields['idade_de'] ){ $params[] = "DATE_FORMAT(FROM_DAYS(DATEDIFF(now(), data_nascimento)), '%y') >= {$fields['idade_de']}"; } if( isset($fields['idade_ate']) && $fields['idade_ate'] ){ $params[] = "DATE_FORMAT(FROM_DAYS(DATEDIFF(now(), data_nascimento)), '%y') <= {$fields['idade_ate']}"; } if( isset($fields['data_final']) && $fields['data_final'] ){ $dtFinal = new Zend_Date($fields['data_final'], 'dd/MM/yyyy'); $params[] = "(data_ultimo_atendimento < '" . $dtFinal->get('yyyy-MM-dd') . "')"; } if( isset($fields['usuario_carteirizacao_de']) && array_filter($fields['usuario_carteirizacao_de'])){ $params[] = "usuario_carteirizacao IN ('" . implode("', '", $fields['usuario_carteirizacao_de']) . "')"; } $where = implode(' AND ', $params); $update = $dbtable->update(array('usuario_carteirizacao' => $fields['usuario_carteirizacao_para']), $where); $retorno = array(); if($update > 0){ $retorno['msg'] = $update.' Clientes transferidos'; $retorno['tipo'] = 'success'; }else{ $retorno['msg'] = 'Nenhum Cliente transferido'; $retorno['tipo'] = 'alert'; } return $retorno; } public function exibirAgendaDashboard($fields, $order) { $params = array(); $where = null; if( isset($fields['data_agendada_de']) && !empty($fields['data_agendada_de']) ){ $params[] = "base.agendado_para >= STR_TO_DATE('" . $fields['data_agendada_de'] . "', '%d/%m/%Y')"; } if( isset($fields['data_agendada_a']) && !empty($fields['data_agendada_a']) ){ $params[] = "base.agendado_para <= STR_TO_DATE('" . $fields['data_agendada_a'] . "', '%d/%m/%Y')"; } if( !empty($fields['usuario_ultimo_atendimento']) && Yuppie_Auth::getIdentity()->grupo != "Supervisor"){ $params[] = 'base.usuario_ultimo_atendimento = ' . $fields['usuario_ultimo_atendimento']; } if( isset($fields['status_atendimento']) && !empty($fields['status_atendimento']) && is_array($fields['status_atendimento']) ){ $fields['status_atendimento'] = array_filter($fields['status_atendimento']); $tmp = array(); foreach ( $fields['status_atendimento'] as $value ) { if( $value == 'sem_status' ){ $tmp[] = '(base.status_atendimento IS NULL)'; } else { $tmp[] = sprintf("(base.status_atendimento LIKE '%s')", $value); } } if( count($tmp) > 0 ){ $params[] = '(' . implode(' OR ', $tmp) . ')'; } } if( count($params) > 0 ){ $where = implode(' AND ', $params); } $dbtable = new Model_DbTable_CallcenterBase(); $select = $dbtable->getAdapter()->select() ->from(array( 'base' => 'tb_callcenter_base'), array('id', 'nome', 'cpf', 'agendado_para', 'hora_agendada')) ->joinLeft(array( "campanhas" => "tb_callcenter_campanhas" ), "base.campanha_id = campanhas.id", array( 'campanha' => 'nome' )) ->order($order); if( $where != null ){ $select->where($where); } if(Yuppie_Auth::getIdentity()->grupo == "Supervisor"){ $select->joinLeft(array( "supervisor" => "tb_callcenter_campanha_supervisores" ), "base.campanha_id = supervisor.campanha_id", array()); $select->where("supervisor.supervisor_id = ?", Yuppie_Auth::getIdentity()->id); } return $dbtable->getAdapter()->fetchAll($select); } protected function addEnderecos($enderecos, $cpfCliente) { if( $enderecos ){ foreach ( $enderecos as $end ) { $callcenterEndereco = new Model_CallcenterEndereco(); $callcenterEndereco ->setCpfCliente(String_Refatorar::formatarCpf($cpfCliente)) ->setEndereco(is_string($end['logradouro']) ? $end['logradouro'] : null) ->setNumero(is_numeric($end['numero']) ? $end['numero'] : null ) ->setComplemento(is_string($end['complemento']) ? $end['complemento'] : null) ->setBairro(is_string($end['bairro']) ? $end['bairro'] : null) ->setCidade(is_string($end['cidade']) ? $end['cidade'] : null) ->setUf(is_string($end['uf']) ? $end['uf'] : null) ->setCep(is_string($end['cep']) ? $end['cep'] : null); try { $callcenterEndereco->salvar(); } catch ( Exception $exc ) { continue; } } } } public function addBeneficios($dadosConsulta, $cpfCliente, $baseId) { $dib = null; if( !empty($dadosConsulta['dib']) ){ try{ $dtDib = new Zend_Date($dadosConsulta['dib'], 'dd/MM/yyyy'); $dib = $dtDib->get('yyyy-MM-dd'); }catch(Exception $e){ // } } $dados = [ 'base_cliente_id' => $baseId, 'cpf_cliente' => String_Refatorar::formatarCpf($cpfCliente), 'beneficio' => trim($dadosConsulta['beneficio']), 'margem_livre' => $dadosConsulta['margem'], 'margem_cartao' => $dadosConsulta['margem_cartao'], 'margem_cartao_rmc' => $dadosConsulta['margem_cartao_rmc'], 'margem_rcc' => $dadosConsulta['margem_rcc'], 'limite_cartao' => $dadosConsulta['limite_cartao'], 'mr' => $dadosConsulta['mr'], 'situacao' => $dadosConsulta['situacao'], 'banco_pagto' => $dadosConsulta['banco_pagto'], 'agencia_pagto' => $dadosConsulta['agencia_pagto'], 'conta_pagto' => $dadosConsulta['conta_pagto'], 'orgao_pagador' => $dadosConsulta['orgao_pagador'], 'tipo_pagto' => $dadosConsulta['tipo_pagto'], 'origem' => $dadosConsulta['origem'], 'competencia' => !empty($dadosConsulta['competencia']) ? $dadosConsulta['competencia'] : '', 'especie' => !empty($dadosConsulta['especie']) ? $dadosConsulta['especie'] : '', 'detalhamento' => !empty($dadosConsulta['detalhamento']) ? $dadosConsulta['detalhamento'] : NULL, 'extrato_creditos' => !empty($dadosConsulta['extrato_creditos']) ? $dadosConsulta['extrato_creditos'] : NULL, 'cessado' => !empty($dadosConsulta['cessado']) && $dadosConsulta['cessado'] == "SIM" ? 1 : 0, 'bloq_emp' => !empty($dadosConsulta['bloq_emp']) ? $dadosConsulta['bloq_emp'] : 0, 'parcela_suspensa' => !empty($dadosConsulta['parcela_suspensa']) && $dadosConsulta['parcela_suspensa'] == "SIM" ? 1 : 0, 'dib' => $dib, ]; return (new Model_DbTable_CallcenterBeneficio())->save(array_filter($dados)); } public function gravarConsultaBmg($cartao) { $dbtable = new Model_DbTable_CallcenterBase(); $dbtable->closeConnection(); $dadosCliente = $this->existeCpf($cartao['cpf']); if (!$dadosCliente) { return "Cliente não localizado no banco de dados."; } if (empty($cartao['cartoes'])) { return "Consulta não retornou dados de cartão do cliente."; } $cont = 0; foreach ($cartao['cartoes'] as $itemCartao) { $dbtableBeneficio = new Model_DbTable_CallcenterBeneficio(); $matricula = (int) String_Refatorar::soNumeros($itemCartao['matricula']); //verifica se o benefício já está cadastrado $beneficio = $dbtableBeneficio->fetchRow("beneficio = '{$matricula}' AND cpf_cliente = '{$cartao['cpf']}'"); if (!$beneficio) { $beneficio = $dbtableBeneficio->createRow(); $beneficio->base_cliente_id = $dadosCliente->id; } $beneficio->margem_cartao = $itemCartao['valor_margem']; $beneficio->limite_cartao = $itemCartao['limite_cartao']; $beneficio->saque_complementar = $itemCartao['saque_maximo']; if ($itemCartao['liberado'] == 'false') { $beneficio->saque_complementar = 0.00; $beneficio->obs = $itemCartao['mensagemImpedimento']; } $beneficio->data_consulta = date('Y-m-d H:i:s'); $beneficio->cpf_cliente = $cartao['cpf']; $beneficio->beneficio = $matricula; $beneficio->origem = "WS BMG"; if ($beneficio->save()) { $cont++; } } if( $cont ){ return "Consulta gravada com sucesso."; } return "A consulta retornou cartões mas, não gravou nada no banco de dados."; } public function marcarHigienizado($contatoId, $novaCampanha = null) { if (!$contatoId) { throw new Core_Exception('Contato não identificado.'); } $dados = [ 'ativo' => 0, 'data_higienizacao' => date('Y-m-d') ]; if ($novaCampanha) { $dados['campanha_id'] = $novaCampanha; } $dbtable = new Model_DbTable_CallcenterBase(); $result = $dbtable->update($dados, "id = {$contatoId}"); $dbtable->closeConnection(); return $result; } public function calculaAndamentoCampanhaDiscador(int $campanhaId) { return (new Model_DbTable_CallcenterBase())->selectAndamentoCampanhaDiscador($campanhaId); } public function getTelefonesNaoEnviadosDiscador(int $campanhaId) { return (new Model_DbTable_CallcenterBase())->selectTelefonesNaoEnviadosDiscador($campanhaId); } public function getNumerosEnviado(int $campanhaId) { return (new Model_DbTable_CallcenterBase())->selectNumerosEnviados($campanhaId); } public function getTelefonesParaConsultarDiscador(int $campanhaId) { return (new Model_DbTable_CallcenterBase())->selectTelefonesParaConsultarDiscador($campanhaId); } public function getOportunidades(array $fields, $order = []) { $dbtable = new Model_DbTable_CallcenterBase(); $select = $dbtable->getAdapter()->select(); $select->from(['base' => 'tb_callcenter_base'], ['id', 'nome', 'cpf', 'data_nascimento', 'status_atendimento', 'data_ultimo_atendimento', 'valor_saque']) ->joinInner(['campanhas' => 'tb_callcenter_campanhas'], "campanhas.id = base.campanha_id", []) ->joinLeft(['beneficios' => 'tb_callcenter_beneficios'], 'base.id = beneficios.base_cliente_id', ['beneficio', 'margem_livre', 'margem_cartao', 'saque_complementar', 'mr', 'detalhamento', 'extrato_creditos', 'especie', 'margem_rcc', 'limite_cartao']) ->joinLeft(['fones' => 'tb_callcenter_telefones'], 'fones.cliente_id = base.id', ['fones' => "GROUP_CONCAT(distinct fone SEPARATOR ' ')"]) ->joinLeft(['envios' => 'tb_oportunidades_enviadas'], 'envios.cliente_id = base.id', ['data_envio' => 'MAX(data_envio)']) ->where("campanhas.situacao = ?", 'LIBERADA') ->where("campanhas.data_inicial <= CURRENT_DATE() AND (campanhas.data_final >= CURRENT_DATE() OR campanhas.data_final is null)") ->where("base.ativo = 1"); if( !empty($fields['corretor_id']) ){ $select->where("campanhas.corretor_id = ?", $fields['corretor_id']); $table = new OportunidadesNegocioTable(); $oportunidadeFiltro = $table->findByCorretor($fields['corretor_id']); if (!empty(unserialize($oportunidadeFiltro->oportunidade_filtro->especies_invalidas))) { $select->where("beneficios.especie NOT IN(?)", unserialize($oportunidadeFiltro->oportunidade_filtro->especies_invalidas)); } } if( !empty($fields['margem']) ){ if( $fields['margem'] == 1 ){ $select->where("beneficios.margem_livre > 0"); }elseif( $fields['margem'] == 2 ){ $select->where("beneficios.id is null or beneficios.margem_livre <= 0"); } } if( !empty($fields['margem_cartao']) ){ if( $fields['margem_cartao'] == 1 ){ $select->where("beneficios.margem_cartao > 0"); }elseif( $fields['margem_cartao'] == 2 ){ $select->where("beneficios.id is null or beneficios.margem_cartao <= 0"); } } if (!empty($fields['saque_complementar'])) { if ($fields['saque_complementar'] == 1) { $select->where("beneficios.saque_complementar > 0"); } elseif ($fields['saque_complementar'] == 2) { $select->where("beneficios.id is null or beneficios.saque_complementar <= 0"); } } $select->group(['base.id', 'beneficios.id']); $select->order($order); return $dbtable->getAdapter()->fetchAll($select); } public function gravarConsultaBanrisul($contratos) { $result = false; $dbtable = new Model_DbTable_CallcenterBase(); $dbtable->closeConnection(); $dadosCliente = $this->existeCpf(substr(current($contratos)->clienteCodigo, 0, 11)); if (!$dadosCliente) { return false; } foreach ($contratos as $contrato) { $this->gravarBeneficioConsultaBanrisul($contrato, $dadosCliente); $result = $this->gravarEmprestimosConsultaBanrisul($contrato, $dadosCliente); } return $result; } public function gravarBeneficioConsultaBanrisul($dados, $cliente) { if ($matricula = intval($dados->matricula)) { $dbtableBeneficio = new Model_DbTable_CallcenterBeneficio(); $beneficio = $dbtableBeneficio->fetchRow("beneficio = '{$matricula}' AND cpf_cliente = '{$cliente->cpf}'"); if (!$beneficio) { $beneficio = $dbtableBeneficio->createRow(); } $beneficio->base_cliente_id = $cliente->id; $beneficio->data_consulta = date('Y-m-d H:i:s'); $beneficio->cpf_cliente = $cliente->cpf; $beneficio->beneficio = $matricula; $beneficio->origem = "WS Banrisul"; $beneficio->save(); } } public function gravarEmprestimosConsultaBanrisul($dados, $cliente) { $febraban = new Model_DbTable_BancoFebraban(); $banco = $febraban->fetchRow("codigo = 041"); $clienteEmprestimos = new Model_DbTable_CallcenterEmprestimoCliente(); $emprestimo = $clienteEmprestimos->fetchRow("numero_contrato = '{$dados->contratoCodigo}' AND cpf_cliente = '{$cliente->cpf}' AND numero_banco = 041"); if (!$emprestimo) { $emprestimo = $clienteEmprestimos->createRow(); } $emprestimo->base_cliente_id = $cliente->id; $emprestimo->tipo = "EMPRESTIMO"; $emprestimo->situacao = "ATIVO"; $emprestimo->cpf_cliente = $cliente->cpf; $emprestimo->numero_contrato = $dados->contratoCodigo; $emprestimo->beneficio = intval($dados->matricula); $emprestimo->numero_banco = $banco['codigo']; $emprestimo->banco = $banco['nome']; $emprestimo->qtd_parcelas = $dados->prazoCodigo; $emprestimo->parcelas_pagas = $dados->parcelasPagas; $emprestimo->parcelas_abertas = intval($dados->prazoCodigo) - intval($dados->parcelasPagas); $emprestimo->valor_parcela = $dados->pmtOriginal; $emprestimo->taxa = $dados->taxa; $emprestimo->quitacao = $dados->valorQuitacao; return $emprestimo->save(); } public function setHigienizarTelefones($higienizar = true) { $this->_higienizarTelefones = $higienizar; } /** * @param string|null $dataHigienizacaoTelefones */ public function setDataHigienizacaoTelefones(?string $dataHigienizacaoTelefones): void { $this->_dataHigienizacaoTelefones = $dataHigienizacaoTelefones; } /** * @return string|null */ public function getDataHigienizacaoTelefones(): ?string { return $this->_dataHigienizacaoTelefones; } public function gravarConsultaSafraFgts($fgts) { if (empty($fgts)) { return; } $dbtable = new Model_DbTable_CallcenterBase(); $dbtable->closeConnection(); $dadosCliente = $this->existeCpf($fgts->cpf); if (!$dadosCliente) { return; } $cont = 0; if (empty($fgts->permiteConsulta)) { $error = current($fgts->erros); (new Model_DbTable_CallcenterFgts())->insert([ 'base_id' => $dadosCliente->id, 'periodo' => 0, 'data_repasse' => null, 'valor' => 0, 'codigo_erro' => $error->codigo, 'descricao_erro' => $error->descricao, 'origem_consulta' => "Safra" ]); return; } foreach ($fgts->periodos as $key => $periodo) { $data = new Zend_Date($periodo->dtRepasse); $result = (new Model_DbTable_CallcenterFgts())->insert([ 'base_id' => $dadosCliente->id, 'periodo' => ++$key, 'data_repasse' => $data->get('yyyy-MM-dd'), 'valor' => $periodo->valor, 'origem_consulta' => "Safra" ]); if ($result) { $cont++; } } return $cont; } /** * @param $contrato * @return array|false|mixed */ public function gravarConsultaPan($contrato) { $dbtable = new Model_DbTable_CallcenterBase(); $dbtable->closeConnection(); $dadosCliente = $this->existeCpf(String_Refatorar::formatarCpf($contrato->cliente)); if (!$dadosCliente) { return false; } return $this->gravarEmprestimosConsultaPan($contrato, $dadosCliente); } public function gravarEmprestimosConsultaPan($dados, $cliente) { $febraban = new Model_DbTable_BancoFebraban(); $banco = $febraban->fetchRow("codigo = 623"); $clienteEmprestimos = new Model_DbTable_CallcenterEmprestimoCliente(); $emprestimo = $clienteEmprestimos->createRow(); $emprestimo->base_cliente_id = $cliente->id; $emprestimo->tipo = "EMPRESTIMO"; $emprestimo->situacao = "ATIVO"; $emprestimo->cpf_cliente = $cliente->cpf; $emprestimo->beneficio = $dados->matricula; $emprestimo->numero_banco = $banco['codigo']; $emprestimo->banco = $banco['nome']; $emprestimo->qtd_parcelas = $dados->parcelas->total; $emprestimo->parcelas_pagas = intval($dados->parcelas->total) - intval($dados->parcelas->abertas); $emprestimo->parcelas_abertas = $dados->parcelas->abertas; $emprestimo->valor_parcela = $dados->parcelas->valor; $emprestimo->quitacao = $dados->contrato->saldo; return $emprestimo->save(); } /** * Para ser usado por usuários do grupo Callcenter e que estejam com a permissão de notificar agenda habilitada */ public function getAgendaNotificacao() { if (empty(Yuppie_Auth::getIdentity())) { return []; } return (new Model_DbTable_CallcenterBase())->findAgendamentos(); } public function gravarConsultaFgts($fgts, $cpf) { if (empty($fgts)) { Yuppie_Log::write("gravarConsultaFgts com \$fgts em branco.", $this); return; } $dbtable = new Model_DbTable_CallcenterBase(); $dbtable->closeConnection(); $dadosCliente = $this->existeCpf($cpf); if (!$dadosCliente) { Yuppie_Log::write("gravarConsultaFgts não encontrou o cliente pelo CPF", $this); return; } $origemConsulta = $fgts->origem_consulta; $fgts = current($fgts->condicoes_credito); $cont = 0; $periodos = $fgts->parcelas; if (empty($periodos)) { Yuppie_Log::write("gravarConsultaFgts não tem períodos", $this); return; } $valorTotal = 0; //limpa tudo daquele banco (new Model_DbTable_CallcenterFgts())->delete("base_id = {$dadosCliente->id} AND origem_consulta = '{$origemConsulta}'"); foreach ($periodos as $periodo) { $data = new Zend_Date($periodo['data_vencimento']); $result = (new Model_DbTable_CallcenterFgts())->insert([ 'base_id' => $dadosCliente->id, 'periodo' => $periodo['num_parcela'], 'data_repasse' => $data->get('yyyy-MM-dd'), 'valor' => $periodo['valor_parcela'], 'origem_consulta' => $origemConsulta, 'chave_consulta' => !empty($fgts->uuid) ? $fgts->uuid : null ]); if ($result) { $cont++; } $valorTotal += $periodo->valor_parcela; } $dadosCliente->valor_saque = $fgts->saldo_total ? $fgts->saldo_total : $valorTotal; if (!empty($dadosCliente->valor_saque)) { Yuppie_Log::write("gravarConsultaFgts tentou salvar o valor do saldo na tb_callcenter_base " . $dadosCliente->valor_saque, $this); $dadosCliente->data_higienizacao = date('Y-m-d'); $dadosCliente->save(); } return $cont; } public function gravarConsultaOmega($margem) { if (empty($margem->cpf) || empty($margem->matricula)) { throw new Core_Exception("CPF/matrícula não informados"); } $cpf = String_Refatorar::formatarCpf($margem->cpf); $dbtable = new Model_DbTable_CallcenterBase(); $dbtable->closeConnection(); $dadosCliente = $this->existeCpf($cpf); if (empty($dadosCliente)) { throw new Core_Exception("CPF não localizado na base"); } $dbtableBeneficio = new Model_DbTable_CallcenterBeneficio(); $matricula = (int) String_Refatorar::soNumeros($margem->matricula); //verifica se o benefício já está cadastrado $beneficio = $dbtableBeneficio->fetchRow([ "beneficio = ?" => $matricula, "cpf_cliente = ?" => $cpf ]); if (empty($beneficio)) { $beneficio = $dbtableBeneficio->createRow(); $beneficio->base_cliente_id = $dadosCliente->id; } $beneficio->margem_livre = String_Refatorar::parseStringToFloat($margem->margem); $beneficio->data_consulta = date('Y-m-d H:i:s'); $beneficio->cpf_cliente = $cpf; $beneficio->beneficio = $matricula; $beneficio->origem = "ÔMEGA"; return $beneficio->save(); } public function getLeads($fields) { $base = new Model_DbTable_CallcenterBase(); return $base->getLeads($fields); } public function getLeadsPeriodo($fields) { $base = new Model_DbTable_CallcenterBase(); $leadsPeriodo = $base->leadsPeriodo($fields); $arrayRetorno = []; foreach ($leadsPeriodo as $data) { array_unshift($arrayRetorno, [$data['DATA'], (int) $data['QTD']]); } array_unshift($arrayRetorno, ['Data', 'Quantidade']); return $arrayRetorno; } public function getLeadsXuf($fields) { $base = new Model_DbTable_CallcenterBase(); $leadsUf = $base->leadsXuf($fields); $arrayRetorno = []; foreach ($leadsUf as $uf) { array_unshift($arrayRetorno, [$uf['UF'], (int) $uf['QTD']]); } array_unshift($arrayRetorno, ['UF', 'QTD']); return $arrayRetorno; } public function getLeadsXsexo($fields) { $base = new Model_DbTable_CallcenterBase(); $generos = $base->leadsXsexo($fields); $arrayRetorno = []; foreach ($generos as $uf) { array_unshift($arrayRetorno, [$uf['SEXO'], (int) $uf['QTD']]); } array_unshift($arrayRetorno, ['SEXO', 'QTD']); return $arrayRetorno; } public function getLeadsFaixaEtaria($fields) { $base = new Model_DbTable_CallcenterBase(); $leadsFaixa = $base->leadsFaixaEtaria($fields); $faixas = null; $total = null; if (count($leadsFaixa) > 0) { array_map(function($item) use (&$faixas, &$total) { switch ($item['idade']) { case ($item['idade'] <= 19): $faixas[19]['qtd'] += 1; $faixas[19]['faixa'] = 'Até 19'; break; case ($item['idade'] <= 25): $faixas[25]['qtd'] += 1; $faixas[25]['faixa'] = 'De 20 à 25'; break; case ($item['idade'] <= 30): $faixas[30]['qtd'] += 1; $faixas[30]['faixa'] = 'De 26 à 30'; break; case ($item['idade'] <= 35): $faixas[35]['qtd'] += 1; $faixas[35]['faixa'] = 'De 31 à 35'; break; case ($item['idade'] <= 40): $faixas[40]['qtd'] += 1; $faixas[40]['faixa'] = 'De 36 à 40'; break; case ($item['idade'] <= 45): $faixas[45]['qtd'] += 1; $faixas[45]['faixa'] = 'De 41 à 45'; break; case ($item['idade'] <= 50): $faixas[50]['qtd'] += 1; $faixas[50]['faixa'] = 'De 46 à 50'; break; default: $faixas[51]['qtd'] += 1; $faixas[51]['faixa'] = 'Acima de 50'; break; } $total += 1; }, $leadsFaixa); } return $faixas; } public function getLeadsFaixaRenda($fields) { $base = new Model_DbTable_CallcenterBase(); $leadsRenda = $base->leadsFaixaRenda($fields); $rendas = null; $total = null; if (count($leadsRenda) > 0) { array_map(function($item) use (&$rendas, &$total) { switch ($item['renda']) { case ($item['renda'] <= 1000): $rendas[0]['qtd'] += 1; $rendas[0]['faixa'] = 'Até 1000'; break; case ($item['renda'] <= 2000): $rendas[1]['qtd'] += 1; $rendas[1]['faixa'] = 'De 1001 à 2000'; break; case ($item['renda'] <= 3000): $rendas[2]['qtd'] += 1; $rendas[2]['faixa'] = 'De 2001 à 3000'; break; case ($item['renda'] <= 4000): $rendas[3]['qtd'] += 1; $rendas[3]['faixa'] = 'De 3001 à 4000'; break; case ($item['renda'] <= 50000): $rendas[4]['qtd'] += 1; $rendas[4]['faixa'] = 'Acima de 4000'; break; default: break; } if (empty($item['renda'])) { $rendas[5]['qtd'] += 1; $rendas[5]['faixa'] = 'Não informado'; } $total += 1; }, $leadsRenda); } return ['lista' => $rendas, 'total' => $total]; } public function getLeadsTicketMedioSaldo($fields) { $base = new Model_DbTable_CallcenterBase(); return $base->leadsTicketMedioSaldo($fields); } public function getLeadsTicketMedioContrato($fields) { $base = new Model_DbTable_CallcenterBase(); return $base->leadsTicketMedioContrato($fields); } public function getLeadsFunilVendas($fields) { $base = new Model_DbTable_CallcenterBase(); $leads = $base->getLeadsFunil($fields); $comAdesao = $base->getLeadsFunil($fields, 2); $comSaldo = $base->getLeadsFunil($fields, 3); $contratou = $base->getLeadsFunil($fields, 4); return [ 'leads' => $leads['qtd'], 'com_adesao' => $comAdesao['qtd'], 'com_saldo' => $comSaldo['qtd'], 'contratou' => $contratou['qtd'] ]; } public function getLeadsOrigem($fields) { $base = new Model_DbTable_CallcenterBase(); $leads = $base->leadsOrigem($fields); $total = 0; foreach ($leads as $origem) { $total += $origem['qtd']; } return ['lista' => $leads, 'total' => $total]; } public function getLeadsReferencia($fields) { $base = new Model_DbTable_CallcenterBase(); $leads = $base->leadsReferencia($fields); $total = 0; foreach ($leads as $origem) { $total += $origem['qtd']; } return ['lista' => $leads, 'total' => $total]; } public function trataDadosConsulta($consulta) { $cessado = "NÃO"; if (($consulta->dataCessacaoBeneficio != "0001-01-01T00:00:00") && !empty($consulta->dataCessacaoBeneficio)) { $cessado = "SIM"; } return [ 'cpf' => $consulta->cpf, 'cpf_cliente' => $consulta->cpf, 'matricula' => $consulta->numeroMatricula, 'beneficio' => $consulta->numeroMatricula, 'nascto' => $consulta->dataNascimento, 'nome' => $consulta->nomeBeneficiario, 'situacao' => $consulta->situacaoBeneficio, 'especie' => $consulta->especieBeneficio, 'uf' => $consulta->ufPagamento, 'banco_pagto' => $consulta->cbcIfPagadora, 'agencia_pagto' => $consulta->agenciaPagadora, 'conta_pagto' => $consulta->contaCorrente, 'rep_legal' => $consulta->possuiRepresentanteLegal, 'bloq_emp' => $consulta->bloqueadoParaEmprestimo, 'dib' => $consulta->dataDespachoBeneficio, 'margem_livre' => $consulta->margemDisponivel, 'margem_cartao' => $consulta->margemDisponivelCartao, 'limite_cartao' => $consulta->ValorLimiteCartao, 'cpf_responsavel' => $consulta->cpfRepresentanteLegal, 'nome_responsavel' => $consulta->nomeRepresentanteLegal, 'obs' => $consulta->observacao, 'cessado' => $cessado, 'margem_rcc' => $consulta->margemDisponivelRcc ]; } }
💾 保存文件
← 返回文件管理器