✏️ 正在编辑: ContratoController.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/application/controllers/ContratoController.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php use Modules\Contrato\Service\{ImportacaoAsyncService, ImportacaoBancoService}; class ContratoController extends Zend_Controller_Action { protected $_bucketFolder = 'propostas'; /** @var Service_Anexo */ private $anexoService; /** @var ImportacaoBancoService */ private $importacaoService; /** @var ImportacaoAsyncService */ private $importacaoAsyncService; public function init() { $this->view->tab = (int) $this->getRequest()->getParam('tab'); $this->anexoService = service('anexo'); $this->importacaoAsyncService = new ImportacaoAsyncService(); } public function indexAction() { $form = new Form_Filtro_Contrato(); $request = $this->getRequest(); $page = $request->getPost('page', 1); $busca = new Zend_Session_Namespace('filtro_contratos'); $contratos = null; if( $request->isPost() && $form->isValid($request->getPost()) ){ $fields = $request->getPost(); unset($fields['btn_filtrar']); unset($fields['page']); $busca->unsetAll(); $busca->filtro_contratos = array_filter($fields); } if( isset($busca->filtro_contratos) && count($busca->filtro_contratos) > 0 ){ $form->populate($busca->filtro_contratos); $fields = $busca->filtro_contratos; if( isset($fields['corretor']) && ($corretor = explode("|", $fields['corretor'])) != null ){ unset($fields['corretor']); $fields['corretor_id'] = (int) trim($corretor[0]); } $contrato = new Model_Contrato(); $contratos = $contrato->getContratos($fields, $page, 100, array( 'data_emissao ASC', 'contratos.id ASC' )); $contratos->setCurrentPageNumber($this->_getParam('page', 1)); } else { $this->_helper->flashMessenger(array( 'alert' => 'Atenção! Escolha pelo menos uma opção de filtragem.' )); } $form->populate($request->getPost()); $this->view->paginator = $contratos; $this->view->form = $form; } public function saveAction() { $request = $this->getRequest(); $id = (int) $request->getParam('id'); $form = new Form_Contrato(); $documentos = array(); $dbtable = new Model_DbTable_Contrato(); if( $request->isPost() && $form->isValid($request->getPost()) ){ $contrato = new Model_Contrato($form->getValues()); if( $id > 0 ){ $objStatus = new Model_StatusProposta(); if( $objStatus->isCancelado($contrato->getStatusProposta()) && $dbtable->isPaid($id) ){ $contrato->setEstornado(1); } } try { $id = $contrato->salvar($contrato); if( $id > 0 ){ $this->_helper->flashMessenger(array( 'success' => 'Dados salvos com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Nenhuma informação foi alterada.' )); } } catch ( Exception $e ) { $this->_helper->flashMessenger(array( 'alert' => $e->getMessage() )); } } if( $id > 0 ){ $contrato = new Model_Contrato(); $cliente = new Model_Cliente(); $dados = $contrato->exibir($id); if( $dbtable->isPaid($id) ){ $this->_helper->flashMessenger(array( 'alert' => 'Atenção! O contrato está pago e não deve ser alterado.' )); } if(!empty($dados)) { $dadosContrato = $dados->toArray(); $dadosCliente = $cliente->exibir($dados->cliente_id); $dadosContrato['senha_contracheque'] = $dadosCliente->senha_contracheque; $dadosContrato['telefone'] = $dadosCliente->fone; $dadosContrato['celular'] = $dadosCliente->celular; $form->populate($dadosContrato); $this->view->dados_contrato = $dados; $ns = new Zend_Session_Namespace(); $this->view->historico_financeiro = array(); if($ns->acl->isAllowed(Yuppie_Auth::getIdentity()->grupo, "visualizar-comissao-contrato")){ $this->view->historico_financeiro = $contrato->getHistoricoFinanceiro($dados->id); } $dbTipos = new Model_DbTable_Tipos(); $tipo = $dbTipos->fetchRow("tipo = 'ANEXO_CONTRATO' AND descricao = 'Outros documentos'"); $formDocumento = new Form_PropostaDocumento(); $formAnexo = new Form_ContratoAnexo(); $documento = new Model_ContratoAnexo(); $documentos = $documento->listar(array('contrato_id = ?' => $id)); $this->view->outroAnexoId = $tipo['id']; $this->view->formContratoDocumento = $formDocumento; $this->view->formContratoAnexo = $formAnexo; $this->view->documentos = $documentos; $this->view->historico_importacao = $contrato->getHistoricoImportacao($id); $this->view->form_historico_pendencias = (new Form_HistoricoPendencia()) ->setLabelForm('digitador', 'Usuário'); $this->view->historico_pendencias = (new Model_HistoricoPendencia()) ->listar(['contrato_id' => $id]); } } $formFiltroContrato = new Form_Filtro_ContratoNumero(); $this->view->formFiltroContrato = $formFiltroContrato; $this->view->documentos = $documentos; $this->view->form = $form; } public function deleteAction() { $request = $this->getRequest(); $id = (int) $request->getParam('id'); if( $id > 0 ){ $contrato = new Model_Contrato(); try { $contrato->excluir($id); $this->_helper->flashMessenger(array( 'success' => 'Contrato excluído com sucesso.' )); } catch ( Exception $e ) { $this->_helper->flashMessenger(array( 'error' => $e->getMessage() )); } } $this->_redirect('/contrato'); } public function saveDialogAction() { $this->_helper->layout->setLayout('layout_popup'); $request = $this->getRequest(); $id = (int) $request->getParam('id'); $form = new Form_ContratoDialog(); $dbtable = new Model_DbTable_Contrato(); if( $request->isPost() ){ if( $form->isValid($request->getPost()) ){ $contrato = new Model_Contrato($request->getPost()); try { $id = $contrato->salvar($contrato); if( $id > 0 ){ $this->_helper->flashMessenger([ 'success' => 'Dados salvos com sucesso.' ]); } else { $this->_helper->flashMessenger([ 'alert' => 'Nenhum registro foi salvo.' ]); } } catch ( Zend_Exception $e ) { $this->_helper->flashMessenger([ 'error' => $e->getMessage() ]); } } else { $this->_helper->flashMessenger([ 'alert' => 'Atenção! Preencha os dados corretamente.' ]); } } if( $id > 0 ){ $contrato = new Model_Contrato(); $dados = $contrato->exibir($id); $form->populate($dados->toArray()); } $this->view->form = $form; } //baixar pagamento de vários protocolos, para vários corretores e contratos public function baixarPagamentoAction() { header("Cache-Control: no-cache, must-revalidate"); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); $request = $this->getRequest(); $form = new Form_PagarComissao(); $form->removeElement('desconto'); $form->removeElement('debitar_desconto'); $form->removeElement('acrescimo'); $form->removeElement('lancar_credito'); $form->removeElement('obs'); $nsContratos = new Zend_Session_Namespace('contratos'); $nsTimestamp = new Zend_Session_Namespace('timestamp'); $nsProtocolos = new Zend_Session_Namespace('protocolos'); $nsContratosNaoGerados = new Zend_Session_Namespace('contratos_nao_gerados'); if (empty($nsContratos->contratos)) { $nsContratos->contratos = $request->getPost('ck_contrato'); } if (!$nsContratos->contratos || !is_array($nsContratos->contratos) || !empty($nsTimestamp->timestamp)) { $this->_helper->flashMessenger(array( 'alert' => 'Nenhum contrato foi selecionado.' )); $this->_redirect('/financeiro/pagar-comissao'); } if ($request->isPost() && $form->isValid($request->getPost())) { unset($nsProtocolos->protocolos); $params = $request->getPost(); $contrato = new Model_Contrato(); try { $result = $contrato->gerarProtocoloPagamento($nsContratos->contratos, $params); $nsTimestamp->timestamp = Zend_Date::now()->getTimestamp(); $nsProtocolos->protocolos = $result['protocolos']; $nsContratosNaoGerados->contratos_nao_gerados = $result['contratos_nao_gerados']; } catch (Core_Exception $e) { $this->_helper->flashMessenger(array( 'error' => $e->getMessage() )); } if (count($nsProtocolos->protocolos) > 0) { $this->_helper->flashMessenger(array( 'success' => count($nsProtocolos->protocolos) . ' protocolo(s) salvo(s) com sucesso.' )); $this->_helper->redirector('view-protocolos'); } if (count($nsContratosNaoGerados) > 0) { $this->_helper->flashMessenger(array( 'alert' => count($nsContratosNaoGerados) . ' protocolo(s) não salvo(s).' )); $this->view->contratos_nao_gerados = $nsContratosNaoGerados->contratos_nao_gerados; } } $this->view->form = $form; } public function baixarRecebimentoAction() { $request = $this->getRequest(); $form = new Form_ReceberComissao(); if( !isset($_SESSION['contratos']) || empty($_SESSION['contratos']) ){ $_SESSION['contratos'] = $request->getPost('ck_contrato'); } if( $request->isPost() ){ if( $form->isValid($request->getPost()) ){ $params = $request->getPost(); foreach ( $_SESSION['contratos'] as $item ) { $contrato = new Model_Contrato(); try { $contrato->receberComissao($item, $request->getPost('data_recebimento_comissao')); } catch ( Exception $e ) { $this->_helper->flashMessenger(array( 'alert' => $e->getMessage() )); continue; } } unset($_SESSION['contratos']); $this->_helper->flashMessenger(array( 'success' => 'Dados salvos com sucesso.' )); } } $this->view->form = $form; } public function receberFisicoAction() { $form = new Form_Filtro_ReceberFisico(); $request = $this->getRequest(); $producao = array(); $busca = new Zend_Session_Namespace('receber_fisico'); if( $request->isPost() && $form->isValid($request->getPost()) ){ $fields = $request->getPost(); unset($fields['btn_filtrar']); $busca->unsetAll(); $busca->receber_fisico = array_filter($fields); } if( isset($busca->receber_fisico) && count($busca->receber_fisico) > 0 ){ $fields = $busca->receber_fisico; $form->populate($fields); $contrato = new Model_Contrato(); try{ $producao = $contrato->getFisicosReceber($fields); } catch( Zend_Db_Statement_Exception $e ){ $this->_helper->flashMessenger([ 'error' => 'Erro na consulta ao banco de dados. Verifique os seus parâmetros de busca.' ]); } catch (Exception $e){ $this->_helper->flashMessenger(['error' => $e->getMessage()]); } } else { $this->_helper->flashMessenger(array( 'alert' => 'Atenção! Escolha pelo menos uma opção de filtragem.' )); $element = $form->getElement('status_proposta'); $element->setValue(43); } $this->view->producao = $producao; $this->view->form = $form; $this->view->scripts = ['tag-input.min.js']; $this->view->styles = ['tag-input.min.css']; } public function exportarFisicoRecebidoAction() { $form = new Form_Filtro_ReceberFisico(); $form->removeElement('btn_filtrar'); $form->removeElement('btn_excluir'); $request = $this->getRequest(); $producao = array(); $fields = array_filter($request->getPost()); if( $request->isPost() && count($fields) > 0 ){ unset($fields['btn_export']); $contrato = new Model_Contrato(); $producao = $contrato->getFisicosBaixados($fields); $form->populate($fields); $contrato->exportarRecebimentoFisicos($producao); } else { $this->_helper->flashMessenger(array( 'alert' => 'Atenção! Escolha pelo menos uma opção de filtragem.' )); } $this->view->producao = $producao; $this->view->form = $form; } public function carrinhoCompraFisicoAction() { $request = $this->getRequest(); $sess = new Model_YuppieSessionWrapper(); $fields = array_filter($request->getParams()); if ( !Model_AgendamentoBaixaFisicos::agendado() ) { $this->_helper->flashMessenger([ 'error' => 'Dia não permitido para baixa de físico.' ]); $this->_redirect('/contrato/receber-fisico/'); } try { $result = $sess->mountCartPurchase($fields); if( isset($result['delete']) && !empty($result['delete']) ){ unset($result['result']); unset($result['delete']); $this->_helper->redirector("carrinho-compra-fisico", "contrato", null, $result); } elseif( isset($result['adicionado']) && !empty($result['adicionado']) ){ $this->_helper->json(array( 'result' => true )); } elseif( isset($result['continuar']) && !empty($result['continuar']) ){ unset($result['result']); unset($result['continuar']); $this->_helper->redirector("carrinho-compra-fisico", "contrato", null, $result); } } catch ( Exception $e ) { $this->_helper->flashMessenger(array( 'alert' => $e->getMessage() )); $this->_helper->redirector($fields['caminho'], "contrato", null); } $this->view->caminho = isset($result['caminho']) ? $result['caminho'] : $fields['caminho']; $this->view->contratos = $result['result']; } public function baixarFisicoAction() { $request = $this->getRequest(); $form = new Form_BaixarFisico(); $sess = new Model_YuppieSessionWrapper(); $numeroContrato = null; if( !isset($_SESSION['carrinho']) || empty($_SESSION['carrinho']) ){ $_SESSION['carrinho'] = $request->getPost('ck_contrato'); } if( $request->isPost() && $request->getPost('valid') ){ if( $form->isValid($request->getPost()) ){ $carrinho = $sess->getSessVar("carrinho"); $contrato = new Model_Contrato(); $protocolo = time(); foreach ( $carrinho as $contratoId ) { //pega um contrato dos selecionados para pegar o id do corretor $dadosContrato = $contrato->exibir($contratoId); $numeroContrato = $dadosContrato['numero_contrato']; if( $dadosContrato != null && $dadosContrato['corretor_id'] ){ //verifica se o número de protocolo gerado já existe para outro corretor if( $contrato->existeProtocoloRecebimentoOutroCorretor($dadosContrato['corretor_id'], $protocolo) ){ $protocolo = time(); } } } foreach ( $carrinho as $id ) { try { $contrato->receberFisicos($id, $form->getValue('data_recebimento'), $form->getValue('obs_recebimento_fisico'), $protocolo, $numeroContrato); } catch ( Zend_Exception $e ) { print_r($e); } } unset($_SESSION['receber_fisico']); unset($_SESSION['carrinho']); $this->_helper->flashMessenger(array( 'success' => 'Dados salvos com sucesso. Protocolo nº ' . $protocolo )); $request->setParam('protocolo_id', $protocolo); $form->init(); } } $this->view->form = $form; } public function enviarFisicoAction() { $form = new Form_Filtro_EnviarFisico(); $request = $this->getRequest(); $producao = array(); $busca = new Zend_Session_Namespace('enviar_fisico'); if( $request->isPost() && $form->isValid($request->getPost()) ){ $fields = $request->getPost(); $fields['menos_status_proposta'] = array( '66' ); unset($fields['btn_filtrar']); $busca->unsetAll(); $busca->enviar_fisico = array_filter($fields); } if( isset($busca->enviar_fisico) && count($busca->enviar_fisico) > 0 ){ $fields = $busca->enviar_fisico; $form->populate($fields); $contrato = new Model_Contrato(); $producao = $contrato->getFisicosEnviar($fields); } else { $this->_helper->flashMessenger(array( 'alert' => 'Atenção! Escolha pelo menos uma opção de filtragem.' )); $element = $form->getElement('status_proposta'); $element->setValue(43); } $this->view->producao = $producao; $this->view->form = $form; } public function baixarEnvioFisicoAction() { $request = $this->getRequest(); $form = new Form_BaixarEnvioFisico(); $protocolo = time(); $sess = new Model_YuppieSessionWrapper(); if( !isset($_SESSION['carrinho_enviar_fisico']) || empty($_SESSION['carrinho_enviar_fisico']) ){ $_SESSION['carrinho_enviar_fisico'] = $request->getPost('ck_contrato'); } if( $request->isPost() && $request->getPost('valid') ){ if( $form->isValid($request->getPost()) ){ $cont = 0; $carrinho = $sess->getSessVar("carrinho_enviar_fisico"); foreach ( $carrinho as $item ) { $contrato = new Model_Contrato(); try { $result = $contrato->enviarFisicos($item, $form->getValue('data_envio'), $form->getValue('obs_envio_fisico'), $form->getValue('bordero_newspace'), $form->getValue('numero_envelope'), $protocolo, ($form->getValue('baixar_recebimento') == 1) ? true : false, $form->getValue('usuario_formalizacao')); if( $result > 0 ){ $cont++; } } catch ( Zend_Exception $e ) { print_r($e); } } unset($_SESSION['enviar_fisico']); unset($_SESSION['carrinho_enviar_fisico']); if( $cont > 0 ){ $this->_helper->flashMessenger(array( 'success' => 'Dados salvos com sucesso. Protocolo nº ' . $protocolo )); $request->setParam('protocolo_id', $protocolo); $form->init(); } else { $this->_helper->flashMessenger(array( 'alert' => 'Atenção! Nenhum contrato foi baixado.' )); } } } $this->view->form = $form; } public function importarBonusAction() { $request = $this->getRequest(); $form = new Form_ImportarBonus(); if( $request->isPost() && $form->isValid($request->getPost()) ){ $upload = new Zend_File_Transfer_Adapter_Http(); $upload->setDestination(UPLOAD_PATH); try { $upload->receive(); } catch ( Zend_File_Transfer_Exception $e ) { $this->_helper->flashMessenger(array( 'error' => $e->getMessage() )); } $extension = pathinfo($upload->getFileName(), PATHINFO_EXTENSION); if( in_array($extension, array( 'csv', 'txt' )) ){ $objReader = PHPExcel_IOFactory::createReader('CSV'); $objReader->setDelimiter($extension == 'csv' ? ';' : '#'); } else { $objReader = PHPExcel_IOFactory::createReaderForFile($upload->getFileName()); $fileinfo = $objReader->listWorksheetInfo($upload->getFileName()); if( is_array($fileinfo) && ($arrayFilter = array_filter($fileinfo) != null) ){ $firstSheetName = $fileinfo[0]['worksheetName']; $objReader->setLoadSheetsOnly($firstSheetName); } } try { $objPHPExcel = $objReader->load($upload->getFileName()); } catch ( Exception $e ) { if( $e->getMessage() == 'Cannot read encrypted file' ){ $this->_helper->flashMessenger(array( 'alert' => 'O arquivo não pode ser lido. Verifique se ele ' . 'está protegido por senha e tente novamente.' )); } } if( isset($objPHPExcel) && is_object($objPHPExcel) ){ $sheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true); $objPHPExcel->disconnectWorksheets(); unset($objPHPExcel); unset($objReader); unlink($upload->getFileName()); $contrato = new Model_Contrato(); try { unset($sheetData[1]); $contrato = new Model_Contrato(); $qtdBaixado = $contrato->baixarRecebimentoBonus($sheetData, $request->getPost('banco_id'), $request->getPost('data_bonus')); if( $qtdBaixado > 0 ){ $this->_helper->flashMessenger(array( 'success' => $qtdBaixado . ' contrato(s) baixado(s) com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Nenhum contrato foi baixado.' . 'Verifique se os contratos do arquivo estão' . ' cadastrados no sistema.' )); } } catch ( Core_Exception $e ) { $this->_helper->flashMessenger(array( 'error' => $e->getMessage() )); } } } $this->view->form = $form; } public function analiseFisicoAction() { $request = $this->getRequest(); $form = new Form_AnaliseFisico(); $fisicos = []; if ($request->isPost() && $form->isValid($request->getPost())) { $upload = new Zend_File_Transfer_Adapter_Http(); $upload->setDestination(UPLOAD_PATH); $ns = new Zend_Session_Namespace('importacao_pendencias'); $ns->unsetAll(); try { $upload->receive(); } catch ( Zend_File_Transfer_Exception $e ) { $this->_helper->flashMessenger(['error' => $e->getMessage()]); } $objReader = PHPExcel_IOFactory::createReaderForFile($upload->getFileName()); $fileinfo = $objReader->listWorksheetInfo($upload->getFileName()); $modelBanco = new Model_Banco(); $banco = $modelBanco->exibir($request->getPost('banco_id')); $tipoImportacao = $request->getPost('tipo_importacao'); switch ( $banco->nome ) { case 'BMG': if( $tipoImportacao == "PENDENCIAS FISICO" ){ $fileinfo = $fileinfo[0]; } elseif( $tipoImportacao == "PENDENCIAS GERAIS" ){ $fileinfo = $fileinfo[0]; } elseif( $tipoImportacao == "EXTRATOR QLIKVIEW" ){ $fileinfo = $fileinfo[0]; } break; case 'PAN': if( $tipoImportacao == "DOCUMENTOS" ){ $fileinfo = $fileinfo[1]; } elseif( $tipoImportacao == "ANALITICO CONTRATO" ){ $fileinfo = $fileinfo[2]; } break; case 'BONSUCESSO': $fileinfo = $fileinfo[0]; break; case 'ITAÚ' ||'ITAU': $fileinfo = $fileinfo[0]; break; case 'BRADESCO PROMOTORA'; $fileinfo = $fileinfo[0]; break; default : $fileinfo = $fileinfo[1]; break; } if (is_array($fileinfo) && ($arrayFilter = array_filter($fileinfo) != null)) { $firstSheetName = $fileinfo['worksheetName']; $objReader->setLoadSheetsOnly($firstSheetName); } try { $objPHPExcel = $objReader->load($upload->getFileName()); } catch ( Exception $e ) { if ($e->getMessage() == "Cannot read encrypted file") { $this->_helper->json(['alert' => 'O arquivo não pode ser lido. Verifique se ele ' . 'está protegido por senha e tente novamente.']); } } if (isset($objPHPExcel) && is_object($objPHPExcel)) { $sheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true); $objPHPExcel->disconnectWorksheets(); unset($objPHPExcel); unset($objReader); unlink($upload->getFileName()); $ns = new Zend_Session_Namespace('importacao_pendencias'); $ns->unsetAll(); $ns->importacao_pendencias = $sheetData; //limpa a cobranca banco de todos os contratos para processar apenas o do arquivo enviado $dbtable = new Model_DbTable_Contrato(); $dbtable->limparCobrancaBanco($banco->id); } $this->view->fisicos = $sheetData; if( $request->isXmlHttpRequest() ){ $this->_helper->json(array( 'params' => $this->getRequest()->getPost(), 'url' => '/contrato/analisar-pendencias' )); } } $this->view->fisicos = $fisicos; $this->view->form = $form; } public function analisarPendenciasAction() { $request = $this->getRequest(); $ns = new Zend_Session_Namespace('importacao_pendencias'); $params = $request->getParam('params'); $linhas = $ns->importacao_pendencias; $ns->importacao_pendencias = array_slice($linhas, 100, null, true); $sheetData = array_diff_key($linhas, $ns->importacao_pendencias); $results = null; $dados = [ 'readCompleted' => null, 'result' => null, ]; unset($params['MAX_FILE_SIZE']); try { $results = Core_Banco_Pendencias::factory($sheetData, $params['banco_id'], $params['tipo_importacao']); } catch ( Exception $e ) { $this->_helper->json(['error' => $e->getMessage()]); } $dados = [ 'readCompleted' => count($ns->importacao_pendencias) > 0 ? false : true, 'result' => $results, ]; $error = new Zend_Session_Namespace('error_pendencias'); if (!is_array($error->error_pendencias)) { $error->error_pendencias = $results; } else { $tmp = array_merge($error->error_pendencias, array_values($results)); $error->error_pendencias = $tmp; } if (count($ns->importacao_pendencias) <= 0) { $this->view->pendentes = $error->error_pendencias; $error->unsetAll(); $this->_helper->json(array( 'content' => $this->view->render('contrato/analisar-pendencias.phtml') )); } $this->_helper->json($dados); } public function imprimirProtocoloPagamentoAction() { $this->_helper->layout->setLayout('layout_impressao'); $request = $this->getRequest(); $protocoloId = (int)$request->getParam('protocolo_id', 0); if (!$protocoloId) { die('Protocolo inválido!'); } $model = new Model_ProtocoloPagamento(); $protocolo = $model->exibir($protocoloId); if( !$protocolo ) { die('Protocolo inválido!'); } $protocoloContrato = new Model_ProtocoloContrato(); $contratos = $protocoloContrato->getContratosPorProtocolo($protocolo->id, array('banco ASC')); if( !$contratos ){ die('Protocolo inválido!'); } $this->view->protocolo = $protocolo; $this->view->corretor = $protocolo->findParentRow('Model_DbTable_Corretor'); $this->view->banco = $protocolo->findParentRow('Model_DbTable_BancoFebraban'); $this->view->contratos = $contratos; $totais = $model->getTotaisPorProtocolo($protocolo, $contratos); $this->view->taxaTransf = $totais['taxaTransf']; $this->view->totalRecuperado = $totais['totalRecuperado']; $this->view->totalComissao = $totais['totalComissao']; $this->view->totalEstorno = $totais['totalEstorno']; $this->view->totalRecibo = $totais['totalRecibo']; } public function exportarBonusPendenteAction() { $request = $this->getRequest(); $form = new Form_ExportarBonusPendente(); if( $request->isPost() && $form->isValid($request->getPost()) ){ $this->_helper->viewRenderer->setNoRender(); $this->_helper->getHelper('layout')->disableLayout(); $contrato = new Model_Contrato(); $fileName = $contrato->exportarBonusPendente($contrato->getBonusPendente($form->getValues())); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Cache-Control: pre-check=0, post-check=0, max-age=0'); header('Pragma: no-cache'); header('Expires: 0'); header('Content-Transfer-Encoding: none'); header('Content-Type: application/vnd.ms-excel;'); // This should work for IE && Opera header("Content-type: application/x-msexcel"); header('Content-disposition: attachment; filename=' . basename($fileName)); header('Content-type: application/pdf'); readfile($fileName); unlink($fileName); } $this->view->form = $form; } public function exportarPendenciasAction() { $request = $this->getRequest(); $this->_helper->viewRenderer->setNoRender(); $this->_helper->getHelper('layout')->disableLayout(); if( $request->isPost() ){ $contrato = new Model_Contrato(); $fileName = $contrato->exportarPendencias($request->getParam('contratos'), $request->getParam('pendencias')); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Cache-Control: pre-check=0, post-check=0, max-age=0'); header("Pragma: no-cache"); header("Expires: 0"); header('Content-Transfer-Encoding: none'); header('Content-Type: application/vnd.ms-excel;'); // This should work for IE && Opera header("Content-type: application/x-msexcel"); header('Content-disposition: attachment; filename=' . basename($fileName)); header('Content-type: application/pdf'); readfile($fileName); unlink($fileName); } } public function localizarComissaoAction() { $this->_helper->viewRenderer->setNoRender(); $this->_helper->getHelper('layout')->disableLayout(); $request = $this->getRequest(); $produtoId = $request->getParam('produto_id'); $clienteId = $request->getParam('cliente_id'); $corretorId = $request->getParam('corretor_id'); $dataEmissao = $request->getParam('data_emissao'); $prazo = $request->getParam('prazo'); if( !empty($produtoId) && !empty($clienteId) && !empty($corretorId) && !empty($dataEmissao) && !empty($prazo) ){ $cliente = new Model_Cliente(); $dadosCliente = $cliente->exibir($clienteId); $corretor = new Model_Corretor(); $dadosCorretor = $corretor->exibir($corretorId); if( $dadosCliente != null && $dadosCorretor != null ){ $comissionamento = new Model_Comissionamento(); $dadosComissionamento = $comissionamento->getComissao( $produtoId, $dadosCliente['empresa_id'], $dadosCorretor['grupo_comissao'], $prazo, $dataEmissao); if( $dadosComissionamento != null ){ echo Zend_Json::encode(array( 'result' => array( 'comissao_empresa' => number_format($dadosComissionamento['comissao_empresa'], 2, ',', '.'), 'comissao_corretor' => number_format(($dadosComissionamento['comissao_grupo']), 2, ',', '.'), ) )); exit; } } } echo Zend_Json::encode(array( 'result' => null )); } public function viewAction() { if( Yuppie_Auth::getIdentity()->grupo == 'Corretor' ){ $this->_helper->layout->setLayout('layout_corretor'); } $request = $this->getRequest(); $id = (int) $request->getParam('id'); $form = new Form_Contrato(); $ns = new Zend_Session_Namespace(); $this->view->acl = $ns->acl; if( $id > 0 ){ $dadosContrato = (new Model_Contrato())->exibir($id); if( empty($dadosContrato) ){ $this->_helper->flashMessenger(['error' => 'Contrato não localizado.']); $this->_helper->redirector('index', 'contrato'); } $dados = $dadosContrato->toArray(); $dadosCliente = (new Model_Cliente())->exibir($dados['cliente_id']); $dados['celular'] = $dadosCliente['celular']; $dados['telefone'] = $dadosCliente['fone']; if( Model_Contrato::ocultarSeCartao($dados['tipo']) ){ $form->removeElement("valor_liquido"); $form->removeElement("valor_bruto"); $form->removeElement("comissao_corretor"); $form->removeElement("comissao_gerente"); $form->removeElement("diferimento_corretor"); $form->removeElement("adiantamento_comissao_empresa"); $form->removeElement("bonus_corretor"); $form->removeElement("valor_beneficio"); $form->removeElement("valor_prestacao"); } $form->populate($dados); $this->view->dados_contrato = $dados; $this->view->dados_cliente = $dadosCliente; $dbTipos = new Model_DbTable_Tipos(); $tipo = $dbTipos->fetchRow("tipo = 'ANEXO_CONTRATO' AND descricao = 'Outros documentos'"); //exibe o formulário para anexar documentos $formDocumento = new Form_PropostaDocumento(); $formAnexo = new Form_ContratoAnexo(); $documento = new Model_ContratoAnexo(); $documentos = $documento->listar(array('contrato_id = ?' => $id)); $this->view->outroAnexoId = $tipo['id']; $this->view->formContratoDocumento = $formDocumento; $this->view->formContratoAnexo = $formAnexo; $this->view->documentos = $documentos; } $form->removeElement('comissao_empresa'); $form->removeElement('btn_save'); $form->removeElement('btn_new'); $form->removeElement('btn_view_historico'); $form->setAttrib('onsubmit', "return false;"); $this->view->form = $form; $this->_helper->viewRenderer->setRender('save'); } //Visualizar os protocolos dos corretores public function viewProtocoloAction() { $this->_helper->layout->setLayout('layout_popup'); $ns = new Zend_Session_Namespace(); $request = $this->getRequest(); $id = (int) $request->getParam('id'); $contrato = new Model_ProtocoloContrato(); $contratosProtocolos = $contrato->listarProtocolos('protocolos.excluido <> 1 AND contrato_id = ' . $id, 'protocolo_id ASC'); $this->view->acl = $ns->acl; $this->view->protocolos = $contratosProtocolos; } //Visualizar todos os protocolos gerados dos corretores com session public function viewProtocolosAction() { $nsProtocolos = new Zend_Session_Namespace('protocolos'); $nsContratosNaoGerados = new Zend_Session_Namespace('contratos_nao_gerados'); $contratos = null; if( !empty($nsProtocolos->protocolos) ){ $protocolos = $nsProtocolos->protocolos; $contrato = new Model_ProtocoloPagamento(); $contratos = $contrato->listarProtocolosGeradosParaLiberacao('protocolos_pagamentos.id IN(' . implode(',', $protocolos) . ')'); } $this->view->protocolos = $contratos; $this->view->contratos_nao_gerados = $nsContratosNaoGerados->contratos_nao_gerados; unset($nsProtocolos->protocolos, $nsContratosNaoGerados->contratos_nao_gerados); } public function protocolosLiberarAction() { $request = $this->getRequest(); $form = new Form_Filtro_QuitarProtocolos(); $protocolo = new Model_ProtocoloPagamento(); $ns = new Zend_Session_Namespace('filtro_liberar_protocolos'); if( $request->isPost() ){ $ns->unsetAll(); $ns->filtro_liberar_protocolos = $request->getPost(); } if( isset($ns->filtro_liberar_protocolos) && count($ns->filtro_liberar_protocolos) > 0 ){ $fields = $ns->filtro_liberar_protocolos; $form->populate($fields); $this->view->protocolos = $protocolo->listarProtocolosParaLiberar($fields); } $this->view->form = $form; } //Editar protocolo para lançar crédito e débito public function editProtocoloAction() { $this->_helper->layout->setLayout("layout_popup"); $request = $this->getRequest(); $id = (int) $request->getParam('id'); $form = new Form_EditProtocolo(); $protocolo = new Model_ProtocoloPagamento(); $dadosProtocolo = $protocolo->exibir($id); if( $dadosProtocolo && ($dadosProtocolo['data_quitacao'] == null || $dadosProtocolo['data_quitacao'] == '0000-00-00') ){ $form->populate(array( 'desconto' => $dadosProtocolo->desconto, 'acrescimo' => $dadosProtocolo->acrescimo )); $protocoloContrato = new Model_ProtocoloContrato(); $somaProtocolo = $protocoloContrato->getSomaProtocoloContrato($id); $vlProtocolo = $somaProtocolo['valor']; $taxaTransf = $protocolo->getTaxaTransf($dadosProtocolo, $vlProtocolo); $valoresRecuperar = $protocoloContrato->getValoresRecuperar($dadosProtocolo['corretor_id']); $recuperados = $dadosProtocolo->findDependentRowset('Model_DbTable_ProtocoloValorRecuperado'); $totalRecuperado = 0; if($recuperados){ $valoresRecuperados = array_map(function($element){ return $element['valor']; }, $recuperados->toArray()); $totalRecuperado = array_sum($valoresRecuperados); } $dbCorretor = new Model_Corretor(); $dadosCorretor = $dbCorretor->exibir($dadosProtocolo['corretor_id']); if( $request->isPost() ){ if( $form->isValid($request->getPost()) ){ $params = $request->getPost(); $totalRecuperar = 0; if( !empty($params['recuperar']) ){ $recuperar = array_map(function($value){ return Core_FilterValor::filter($value); }, $params['recuperar']); $totalRecuperar = array_sum($recuperar); } $protocolo = new Model_ProtocoloPagamento($dadosProtocolo->toArray()); $protocolo->setCorretorId($dadosProtocolo['corretor_id']); $protocolo->setAcrescimo($params['acrescimo']); $protocolo->setDesconto($params['desconto']); $protocolo->setComentario($params['obs']); $protocolo->setBanco($dadosCorretor['banco']); $protocolo->setAgencia($dadosCorretor['agencia']); $protocolo->setConta($dadosCorretor['conta']); $protocolo->setTipoConta($dadosCorretor['tipo_conta']); $sum = round(($protocolo->getAcrescimo() + $vlProtocolo) - ($protocolo->getDesconto()) - $totalRecuperado - $totalRecuperar - $taxaTransf, 2); if( $sum < 0 ){ $this->_helper->flashMessenger(array( 'alert' => 'Atenção! Descontos e valores a recuperar maior que o valor do protocolo.' )); $this->_redirect("/contrato/edit-protocolo/id/$id"); } $protocoloId = $protocolo->salvar($protocolo); if( $protocoloId > 0 ){ $request->setParam('id', $protocoloId); if( $request->getPost('lancar_credito') == 1 ){ $credito = new Model_CreditoCorretor(); $credito->setComporSaldo(1); $credito->setCategoriaId(0); $credito->setContaId(0); $credito->setCorretorId($dadosProtocolo['corretor_id']); $credito->setDataPagamento($dadosProtocolo['data_pagamento']); $credito->setDataVencimento($dadosProtocolo['data_pagamento']); $credito->setDescricao("PROTOCOLO: $protocoloId"); $credito->setEmpresaId($dadosCorretor['empresa_id']); $credito->setObs($params['obs']); $credito->setValor($params['acrescimo']); $credito->setValorPago($params['acrescimo']); $credito->salvar($credito); } if( $request->getPost('debitar_desconto') == 1 ){ $debito = new Model_DebitoCorretor(); $debito->setComporSaldo(1); $debito->setCategoriaId(0); $debito->setContaId(0); $debito->setCorretorId($dadosProtocolo['corretor_id']); $debito->setDataPagamento($dadosProtocolo['data_pagamento']); $debito->setDataVencimento($dadosProtocolo['data_pagamento']); $debito->setDescricao("PROTOCOLO: $protocoloId"); $debito->setEmpresaId($dadosCorretor['empresa_id']); $debito->setObs($params['obs']); $debito->setValor($params['desconto']); $debito->setValorPago($params['desconto']); $debito->salvar($debito); } if(count($recuperar) > 0 && $totalRecuperar > 0){ foreach($recuperar as $recuperarId => $valor){ if(!empty($valoresRecuperar[$recuperarId])){ $valorRecuperar = floatval($valoresRecuperar[$recuperarId]['recuperar']); $valorRecuperado = floatval($valoresRecuperar[$recuperarId]['recuperado']); if( $valorRecuperar - $valorRecuperado - $valor >= 0){ $recuperado = new Model_ProtocoloValorRecuperado(); $recuperado->setValorARecuperarId($recuperarId); $recuperado->setProtocoloId($dadosProtocolo->id); $recuperado->setValor($valor); $recuperado->salvar($recuperado); } else { $this->_helper->flashMessenger(array( 'alert' => 'Desconto referente ao contrato ' . $valoresRecuperar[$recuperarId]['numero_contrato'] . ' excede o valor a recuperar.' )); } } } } } $this->_helper->flashMessenger(array( 'success' => 'Dados salvos com sucesso.' )); $this->_redirect("/contrato/edit-protocolo/id/$id"); } else { $this->_helper->flashMessenger(array( 'alert' => 'Nada foi alterado no protocolo.' )); } } $this->view->taxa_transf = $taxaTransf; $this->view->valor_protocolo = $vlProtocolo; $this->view->protocolo = $dadosProtocolo; $this->view->valoresRecuperar = $valoresRecuperar; $this->view->totalRecuperado = $totalRecuperado; } else { $this->_helper->flashMessenger(array( 'error' => 'Protocolo não localizado ou já quitado.' )); $this->_helper->viewRenderer->setNoRender(); } $this->view->form = $form; } public function notificaQuitacaoAction() { $request = $this->getRequest(); $protocolosId = $request->getPost('protocolos'); if (count($protocolosId) > 0) { $cont = 0; $model = new Model_ProtocoloPagamento(); $protocoloContrato = new Model_ProtocoloContrato(); try { $mail = new Core_Mail(); foreach ($protocolosId as $protocoloId) { $protocolo = $model->exibir($protocoloId); $contratos = $protocoloContrato->getContratosPorProtocolo($protocolo->id, array('banco ASC')); $totais = $model->getTotaisPorProtocolo($protocolo, $contratos); $corretor = $protocolo->findParentRow('Model_DbTable_Corretor'); $this->view->contratos = $contratos; $this->view->protocolo = $protocolo; $this->view->totais = $totais; $this->view->corretor = $corretor; $result = $mail->enviarMensagemHtml( $corretor['nome'], $corretor['email'], "Quitação de Protocolo - {$protocoloId}", $this->view->render('contrato/protocolo-quitado-envio.phtml') ); if ($result['status']) { $cont++; } if (Model_Contrato::enviarProtocolosWhatsapp($corretor->id, [$protocoloId]) === false){ $this->_helper->flashMessenger(['alert' => "Corretor ID {$corretor->id} não teve o protocolo enviado no Whatsapp."]); } } } catch ( Exception $exc ) { $this->_helper->flashMessenger(['error' => $exc->getMessage()]); } $msg = array( 'tipo_alerta' => 'alert', 'msg' => 'Atenção! Nenhum protocolo foi enviado.' ); if( $cont > 0 ){ $msg['tipo_alerta'] = "success"; $msg['msg'] = "$cont protocolo(s) enviado(s) com sucesso."; } $this->_helper->flashMessenger(array($msg['tipo_alerta'] => $msg['msg'])); }else{ $this->_helper->flashMessenger(array('alert' => 'Atenção! Nenhum protocolo selecionado.')); } $this->_helper->redirector('protocolos-quitados', 'financeiro'); } /** * Editar protocolo a quitar */ public function editProtocoloAQuitarAction() { $request = $this->getRequest(); $protocoloId = $request->getParam('id'); $model = new Model_ProtocoloPagamento(); $protocolo = $model->exibir($protocoloId); $dadosProtocolo = $protocolo->toArray(); if(key_exists("data_quitacao", $dadosProtocolo)) $dadosProtocolo['quitado'] = $dadosProtocolo['data_quitacao'] && $dadosProtocolo['data_quitacao'] != '0000-00-00'; if( !$protocolo || $dadosProtocolo['quitado'] ) { $this->_helper->flashMessenger(array('error' => 'Protocolo inválido')); $this->_helper->redirector('quitar-protocolos', 'financeiro'); return; } $protocoloContrato = new Model_ProtocoloContrato(); $contratos = $protocoloContrato->getContratosPorProtocolo($protocolo->id, array('banco ASC')); if( !$contratos ){ $this->_helper->flashMessenger(array('danger' => 'Protocolo inválido')); $this->_helper->redirector('quitar-protocolos', 'financeiro'); return; } $this->view->protocolo = $protocolo; $this->view->corretor = $protocolo->findParentRow('Model_DbTable_Corretor'); $this->view->banco = $protocolo->findParentRow('Model_DbTable_BancoFebraban'); $this->view->contratos = $contratos; $totais = $model->getTotaisPorProtocolo($protocolo, $contratos); $this->view->taxaTransf = $totais['taxaTransf']; $this->view->totalRecuperado = $totais['totalRecuperado']; $this->view->totalComissao = $totais['totalComissao']; $this->view->totalEstorno = $totais['totalEstorno']; $this->view->totalRecibo = $totais['totalRecibo']; } public function enviarProtocoloAction() { $request = $this->getRequest(); $form = new Form_EnviarProtocolo(); $protocolosId = $request->getPost('protocolos'); $protocoloId = (int)$request->getParam('protocolo_id'); $notificacaoBloqueio = $request->getParam('bloqueio'); $contratoModel = new Model_DbTable_Contrato(); if ($protocoloId > 0) { $protocolosId = array($protocoloId); } if (count($protocolosId) > 0) { $contrato = new Model_Contrato(); $contratos = $contrato->listarProtocolosParaEmail(implode(",", $protocolosId)); $corretores = array(); if(count($contratos) > 0) { foreach ($contratos as $c) { if (empty($corretores[$c['corretor_id']][$c['protocolo_id']])) { if (!empty($corretor) && !empty($protocolo)) { $dados = $corretores[$corretor][$protocolo]['dados']; if ((!empty($dados['forma_pagamento_id']) && $dados['forma_pagamento_id'] != 7) || $dados['total_comissao'] == 0) { $corretores[$corretor][$protocolo]['taxa_transf'] = 0; } $corretores[$corretor][$protocolo]['total_comissao_liquido'] = $dados['total_comissao'] - $dados['taxa_transf']; } $corretor = $c['corretor_id']; $protocolo = $c['protocolo_id']; $corretores[$corretor][$protocolo]['dados'] = array_intersect_key($c, array_flip(array( 'protocolo_id', 'forma_pagamento_id', 'taxa_transf', 'banco_corretor', 'agencia', 'conta', 'tipo_conta', 'titular', 'cpf_titular', 'comentario', 'data_baixa', 'data_pagamento', 'acrescimo', 'desconto', 'recuperado', 'corretor', 'email_corretor', 'supervisor', 'email_supervisor', 'gerente', 'email_gerente', ))); $corretores[$corretor][$protocolo]['dados']['total_comissao'] = 0; $corretores[$corretor][$protocolo]['dados']['total_estorno'] = 0; $corretores[$corretor][$protocolo]['dados']['total_base_comissao'] = 0; } if ($c['valor_protocolo'] > 0) { $corretores[$corretor][$protocolo]['dados']['total_comissao'] += $c['valor_protocolo']; } else { $corretores[$corretor][$protocolo]['dados']['total_estorno'] += $c['valor_protocolo']; } if (!Model_Contrato::ocultarSeCartao($c['tipo'])) { $corretores[$corretor][$protocolo]['dados']['total_base_comissao'] += $c['base_comissao_valor']; } $corretores[$corretor][$protocolo]['contratos'][] = $c; $modelEmail = new Model_CorretorEmail(); $emailsAdicionaisCorretor = $modelEmail->listar(array('corretor_id' => $corretor)); if(count($emailsAdicionaisCorretor) > 0){ foreach($emailsAdicionaisCorretor as $em){ if($em->protocolo == 1){ $corretores[$corretor][$protocolo]['dados']['emails_adicionais'][] = $em->toArray(); } } } } if (count($corretores) > 0) { $corretoresString = implode(",", array_keys($corretores)); $selectPendencias = $contratoModel->getSelectContratosPendencias($corretoresString); $pendencias = $contratoModel->getAdapter()->fetchCol($selectPendencias); try { $cont = 0; $mail = new Core_Mail(); foreach ($corretores as $key => $protocolos) { $numeroProtocolos = []; if ($notificacaoBloqueio && in_array($key, $pendencias)) { $this->view->bloqueio = true; } else { $this->view->bloqueio = false; } foreach ($protocolos as $keyProtocolo => $protocolo) { $dados = $protocolo['dados']; $receberEmailsComCopia = array(); if (!empty($dados['email_supervisor'])){ $receberEmailsComCopia[] = array('email' => $dados['email_supervisor'], 'nome' => $dados['supervisor']); } if (!empty($dados['email_gerente'])){ $receberEmailsComCopia[] = array('email' => $dados['email_gerente'], 'nome' => $dados['gerente']); } $emailsAdicionais = array(); if ((!empty($dados['emails_adicionais'])) && (count($dados['emails_adicionais']) > 0)) { $emails = $dados['emails_adicionais']; foreach ($emails as $email) { $emailsAdicionais[] = array( "nome" => $dados['corretor'], "email" => $email['email_adicional'], "receber_email" => $email['receber_email'] ); } } $this->view->contratos = $protocolo['contratos']; $this->view->protocolo = $dados; $result = $mail->enviarMensagemHtml( $dados['corretor'], $dados['email_corretor'], "Protocolo de Pagamento - {$dados['protocolo_id']}", $this->view->render('contrato/protocolo-envio.phtml'), $emailsAdicionais, $receberEmailsComCopia ); if ($result['status']) { $cont++; } array_push($numeroProtocolos, $keyProtocolo); } } } catch ( Exception $exc ) { $this->_helper->flashMessenger(array('error' => $exc->getMessage())); } } else { $this->_helper->flashMessenger(array('alert' => 'Atenção! Protocolo não identificado.')); } if (!$request->getPost()) { $this->_helper->layout->setLayout('layout_popup'); $this->_helper->viewRenderer->setNoRender(); } if ($cont > 0) { $this->_helper->flashMessenger(array('success' => "$cont protocolo(s) enviado(s) com sucesso.")); } else { $this->_helper->flashMessenger(array('alert' => 'Atenção! Nenhum protocolo foi enviado.')); } } } else { $this->_helper->flashMessenger(array('alert' => 'Atenção! Nenhum protocolo selecionado.')); } $action = $request->getParam('action'); if( $action == "quitar-protocolos" || $action == "protocolos-quitados" ){ $this->_helper->redirector($action, 'financeiro'); } $this->view->form = $form; } public function importarPlanilhaParceiroAction() { $request = $this->getRequest(); $form = new Form_ImportarPlanilhaParceiro(); if( $request->isPost() && $form->isValid($request->getPost()) ){ $upload = new Zend_File_Transfer_Adapter_Http(); $upload->setDestination(UPLOAD_PATH); try { $upload->receive(); } catch ( Zend_File_Transfer_Exception $e ) { $this->_helper->flashMessenger(array( 'error' => $e->getMessage() )); } $extension = strtolower(pathinfo($upload->getFileName(), PATHINFO_EXTENSION)); if( in_array($extension, array( 'csv', 'txt' )) ){ $objReader = PHPExcel_IOFactory::createReader('CSV'); $objReader->setDelimiter($extension == 'csv' ? ';' : '#'); } else { $objReader = PHPExcel_IOFactory::createReaderForFile($upload->getFileName()); $fileinfo = $objReader->listWorksheetInfo($upload->getFileName()); if( is_array($fileinfo) && (array_filter($fileinfo) != null) ){ $firstSheetName = $fileinfo[0]['worksheetName']; $objReader->setLoadSheetsOnly($firstSheetName); } } try { $objPHPExcel = $objReader->load($upload->getFileName()); } catch ( Exception $e ) { if( $e->getMessage() == "Cannot read encrypted file" ){ $this->_helper->flashMessenger(array( 'alert' => 'O arquivo não pode ser lido. Verifique se ele ' . 'está protegido por senha e tente novamente.' )); } } if( isset($objPHPExcel) && is_object($objPHPExcel) ){ $sheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true); $objPHPExcel->disconnectWorksheets(); unset($objPHPExcel); unset($objReader); unlink($upload->getFileName()); $ns = new Zend_Session_Namespace('importacao_prod_banco'); $ns->unsetAll(); $ns->importacao_prod_banco = $sheetData; } if ($request->isXmlHttpRequest()) { $this->_helper->json(array( 'params' => $this->getRequest()->getPost(), 'url' => '/contrato/processar-producao-banco' )); } } $this->view->form = $form; } public function excluirLoteProtocoloPagamentoAction() { $protocolos = $this->getRequest()->getParam('protocolos'); $result = (new Model_ProtocoloPagamento)->excluirProtocolos($protocolos); $this->_helper->json($result); } public function excluirProtocoloPagamentoAction() { $this->excluirProtocoloPagamento(new Model_ProtocoloPagamento); } public function excluirProtocoloPagamentoSupervisorAction() { $this->excluirProtocoloPagamento(new Model_ProtocoloPagamentoSupervisor); } public function excluirProtocoloPagamentoGerenteAction() { $this->excluirProtocoloPagamento(new Model_ProtocoloPagamentoGerente); } public function excluirProtocoloPagamento($model){ $form = new Form_Filtro_ExcluirProtocoloPagamento(); $request = $this->getRequest(); $protocoloId = (int) $request->getParam('protocolo_pagamento_id'); if( $request->isPost() && $form->isValid($request->getParams()) ){ $form->populate($request->getPost()); if( $protocoloId > 0 ){ $protocolo = $model->exibir($protocoloId); if($protocolo){ $dadosProtocolo = $protocolo->toArray(); if(key_exists("data_quitacao", $dadosProtocolo)){ $dadosProtocolo['quitado'] = $dadosProtocolo['data_quitacao'] && $dadosProtocolo['data_quitacao'] != '0000-00-00'; } if($request->getParam('confirmar')){ $this->confirmarExclusaoProtocoloPagamento($model, $dadosProtocolo); } $this->view->model = $model; $this->view->protocolo = $dadosProtocolo; $this->view->contratos = $model->getContratos($protocoloId); } else { $this->_helper->flashMessenger(array('error' => 'Protocolo não encontrado.')); } } else { $this->_helper->flashMessenger(array('error' => 'Protocolo não foi informado.')); } } $this->view->form = $form; } public function confirmarExclusaoProtocoloPagamento($model, $protocolo) { $protocolosMaisRecentes = $model->listarProtocolosMesmoContrato($protocolo['id']); $ns = new Zend_Session_Namespace(); $acl = $ns->acl; if( !$acl->isAllowed(Yuppie_Auth::getIdentity()->grupo, 'excluir-protocolos-quitados') ){ if(!empty($protocolo['quitado'])){ $this->_helper->flashMessenger(array('alert' => 'Não é possível excluir protocolos quitados.')); } else if($protocolosMaisRecentes){ $this->_helper->flashMessenger(array('alert' => 'Não foi possível excluir este protocolo por que ao menos um contrato possui protocolos mais recentes.')); } else { $result = $model->excluir($protocolo['id']); if( $result > 0 ){ $this->_helper->flashMessenger(array('success' => 'Protocolo removido com sucesso.')); } else { $this->_helper->flashMessenger(array('alert' => 'Protocolo não foi removido.')); } } }else{ $result = $model->excluir($protocolo['id']); if( $result > 0 ){ $this->_helper->flashMessenger(array('success' => 'Protocolo removido com sucesso.')); } else { $this->_helper->flashMessenger(array('alert' => 'Protocolo não foi removido.')); } } } public function baixarPagamentoSupervisorAction() { $request = $this->getRequest(); $form = new Form_PagarComissaoSupervisor(); if( $request->isPost() ){ if( empty($_SESSION['pagamento_comissao_supervisor']) ){ $checks = $request->getPost('ck_contrato'); $valorTotal = array_sum($checks); if($valorTotal >= 0){ $_SESSION['pagamento_comissao_supervisor'] = array( "contratos" => $checks, "supervisor_id" => $request->getPost('supervisor_id') ); } else { $this->_helper->flashMessenger(array('error' => 'Não é possível gerar protocolos de pagamento com valor negativo.')); $this->_helper->redirector('pagar-comissao-supervisor', 'financeiro'); } } else { if ($form->isValid($request->getPost())) { $params = $request->getPost(); $protocolo = new Model_ProtocoloPagamentoSupervisor(); $protocolo->setSupervisorId($_SESSION['pagamento_comissao_supervisor']['supervisor_id']); $protocolo->setComentario($params['obs']); $protocolo->setDataPagamento($params['data_pagamento']); $protocolo->setAcrescimo($params['acrescimo']); $protocolo->setDesconto($params['desconto']); $protocoloId = $protocolo->salvar($protocolo); if ($protocoloId > 0) { $request->setParam('protocolo_id', $protocoloId); $form->init(); foreach ($_SESSION['pagamento_comissao_supervisor']['contratos'] as $contratoId => $valorComissao) { $contrato = new Model_Contrato(); try { $contrato->pagarComissaoSupervisor($contratoId, $valorComissao, $protocoloId); } catch (Exception $e) { $this->_helper->flashMessenger(array('alert' => $e->getMessage())); continue; } } unset($_SESSION['pagamento_comissao_supervisor']); $this->_helper->flashMessenger(array('success' => 'Dados salvos com sucesso.')); } else { $this->_helper->flashMessenger(array('error' => 'O protocolo não foi salvo.')); } } } } $this->view->form = $form; } public function imprimirProtocoloPagamentoSupervisorAction() { $this->_helper->layout->setLayout('layout_impressao'); $request = $this->getRequest(); $protocoloId = $request->getParam('protocolo_id'); $ns = new Zend_Session_Namespace(); $verificarComissao = $ns->acl->isAllowed(Yuppie_Auth::getIdentity()->grupo, 'pagar-comissao-supervisor') ? true : false; $protocolo = new Model_ProtocoloPagamentoSupervisor(); $dadosProtocolo = $protocolo->exibir($protocoloId); $contratos = array(); if( $dadosProtocolo != null ){ $contrato = new Model_ProtocoloPagamentoSupervisor(); $contratos = $contrato->listarProtocolos(array( 'protocolo_id' => $protocoloId )); } $this->view->acl = $verificarComissao; $this->view->protocolo = $dadosProtocolo; $this->view->contratos = $contratos; } public function enviarProtocoloSupervisorAction() { $request = $this->getRequest(); $form = new Form_EnviarProtocolo(); $protocoloId = (int) $request->getParam('protocolo_id'); if( $protocoloId > 0 ) { $protocolo = new Model_ProtocoloPagamentoSupervisor(); $dadosProtocolo = $protocolo->exibir($protocoloId); $contratos = array(); if ($dadosProtocolo != null) { $contrato = new Model_ProtocoloPagamentoSupervisor(); $contratos = $contrato->listarProtocolos(array('protocolo_id' => $protocoloId)); } if ($dadosProtocolo != null && $contratos != null) { $supervisor = new Model_GerenteRota(); $dadosSupervisor = $supervisor->exibir($dadosProtocolo['supervisor_id']); $this->view->protocolo = $dadosProtocolo; $this->view->contratos = $contratos; try { $email = new Core_Mail(); $result = $email->enviarMensagemHtml( $dadosSupervisor['nome'], $dadosSupervisor['email'], 'Protocolo de Pagamento - ' . $dadosProtocolo['id'], $this->view->render('contrato/protocolo-envio-supervisor.phtml') ); $this->_helper->flashMessenger(array($result['status'] ? "success" : "error" => $result['msg'])); } catch ( Exception $exc ) { $this->_helper->flashMessenger(array('error' => $exc->getMessage())); } } else { $this->_helper->flashMessenger(array( 'alert' => 'Atenção! Protocolo não identificado.' )); } } $this->view->form = $form; } public function notificarPendenciaAction() { $request = $this->getRequest(); if( $request->isPost() ){ $geral = $request->getParam('notificar_pendencias_geral'); $supervisor = $request->getParam('supervisor'); $bloqueioCorretor = $request->getParam('bloqueio_corretor'); $corretorId = $supervisor ? $supervisor : ( $bloqueioCorretor ? $bloqueioCorretor : $request->getParam('corretor') ); $contratos = $request->getPost('contratos'); if (count($contratos) > 0) { $modelEmpresa = new Model_Empresa(); $dadosEmpresa = $modelEmpresa->exibir(Yuppie_Auth::getIdentity()->empresa_id); $whereNotificacao = []; $render = 'contrato/notificacao-pendencia-fisico.phtml'; $assunto = "Contratos Pendentes de Formalização - {$dadosEmpresa['nome']}"; if ($bloqueioCorretor || strstr($geral, "Bloqueio")) { $assunto = "Notificação Bloqueio de Comissão por Pendência - {$dadosEmpresa['nome']}"; $render = 'contrato/notificacao-bloqueio-pendencia-fisico.phtml'; $whereNotificacao["notificar_atraso"] = 1; } $contrato = new Model_Contrato(); $corretor = new Model_Corretor(); $contSend = $contNotSend = 0; $notSendEmails = []; $contratosCorretor = []; foreach ($contratos as $contratoId) { $c = $contrato->exibir($contratoId); if($c){ if(!empty($contratosCorretor[$c['corretor_id']])){ array_push($contratosCorretor[$c['corretor_id']],$contratoId); }else{ if (!empty($c['corretor_id'])) { $contratosCorretor[ $c['corretor_id']] = array($contratoId); } } } } foreach ( $contratosCorretor as $key => $value ) { $whereNotificacao['contrato_id'] = $value; $corretorId = $key; $contratosCorretor = $contrato->selectContratos($value); $dadosCorretor = $corretor->exibir($corretorId); $this->view->prazo_fisico = $dadosCorretor->prazo_fisico; $this->view->contratos = $contratosCorretor; $pendencia = CLIENT_PATH . '/configs/email-pendencia-fisico.php'; if( file_exists($pendencia) ){ $pendencias = include $pendencia; $this->view->pendencias_email = $pendencias; } $emails = $emailsAdicionais = $receberEmailsComCopia = array(); if( $supervisor ){ $emails = $corretor->notificarPendenciaSupervisor($dadosCorretor['id']); } else { $emailEnvio = $dadosCorretor['email']; if( $emailEnvio ){ $modelEmail = new Model_CorretorEmail(); $dadosEmailAdicional = $modelEmail->listar(array( 'corretor_id' => $dadosCorretor['id'] )); foreach ( $dadosEmailAdicional as $adicional ) { if ($adicional->pendencia == 1) { $emailsAdicionais[] = array( 'email' => $adicional->email_adicional, 'nome' => $dadosCorretor['nome'], 'receber_email' => $adicional->receber_email); } } $dadosReceberEmailsComCopia = $corretor->getReceberEmailsComCopia($dadosCorretor['id']); foreach ( $dadosReceberEmailsComCopia as $receberEmail ) { if( $receberEmail['receber_email_supervisor'] == 1 ){ $receberEmailsComCopia[] = array( 'email' => $receberEmail['email_supervisor'], 'nome' => $receberEmail['supervisor'] ); } if( $receberEmail['receber_email_gerente'] == 1 ){ $receberEmailsComCopia[] = array( 'email' => $receberEmail['email_gerente'], 'nome' => $receberEmail['gerente'] ); } } $emails[] = $dadosCorretor; } } if( count($emails) > 0 ){ try { $mail = new Core_Mail(); foreach ( $emails as $email ) { if( $email ){ $result = $mail->enviarMensagemHtml( $email['nome'], $email['email'], $assunto, $this->view->render($render), $emailsAdicionais, $receberEmailsComCopia ); if( $result['status'] ){ $contSend++; } else { $contNotSend++; } } else { array_push($notSendEmails, $email['nome']); } } } catch ( Exception $exc ) { $this->_helper->flashMessenger(array("error" => $exc->getMessage())); } } if( $contSend > 0 ){ $mensagem = $contSend > 1 ? "$contSend Notificações foram enviadas." : "$contSend Notificação foi enviada."; $this->_helper->flashMessenger(array( "success" => $mensagem )); } if( $contNotSend > 0 ){ $mensagem = $contNotSend > 1 ? "$contNotSend Notificações não foram enviadas." : "$contNotSend Notificação não foi enviada."; $this->_helper->flashMessenger(array( "alert" => $mensagem )); } if( count($notSendEmails) > 0 ){ $mensagem = count($notSendEmails) > 1 ? "ATENÇÃO! " . count($notSendEmails) . " Notificações não enviadas pois não possuem e-mail cadastrado:<br>" : "ATENÇÃO! " . count($notSendEmails) . " Notificação não enviada pois não possui e-mail cadastrado:<br>"; foreach ( $notSendEmails as $nome ) { $mensagem .= "• $nome<br>"; } $this->_helper->flashMessenger(array( "alert" => $mensagem )); } } } } if( $request->getParam('relatorio-pendentes') || $geral ){ $this->_helper->redirector('fisicos-pendentes', 'relatorio'); } $this->_helper->redirector('index'); } public function notificarOperacaoCreditoAction() { $request = $this->getRequest(); if( $request->isPost() ){ $contratos = $request->getPost('contratos'); if( count($contratos) > 0 ){ $contrato = new Model_Contrato(); $corretor = new Model_Corretor(); $contSend = 0; $contNotSend = 0; $corretores = array(); foreach ( $contratos as $c ) { $dadosContrato = $contrato->exibir($c); if( $dadosContrato != null ){ $dadosCorretor = $dadosContrato->findParentRow('Model_DbTable_Corretor'); if( $dadosCorretor != null ){ if( !empty($dadosCorretor['email']) ){ $emailTo = $dadosCorretor['email']; } array_push($corretores, $dadosCorretor['id']); } } } $corretores = array_unique($corretores); foreach ( $corretores as $cor ) { $contratosCorretor = $contrato->listar( 'corretor_id = ' . $cor . ' AND (id = ' . implode(' OR id = ', $contratos) . ')'); $dadosCorretor = $corretor->exibir($cor); $this->view->contratos = $contratosCorretor; $dadosReceberEmailsComCopia = $corretor->getReceberEmailsComCopia($dadosCorretor['id']); $receberEmailsComCopia = array(); foreach ( $dadosReceberEmailsComCopia as $receberEmail ) { if( $receberEmail['receber_email_supervisor'] == 1 ){ $receberEmailsComCopia[] = array( 'email' => $receberEmail['email_supervisor'], 'nome' => $receberEmail['supervisor'] ); } if( $receberEmail['receber_email_gerente'] == 1 ){ $receberEmailsComCopia[] = array( 'email' => $receberEmail['email_gerente'], 'nome' => $receberEmail['gerente'] ); } } $modelEmail = new Model_CorretorEmail(); $dadosEmailAdicional = $modelEmail->listar(['corretor_id' => $dadosCorretor['id']]); $emailsAdicionais = []; foreach ( $dadosEmailAdicional as $adicional ) { if (!$adicional->protocolo && !$adicional->pendencia && !$adicional->chamado && !$adicional->juridico ) { $emailsAdicionais[] = [ 'email' => $adicional->email_adicional, 'nome' => $dadosCorretor['nome'], 'receber_email' => $adicional['receber_email'] ]; } } try { $email = new Core_Mail(); $result = $email->enviarMensagemHtml( $dadosCorretor['nome'], $dadosCorretor['email'], 'Notificação de Operações de Créditos', $this->view->render('contrato/notificacao-operacao-credito.phtml'), $emailsAdicionais, $receberEmailsComCopia ); if( $result['status'] ){ $contSend++; } } catch ( Exception $exc ) { $this->_helper->flashMessenger(array( "error" => $exc->getMessage())); break; } } if( $contSend > 0 ){ $mensagem = $contSend > 1 ? $contSend . " notificações foram enviadas." : $contSend . " notificação foi enviada."; $this->_helper->flashMessenger(array( "success" => $mensagem )); } if( $contNotSend > 0 ){ $mensagem = $contNotSend > 1 ? $contNotSend . " notificações não foram enviadas." : $contNotSend . " notificação não foi enviada."; $this->_helper->flashMessenger(array( "alert" => $mensagem )); } } } $this->_helper->redirector('index'); } public function notificarPendenciaEsteiraBancoAction() { $request = $this->getRequest(); $contSend = $contNotSend = 0; $corretores = array(); if( $request->isPost() ){ foreach ( $request->getPost("contratos") as $contratoId ) { $modelContrato = new Model_Contrato(); $contrato = $modelContrato->exibir($contratoId); $modelCorretor = new Model_Corretor(); $corretor = $modelCorretor->exibir($contrato->corretor_id); if( !isset($corretores[$contrato->corretor_id]) ){ $corretores[$contrato->corretor_id]['nome'] = $corretor->nome; $corretores[$contrato->corretor_id]['email'] = $corretor->email; } $contrato->esteira_banco = 1; $saveContrato = new Model_Contrato($contrato->toArray()); if( $saveContrato->salvar($saveContrato) ){ $corretores[$contrato->corretor_id]['contratos'][] = $contrato; } } foreach ( $corretores as $id => $corretor ) { $this->view->contratos = $corretor['contratos']; try { $email = new Core_Mail(); $result = $email->enviarMensagemHtml( $corretor['nome'], $corretor['email'], 'Notificação de Pendência na esteira do banco', $this->view->render('contrato/notificacao-pendencia-esteira-banco.phtml') ); if( $result ){ $contSend++; } else { $contNotSend++; } } catch ( Exception $exc ) { $this->_helper->flashMessenger(array( "error" => $exc->getMessage())); break; } } if( $contSend > 0 ){ $mensagem = $contSend > 1 ? $contSend . " notificações foram enviadas." : $contSend . " notificação foi enviada."; $this->_helper->flashMessenger(array( "success" => $mensagem )); } if( $contNotSend > 0 ){ $mensagem = $contNotSend > 1 ? $contNotSend . " notificações não foram enviadas." : $contNotSend . " notificação não foi enviada."; $this->_helper->flashMessenger(array( "alert" => $mensagem )); } } $this->_helper->redirector('index'); } public function notificarContratoRedigitadoAction() { $request = $this->getRequest(); $contSend = $contNotSend = 0; $corretores = array(); if( $request->isPost() ){ foreach ( $request->getPost("contratos") as $contratoId ) { $modelContrato = new Model_Contrato(); $contrato = $modelContrato->exibir($contratoId); $modelCorretor = new Model_Corretor(); $corretor = $modelCorretor->exibir($contrato->corretor_id); if( empty($corretores[$contrato->corretor_id]) ){ $corretores[$contrato->corretor_id]['nome'] = $corretor->nome; $corretores[$contrato->corretor_id]['email'] = $corretor->email; } $corretores[$contrato->corretor_id]['contratos'][] = $contrato; } foreach ( $corretores as $id => $corretor ) { $this->view->contratos = $corretor['contratos']; try { $email = new Core_Mail(); $result = $email->enviarMensagemHtml( $corretor['nome'], $corretor['email'], 'Contratos Redigitados', $this->view->render('contrato/notificacao-contrato-redigitado.phtml') ); if( $result['status'] == 1 ){ $contSend++; } else { $contNotSend++; } } catch ( Exception $exc ) { $this->_helper->flashMessenger(array( "error" => $exc->getMessage())); break; } } if( $contSend > 0 ){ $mensagem = $contSend > 1 ? $contSend . " notificações foram enviadas." : $contSend . " notificação foi enviada."; $this->_helper->flashMessenger(array( "success" => $mensagem )); } if( $contNotSend > 0 ){ $mensagem = $contNotSend > 1 ? $contNotSend . " notificações não foram enviadas." : $contNotSend . " notificação não foi enviada."; $this->_helper->flashMessenger(array( "alert" => $mensagem ." - ". $result['msg'] )); } } $this->_helper->redirector('index'); } public function excluirPendenciaEsteiraBancoAction() { $request = $this->getRequest(); $contSend = $contNotSend = 0; if( $request->isPost() ){ $contSend = 0; $contNotSend = 0; foreach ( $request->getPost("contratos") as $contrato ) { $modelContrato = new Model_Contrato(); $contrato = $modelContrato->exibir($contrato); $contrato->esteira_banco = 0; if( $contrato->save() ){ $contSend++; } else { $contNotSend++; } } if( $contSend > 0 ){ $mensagem = $contSend > 1 ? $contSend . " pendências foram removidas." : $contSend . " pendência foi removida."; $this->_helper->flashMessenger(array( "success" => $mensagem )); } if( $contNotSend > 0 ){ $mensagem = $contNotSend > 1 ? $contNotSend . " pendências não foram removidas." : $contNotSend . " pendência não foi removida."; $this->_helper->flashMessenger(array( "alert" => $mensagem )); } } $this->_helper->redirector('index'); } public function notificarTedDevolvidaAction() { set_time_limit(0); $request = $this->getRequest(); if( $request->isPost() ){ $contratos = $request->getPost('contratos'); if( count($contratos) > 0 ){ $contrato = new Model_Contrato(); $corretor = new Model_Corretor(); $contratosSemDataDevolucao = array(); $contratosSemCorretor = array(); $corretoresSemEmail = array(); $corretores = array(); foreach ( $contratos as $c ) { $dadosContrato = $contrato->exibir($c); if( $dadosContrato != null ){ if( empty($dadosContrato['data_ted_devolvida']) ){ $contratosSemDataDevolucao[$dadosContrato['id']] = $dadosContrato['numero_contrato']; } $dadosCorretor = $dadosContrato->findParentRow('Model_DbTable_Corretor'); if( $dadosCorretor != null ){ if( $dadosCorretor->email ){ array_push($corretores, $dadosCorretor['id']); } else { $corretoresSemEmail[$dadosContrato['id']] = $dadosCorretor->nome; } } else { $contratosSemCorretor[$dadosContrato['id']] = $dadosContrato['numero_contrato']; } } } //Removendo contratos que não possuem ted devolvida, corretores ou corretores sem email $contratos = array_diff($contratos, array_keys($contratosSemDataDevolucao)); $contratos = array_diff($contratos, array_keys($contratosSemCorretor)); $contratos = array_diff($contratos, array_keys($corretoresSemEmail)); $corretores = array_unique($corretores); $result = array(); if( count($contratos) > 0 ){ foreach ( $corretores as $cor ) { $contratosCorretor = $contrato->listar( 'corretor_id = ' . $cor . ' AND (id = ' . implode(' OR id = ', $contratos) . ')'); $dadosCorretor = $corretor->exibir($cor); $this->view->contratos = $contratosCorretor; $dadosReceberEmailsComCopia = $corretor->getReceberEmailsComCopia($dadosCorretor['id']); $receberEmailsComCopia = array(); foreach ( $dadosReceberEmailsComCopia as $receberEmail ) { if( $receberEmail['receber_email_supervisor'] == 1 ){ $receberEmailsComCopia[] = array( 'email' => $receberEmail['email_supervisor'], 'nome' => $receberEmail['supervisor'] ); } if( $receberEmail['receber_email_gerente'] == 1 ){ $receberEmailsComCopia[] = array( 'email' => $receberEmail['email_gerente'], 'nome' => $receberEmail['gerente'] ); } } $modelEmail = new Model_CorretorEmail(); $dadosEmailAdicional = $modelEmail->listar(array( 'corretor_id' => $dadosCorretor['id'] )); $emailsAdicionais = []; foreach ($dadosEmailAdicional as $adicional) { if (!$adicional->protocolo && !$adicional->pendencia && !$adicional->chamado && !$adicional->juridico ) { $emailsAdicionais[] = [ 'email' => $adicional->email_adicional, 'nome' => $dadosCorretor['nome'], 'receber_email' => $adicional['receber_email'] ]; } } try { $email = new Core_Mail(); $result[] = $email->enviarMensagemHtml( $dadosCorretor['nome'], $dadosCorretor['email'], 'Notificação de TED devolvida', $this->view->render('contrato/notificacao-ted-devolvida.phtml'), $emailsAdicionais, $receberEmailsComCopia ); } catch ( Exception $exc ) { $this->_helper->flashMessenger(array('error' => $exc->getMessage())); break; } } } if( count($contratosSemDataDevolucao) > 0 ){ $contratosSemDataDevolucao = str_replace(',', ', ', implode(",", $contratosSemDataDevolucao)); $this->_helper->flashMessenger(array('error' => "Os contratos {$contratosSemDataDevolucao} \n não possuem data de devolução da TED.")); $this->_helper->flashMessenger(array('info' => "Utilize o filtro 'TED devolvida', em filtros avançados, para visualizar os contratos habilitados para envio.")); } if( count($contratosSemCorretor) > 0 ){ $contratosSemCorretor = str_replace(',', ', ', implode(",", $contratosSemCorretor)); $this->_helper->flashMessenger(array('error' => "Os contratos {$contratosSemCorretor} \n não possuem Corretor.")); } if( count($corretoresSemEmail) > 0 ){ $corretoresSemEmail = str_replace(',', ', ', implode(",", $corretoresSemEmail)); $this->_helper->flashMessenger(array('error' => "Os corretores {$corretoresSemEmail} \n não possuem E-mail cadastrado.")); } foreach ( $result as $r ) { $this->_helper->flashMessenger(array( $r['status'] ? "success" : "error" => $r['msg'] )); } } } $this->_helper->redirector('index'); } public function notificarOpDisponivelAction() { $request = $this->getRequest(); if( $request->isPost() ){ $contratos = $request->getPost('contratos'); if( count($contratos) > 0 ){ $contrato = new Model_Contrato(); $corretor = new Model_Corretor(); $corretores = array(); foreach ( $contratos as $c ) { $dadosContrato = $contrato->exibir($c); if( $dadosContrato != null && !$dadosContrato->data_op_sacada ){ $dadosCorretor = $dadosContrato->findParentRow('Model_DbTable_Corretor'); if( $dadosCorretor != null ){ array_push($corretores, $dadosCorretor['id']); } } } $corretores = array_unique($corretores); if( !$corretores ){ $this->_helper->flashMessenger(array( "error" => "Não existem contratos marcados como OP Disponível para envio." )); $this->_helper->redirector('index'); } $result = array(); foreach ( $corretores as $cor ) { $contratosCorretor = $contrato->listar( 'corretor_id = ' . $cor . ' AND (id = ' . implode(' OR id = ', $contratos) . ')'); $dadosCorretor = $corretor->exibir($cor); $dadosReceberEmailsComCopia = $corretor->getReceberEmailsComCopia($dadosCorretor['id']); $receberEmailsComCopia = array(); foreach ( $dadosReceberEmailsComCopia as $receberEmail ) { if( $receberEmail['receber_email_supervisor'] == 1 ){ $receberEmailsComCopia[] = array( 'email' => $receberEmail['email_supervisor'], 'nome' => $receberEmail['supervisor'] ); } if( $receberEmail['receber_email_gerente'] == 1 ){ $receberEmailsComCopia[] = array( 'email' => $receberEmail['email_gerente'], 'nome' => $receberEmail['gerente'] ); } } $modelEmail = new Model_CorretorEmail(); $dadosEmailAdicional = $modelEmail->listar(['corretor_id' => $dadosCorretor['id']]); $emailsAdicionais = []; foreach ( $dadosEmailAdicional as $adicional ) { if (!$adicional->protocolo && !$adicional->pendencia && !$adicional->chamado && !$adicional->juridico ) { $emailsAdicionais[] = array('email' => $adicional->email_adicional, 'nome' => $dadosCorretor['nome'], 'receber_email' => $adicional['receber_email']); } } $this->view->contratos = $contratosCorretor; try { $email = new Core_Mail(); $result[] = $email->enviarMensagemHtml( $dadosCorretor['nome'], $dadosCorretor['email'], 'Notificação de OP disponível', $this->view->render('contrato/notificacao-op-disponivel.phtml'), $emailsAdicionais, $receberEmailsComCopia ); } catch ( Exception $exc ) { $this->_helper->flashMessenger(array('error' => $exc->getMessage())); break; } } foreach ( $result as $r ) { $this->_helper->flashMessenger(array( $r['status'] ? "success" : "error" => $r['msg'] )); } } } $this->_helper->redirector('index'); } public function selecionarAcaoAction() { $acao = $this->getRequest()->getPost('acao'); $acoes = array( 'notificar-pendencia', 'notificar-ted-devolvida', 'notificar-op-disponivel', 'notificar-operacao-credito', 'notificar-pendencia-esteira-banco', 'excluir-pendencia-esteira-banco', 'notificar-contrato-redigitado','contratos-recuperar', 'excluir-contratos-recuperar', 'envia-notificacao-analise', 'alterar-cobranca-banco', 'previa-recebimento', 'alterar-estornado', 'alterar-previa-recebimento', 'excluir-selecionados', 'imprimir-previa-recebimento' ); if( in_array($acao, $acoes) ){ $this->_forward($acao, null, null, $this->getRequest()->getParams()); } else { $this->_helper->redirector('notificar-pendencia'); } } //Retira a prévia de Recebimento public function alterarPreviaRecebimentoAction() { $this->_helper->viewRenderer->setNoRender(); $this->_helper->getHelper('layout')->disableLayout(); $request = $this->getRequest(); if( $request->isPost() ){ $contratos = $request->getPost('contratos'); if( count($contratos) > 0 ){ $cont = 0; foreach ( $contratos as $contratoId ) { $modelContrato = new Model_Contrato(); $result = $modelContrato->alterarPreviaRecebimento($contratoId); if( $result > 0 ){ $cont++; } } if( $cont > 0 ){ $this->_helper->flashMessenger(array( 'success' => 'Prévia de Recebimento alterada com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Nenhuma prévia de recebimento foi alterada.' )); } } } $this->_helper->redirector('index'); } public function alterarCobrancaBancoAction() { $request = $this->getRequest(); if( $request->isPost() ){ $contratos = $request->getPost('contratos'); if( count($contratos) > 0 ){ $contrato = new Model_Contrato(); $cont = 0; foreach ( $contratos as $c ) { $dadosContrato = $contrato->exibir($c); $dbtable = new Model_DbTable_Contrato(); $ns = new Zend_Session_Namespace(); if( $dadosContrato['cobranca_banco'] == 1 && !$ns->acl->isAllowed(Yuppie_Auth::getIdentity()->grupo, "retirar-cobranca-banco") ){ $this->_helper->flashMessenger(array( 'alert' => "{$dadosContrato['numero_contrato']} - Você não tem permissão para retirar cobrança banco." )); continue; } $result = $dbtable->alterarCobrancaBanco($c, ($dadosContrato['cobranca_banco'] == 1 ? 0 : 1)); if( $result > 0 ){ $cont++; } } if( $cont > 0 ){ $this->_helper->flashMessenger(array( 'success' => 'Alteração realizada com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Nenhum registro foi alterado.' )); } } else { $this->_helper->flashMessenger(array( 'alert' => 'Nenhum registro foi selecionado.' )); } } $this->_helper->redirector('index'); } public function alterarCobrancaPromotoraAction() { $request = $this->getRequest(); if( $request->isPost() ){ $contratos = $request->getPost('contratos'); if( count($contratos) > 0 ){ $contrato = new Model_Contrato(); $cont = 0; foreach ( $contratos as $c ) { $dadosContrato = $contrato->exibir($c); $dbtable = new Model_DbTable_Contrato(); $result = $dbtable->alterarCobrancaPromotora($c, ($dadosContrato['cobranca_promotora'] == 1 ? 0 : 1)); if( $result > 0 ){ $cont++; } } if( $cont > 0 ){ $this->_helper->flashMessenger(array( 'success' => 'Alteração realizada com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Nenhum registro foi alterado.' )); } } else { $this->_helper->flashMessenger(array( 'alert' => 'Nenhum registro foi selecionado.' )); } } $this->_helper->redirector('index'); } public function baixarPagamentoGerenteAction() { $request = $this->getRequest(); $form = new Form_PagarComissaoGerente(); if( !isset($_SESSION['contratos_gerente']) || empty($_SESSION['contratos_gerente']) ){ $_SESSION['contratos_gerente'] = $request->getPost('ck_contrato'); $_SESSION['gerente_id'] = $request->getParam('gerente_id'); } if( $request->isPost() ){ if( $form->isValid($request->getPost()) ){ $params = $request->getPost(); $protocolo = new Model_ProtocoloPagamentoGerente(); $protocolo->setGerenteId($_SESSION['gerente_id']); $protocolo->setComentario($params['obs']); $protocolo->setDataPagamento($params['data_pagamento']); $protocolo->setAcrescimo($params['acrescimo']); $protocolo->setDesconto($params['desconto']); $protocoloId = $protocolo->salvar($protocolo); if( $protocoloId > 0 ){ $request->setParam('protocolo_id', $protocoloId); $form->init(); foreach ( $_SESSION['contratos_gerente'] as $item ) { $contrato = new Model_Contrato(); try { $contrato->pagarComissaoGerente($item, $protocoloId); } catch ( Zend_Exception $e ) { print_r($e); } } unset($_SESSION['contratos_gerente']); unset($_SESSION['gerente_id']); $this->_helper->flashMessenger(array( 'success' => 'Dados salvos com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'error' => 'O protocolo não foi salvo.' )); } } } $this->view->form = $form; } public function imprimirProtocoloPagamentoGerenteAction() { $this->_helper->layout->setLayout('layout_impressao'); $request = $this->getRequest(); $protocoloId = $request->getParam('protocolo_id'); $protocolo = new Model_ProtocoloPagamentoGerente(); $dadosProtocolo = $protocolo->exibir($protocoloId); $contratos = array(); if( $dadosProtocolo != null ){ $contrato = new Model_Contrato(); $contratos = $contrato->getProtocoloPagamentoGerente($protocoloId); } $this->view->protocolo = $dadosProtocolo; $this->view->contratos = $contratos; } public function enviarProtocoloGerenteAction() { $request = $this->getRequest(); $form = new Form_EnviarProtocolo(); $protocoloId = (int) $request->getParam('protocolo_id'); if( $protocoloId > 0 ){ $protocolo = new Model_ProtocoloPagamentoGerente(); $dadosProtocolo = $protocolo->exibir($protocoloId); $contratos = array(); if( $dadosProtocolo != null ){ $contrato = new Model_Contrato(); $contratos = $contrato->getProtocoloPagamentoGerente($protocoloId); } if( $dadosProtocolo != null && $contrato != null ){ $gerente = new Model_Gerente(); $dadosGerente = $gerente->exibir($dadosProtocolo['gerente_id']); $this->view->protocolo = $dadosProtocolo; $this->view->contratos = $contratos; try { $email = new Core_Mail(); $result = $email->enviarMensagemHtml( $dadosGerente['nome'], $dadosGerente['email'], 'Protocolo de Pagamento - ' . $dadosProtocolo['id'], $this->view->render('contrato/protocolo-envio-gerente.phtml') ); $this->_helper->flashMessenger(array( $result['status'] ? "success" : "error" => $result['msg'] )); } catch ( Exception $exc ) { $this->_helper->flashMessenger(array( "error" => $exc->getMessage())); } } else { $this->_helper->flashMessenger(array( 'alert' => 'Atenção! Protocolo não identificado.' )); } } $this->view->form = $form; } public function excluirProtocoloFisicoAction() { $request = $this->getRequest(); $form = new Form_Filtro_ExcluirProtocoloFisico(); $fields = array(); $adapter = null; if( $request->isPost() && $form->isValid($request->getPost()) ){ $fields = $request->getPost(); $form->populate($fields); $dbtable = new Model_DbTable_Contrato(); $adapter = $dbtable->fetchAllDependents($fields, 'corretor ASC'); $this->view->protocolo_id = $fields['protocolo_recebimento_fisico']; } $this->view->contratos = $adapter; $this->view->form = $form; } public function executarExclusaoProtocoloFisicoAction() { $request = $this->getRequest(); $protocoloId = (int) $request->getParam('protocolo_recebimento_fisico'); if( $protocoloId > 0 ){ $contrato = new Model_Contrato(); $result = $contrato->excluirProtocoloFisico($protocoloId); if( $result > 0 ){ $this->_helper->flashMessenger(array( 'success' => 'Protocolo Removido com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'O protocolo não foi removido.' )); } } else { $this->_helper->flashMessenger(array( 'error' => 'O protocolo não foi informado.' )); } $this->_helper->redirector('excluir-protocolo-fisico'); } public function contratosCorrigirAction() { $form = new Form_Filtro_ContratoCorrigir(); $request = $this->getRequest(); $fields = array(); $adapter = null; if( $request->isPost() && $form->isValid($request->getPost()) ){ $form->populate($request->getPost()); $fields = $request->getPost(); $dbtable = new Model_DbTable_Contrato(); $adapter = $dbtable->contratosCorrigir($fields, 'data_emissao ASC'); } $this->view->paginator = $adapter; $this->view->form = $form; } public function imprimirProtocoloRecebimentoAction() { $this->_helper->layout->setLayout('layout_impressao'); $request = $this->getRequest(); $protocoloId = $request->getParam('protocolo_id'); $contratos = array(); if( $protocoloId > 0 ){ $contrato = new Model_Contrato(); $fields['protocolo_recebimento_fisico'] = $protocoloId; $contratos = $contrato->listarProtocolosRecebimento($fields); } $this->view->contratos = $contratos; } public function imprimirProtocoloEnvioAction() { $this->_helper->layout->setLayout('layout_impressao'); $request = $this->getRequest(); $protocoloId = $request->getParam('protocolo_id'); $contratos = array(); if( $protocoloId > 0 ){ $contrato = new Model_Contrato(); $where = 'protocolo_envio_fisico = ' . $protocoloId; $where .= " AND numero_contrato IS NOT NULL AND numero_contrato <> ''"; $contratos = $contrato->listar($where); } $this->view->contratos = $contratos; } public function importarProducaoBancoAction() { set_time_limit(0); // ini_set('memory_limit', '-1'); $request = $this->getRequest(); $form = new Form_ImportarProducaoBanco(); $produto = new Model_Produto(); if( $produto->getProdutosSemTipoOuBanco() != null ){ $this->_helper->flashMessenger(array( 'alert' => "Atenção! Você possui " . "um ou mais produtos com o campo Tipo ou o campo Banco vazios. Isso faz com que " . "contratos sejam importados com a comissão zerada." )); } if ($request->isPost()) { if ($form->isValid($request->getPost())) { $upload = new Zend_File_Transfer_Adapter_Http(); $diretorioDestino = UPLOAD_PATH . '/arquivos-importados/' . $form->getValue('banco_id'); if (!(is_dir($diretorioDestino))){ if (!(mkdir($diretorioDestino, 0777, true))){ throw new Zend_Upload_Exception("Pasta de upload nao existe e não pode ser criada."); } } try { $info = $upload->getFileInfo('arquivo'); $info['destination'] = $diretorioDestino; $upload->receive(); } catch (Zend_File_Transfer_Exception $e) { $this->_helper->flashMessenger(array('error' => $e->getMessage())); } $file = $upload->getFileName(); $extension = strtolower(pathinfo($file, PATHINFO_EXTENSION)); if (in_array($extension, array('csv', 'txt'))) { $objReader = PHPExcel_IOFactory::createReader('CSV'); $config = new Zend_Config_Ini(CLIENT_PATH . '/configs/application.ini'); $encoding = Core_Util::detectFileEncoding($file); if(strstr($encoding, 'unknown') || is_null($encoding) || strstr($encoding, 'binary')){ $encoding = mb_detect_encoding(file_get_contents($file), "UTF-8,ISO-8859-1,ISO-8859-15,WINDOWS-1252"); } $objReader->setInputEncoding($encoding); $objReader->setDelimiter($extension == 'csv' ? ';' : '#'); $bancosId = $form->getElement('banco_id')->getMultiOptions(); //seta o delimitador se estiver importando BMG ou ITAU if (stristr($bancosId[$form->getValue('banco_id')], "BMG") && isset($config->production->yuppie->delimitador->bmg) ) { $delimitador = $config->production->yuppie->delimitador->bmg; $objReader->setDelimiter($delimitador == "TAB" ? "\t" : $delimitador); }elseif (stristr($bancosId[$form->getValue('banco_id')], "ITAU") && isset($config->production->yuppie->delimitador->itau)){ $delimitador = $config->production->yuppie->delimitador->itau; $objReader->setDelimiter($delimitador == "TAB" ? "\t" : $delimitador); } if ($form->getValue('banco_id') == 43) { $content = file_get_contents($file); $formatedContent = preg_replace('/("\d{1,3}),(\d{1,3})/', '$1$2', $content); file_put_contents($file, str_replace(',', ";", $formatedContent)); } } else { $objReader = PHPExcel_IOFactory::createReaderForFile($file); $fileinfo = $objReader->listWorksheetInfo($file); if (is_array($fileinfo) && ($arrayFilter = array_filter($fileinfo) != null)) { $firstSheetName = $fileinfo[0]['worksheetName']; $objReader->setLoadSheetsOnly($firstSheetName); } } try { @$objPHPExcel = $objReader->load($upload->getFileName()); } catch (Exception $e) { if ($e->getMessage() == "Cannot read encrypted file") { $this->_helper->flashMessenger(array('alert' => 'O arquivo não pode ser lido. Verifique se ele ' . 'está protegido por senha e tente novamente.')); }else{ $this->_helper->flashMessenger(array('alert' => 'O arquivo não pode ser lido. Verifique' . 'se a extensão corresponde ao seu conteúdo.')); } } $pathinfo = pathinfo($upload->getFileName()); $md5File = md5_file($upload->getFileName()); $log = new stdClass(); $log->arquivo = isset($pathinfo) ? $pathinfo['basename'] : ""; $log->md5 = isset($md5File) ? $md5File : ""; if (isset($objPHPExcel) && is_object($objPHPExcel)) { try{ $sheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true); }catch (PHPExcel_Exception $e){ $this->_helper->json(array("error" => $e->getMessage())); } $objPHPExcel->disconnectWorksheets(); unset($objPHPExcel); unset($objReader); $ns = new Zend_Session_Namespace('importacao_prod_banco'); $ns->unsetAll(); $ns->importacao_prod_banco = $sheetData; $ns->extensao = $extension; $ns->arquivo = $log->arquivo; $ns->log = $log; if ($request->isXmlHttpRequest()) { $count = count($sheetData); $ns->total_count = $count; $this->_helper->json([ 'params' => $this->getRequest()->getPost(), 'url' => ImportacaoBancoService::getUrlProcessarProducaoBanco($count), 'total_count' => $count, ]); } } } else { if ($request->isXmlHttpRequest()){ $this->_helper->json(array("validations" => $form->getMessages())); } } } $this->view->form = $form; } public function processarProducaoBancoAction() { $request = $this->getRequest(); $params = $request->getParam('params'); $ns = new Zend_Session_Namespace('importacao_prod_banco'); $linhas = $ns->importacao_prod_banco; $ns->importacao_prod_banco = array_slice($linhas, 100, null, true); $sheetData = array_diff_key($linhas, $ns->importacao_prod_banco); if( !isset($params['lacoIniciado']) ){ $ns->cabecalho = $sheetData; //guardar cabeçalho na primeira execucao } $params['subestabelecido_id'] = !isset($params['subestabelecido_id']) ? null : $params['subestabelecido_id']; $params['usar_padrao'] = !isset($params['usar_padrao']) ? null : $params['usar_padrao']; $params['layout_banco'] = !isset($params['layout_banco']) ? null : $params['layout_banco']; try { $contrato = new Model_Contrato(); $naoImportados = $contrato->importarProducaoBanco( $params['banco_id'], $sheetData, isset($params['lacoIniciado']) ? 0 : null, $params['subestabelecido_id'], $ns->extensao, $ns->log, $params['layout_banco'] ); } catch ( Exception $ex ) { $this->_helper->json(array( 'error' => $ex->getMessage() )); } $error = new Zend_Session_Namespace('error'); $error->error = !is_array($error->error) ? $naoImportados : array_merge($error->error, array_values($naoImportados)); $tabela = new Model_Tabela(); $tabelasNovas = $tabela->checkNewTables(); if( count($ns->importacao_prod_banco) <= 0 ){ $this->view->nao_baixados = $error->error; $error->unsetAll(); $this->_helper->json(array( 'content' => $this->view->render('contrato/nao-baixados.phtml'), 'new_tables' => $tabelasNovas )); } $this->_helper->json(array( 'readCompleted' => count($ns->importacao_prod_banco) < 0, 'result' => $naoImportados, 'count' => count($ns->importacao_prod_banco), 'new_tables' => $tabelasNovas )); } public function addDocumentoAction() { try { $request = $this->getRequest(); $params = $request->getParams(); $tab = $params['descricao'] ? 4 : 3; $fields = $request->getPost(); $upload = new Zend_File_Transfer_Adapter_Http(); $form = $params['descricao'] ? new Form_PropostaDocumento() : new Form_ContratoAnexo(); $tipo = $this->anexoService->getAnexoTipo($form, $request); $fields['tipo_id'] = $tipo['id']; $fields['descricao'] = $params['descricao'] ?? $tipo['descricao']; $this->anexoService->validarAnexo($upload, $fields, $form, $request); Upload::save($upload, $fields, $this->_bucketFolder); $documento = new Model_ContratoAnexo($fields); $result = $documento->salvar(); $this->anexoService->validarAnexoSalvo($result); $this->_helper->flashMessenger(['success' => 'Documento anexado com sucesso.']); } catch (DomainException $domainException) { $this->_helper->flashMessenger(['error' => $domainException->getMessage()]); } catch (Throwable $throwable) { Yuppie_Log::write("Erro ao anexar arquivo no contrato. Params => " . print_r($params, true) . $throwable->getMessage() . $throwable->getTraceAsString(), $this); $this->_helper->flashMessenger(['error' => 'Ocorreu um erro durante a solicitação.']); } $this->_redirect("/contrato/save/id/{$params['contrato_id']}/#mytabcontainer-frag-$tab"); } public function deleteDocumentoAction() { $request = $this->getRequest(); $id = (int)$request->getParam('id'); $tab = $request->getParam('tab'); if ($id > 0) { $dbContratoAnexo = new Model_DbTable_ContratoAnexo(); $anexo = $dbContratoAnexo->fetchRow("id = $id"); try{ Upload::deleteObject($anexo['arquivo'], $this->_bucketFolder); $documento = new Model_ContratoAnexo(); Yuppie_Log::write("Exclusão de anexo pelo deleteDocumentoAction: " . print_r($anexo, true), $this); $result = $documento->excluir($id); } catch (Exception $ex) { $this->_helper->flashMessenger(['error' => $ex->getMessage()]); } if ($result > 0) { $this->_helper->flashMessenger(['success' => 'Documento removido com sucesso.']); } else { $this->_helper->flashMessenger(['alert' => 'Atenção! O documento não foi removido.']); } } $this->_redirect( "/contrato/save/id/{$request->getParam('contrato_id')}" . "/#mytabcontainer-frag-$tab"); } public function verificaContratoAction() { $this->_helper->viewRenderer->setNoRender(); $request = $this->getRequest(); if( $request->isPost() ){ $model = new Model_Contrato(); $contrato = $model->existe($request->getPost('numero_contrato')); if( count($contrato) > 0 ){ $this->_redirect("/contrato/save/id/{$contrato['id']}" . "/cliente_id/{$contrato['cliente_id']}"); } else { $this->_helper->flashMessenger(array( 'error' => 'Contrato não existe.' )); $this->_redirect("/contrato/save/id/{$request->getParam('id')}" . "/cliente_id/{$request->getParam('cliente_id')}"); } } } public function excluirContratosCorrigirAction() { $request = $this->getRequest(); if( $request->isPost() ){ $contratos = $request->getPost('contratos'); if( count($contratos) > 0 ){ $modelContrato = new Model_Contrato(); foreach ( $contratos as $contrato ) { try { $modelContrato->excluir($contrato); } catch ( Exception $e ) { $this->_helper->flashMessenger(array( 'error' => $e->getMessage() )); } } } $this->_helper->flashMessenger(array( 'success' => 'Contratos excluidos com sucesso.' )); } $this->_helper->redirector('contratos-corrigir'); } public function previaRecebimentoAction() { $this->_helper->viewRenderer->setNoRender(); $this->_helper->getHelper('layout')->disableLayout(); $request = $this->getRequest(); if( $request->isPost() ){ $contratos = $request->getPost('contratos'); if( count($contratos) > 0 ){ $cont = $contExceptions = 0; $msg = array(); foreach ( $contratos as $contratoId ) { try { $modelContrato = new Model_Contrato(); $result = $modelContrato->setarPreviaRecebimento($contratoId); if( $result > 0 ){ $cont++; } } catch ( Exception $e ) { $contExceptions++; $msg['message'] = $e->getMessage(); continue; } } if( $cont > 0 ){ $this->_helper->flashMessenger(array( 'success' => 'Previa de Recebimento setada com sucesso.' )); } if( $contExceptions > 0 ){ $this->_helper->flashMessenger(array( 'alert' => $msg['message'] )); } } } $this->_helper->redirector('index'); } public function alterarEstornadoAction() { $this->_helper->viewRenderer->setNoRender(); $this->_helper->getHelper('layout')->disableLayout(); $request = $this->getRequest(); if( $request->isPost() ){ $contratos = $request->getPost('contratos'); if( count($contratos) > 0 ){ $cont = 0; foreach ( $contratos as $contratoId ) { $modelContrato = new Model_Contrato(); $result = $modelContrato->alterarEstornado($contratoId); if( $result > 0 ){ $cont++; } } if( $cont > 0 ){ $this->_helper->flashMessenger(array( 'success' => 'Estornado alterado com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Nenhum estornado foi alterado.' )); } } } $this->_helper->redirector('index'); } public function excluirSelecionadosAction() { $this->_helper->viewRenderer->setNoRender(); $this->_helper->getHelper('layout')->disableLayout(); $request = $this->getRequest(); if( $request->isPost() ){ $contratos = $request->getPost('contratos'); if( count($contratos) <= 0 ){ $this->_helper->flashMessenger(array( 'alert' => 'Nenhum contrato selecionado' )); $this->_helper->redirector('index'); } $contrato = new Model_Contrato(); $resultado = $contrato->excluirSelecionados($contratos); if( $resultado > 0 ){ $this->_helper->flashMessenger(array( 'success' => 'Contrato(s) excluido(s) com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Não foi possível excluir o(s) contrato(s).' )); } } $this->_helper->redirector('index'); } public function importarTedDevolvidaAction() { $request = $this->getRequest(); $form = new Form_ImportarTedDevolvida(); if( $request->isPost() && $form->isValid($request->getPost()) ){ $upload = new Zend_File_Transfer_Adapter_Http(); $upload->setDestination(UPLOAD_PATH); try { $upload->receive(); } catch ( Zend_File_Transfer_Exception $e ) { $this->_helper->flashMessenger(array( 'error' => $e->getMessage() )); } $extension = strtolower(pathinfo($upload->getFileName(), PATHINFO_EXTENSION)); if( in_array($extension, array( 'csv', 'txt' )) ){ $objReader = PHPExcel_IOFactory::createReader('CSV'); $objReader->setDelimiter($extension == 'csv' ? ';' : '#'); //se for extrator BMG deve setar o encoding if( $form->getValue('banco_id') == 6 ){ $objReader->setInputEncoding('ISO-8859-1'); } } else { $objReader = PHPExcel_IOFactory::createReaderForFile($upload->getFileName()); $fileinfo = $objReader->listWorksheetInfo($upload->getFileName()); if( is_array($fileinfo) && ($arrayFilter = array_filter($fileinfo) != null) ){ $firstSheetName = $fileinfo[0]['worksheetName']; $objReader->setLoadSheetsOnly($firstSheetName); } } try { $objPHPExcel = $objReader->load($upload->getFileName()); } catch ( Exception $e ) { if( $e->getMessage() == "Cannot read encrypted file" ){ $this->_helper->flashMessenger(array( 'alert' => 'O arquivo não pode ser lido. Verifique se ele ' . 'está protegido por senha e tente novamente.' )); } } if( isset($objPHPExcel) && is_object($objPHPExcel) ){ $sheetData = $objPHPExcel->getActiveSheet() ->toArray(null, true, true, true); $objPHPExcel->disconnectWorksheets(); unset($objPHPExcel); unset($objReader); unlink($upload->getFileName()); $contrato = new Model_Contrato(); try { $retorno = $contrato->importarTedDevolvida( $form->getValue('banco_id'), $sheetData); if( $retorno->importadas > 0 ){ $this->_helper->flashMessenger(array( 'success' => "O arquivo foi enviado com sucesso!" . " {$retorno->importadas} itens importados!" )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Nenhum contrato importado' )); } $this->view->nao_importados = $retorno->naoImportadas; } catch ( Core_Exception $e ) { $this->_helper->flashMessenger( array( 'error' => $e->getMessage() ) ); } } } $this->view->form = $form; } public function importarOpSacadaAction() { $request = $this->getRequest(); $form = new Form_ImportarOpSacada(); if( $request->isPost() && $form->isValid($request->getPost()) ){ $upload = new Zend_File_Transfer_Adapter_Http(); $upload->setDestination(UPLOAD_PATH); try { $upload->receive(); } catch ( Zend_File_Transfer_Exception $e ) { $this->_helper->flashMessenger(array( 'error' => $e->getMessage() )); } $extension = strtolower(pathinfo($upload->getFileName(), PATHINFO_EXTENSION)); if( in_array($extension, array( 'csv', 'txt' )) ){ $objReader = PHPExcel_IOFactory::createReader('CSV'); $objReader->setDelimiter($extension == 'csv' ? ';' : '#'); //se for extrator BMG deve informar o encoding if( $form->getValue('banco_id') == 6 ){ $objReader->setInputEncoding('ISO-8859-1'); } } else { $objReader = PHPExcel_IOFactory::createReaderForFile($upload->getFileName()); $fileinfo = $objReader->listWorksheetInfo($upload->getFileName()); if( is_array($fileinfo) && ($arrayFilter = array_filter($fileinfo) != null) ){ $firstSheetName = $fileinfo[0]['worksheetName']; $objReader->setLoadSheetsOnly($firstSheetName); } } try { $objPHPExcel = $objReader->load($upload->getFileName()); } catch ( Exception $e ) { if( $e->getMessage() == "Cannot read encrypted file" ){ $this->_helper->flashMessenger(array( 'alert' => 'O arquivo não pode ser lido. Verifique se ele está protegido por senha e tente novamente.' )); } } if( isset($objPHPExcel) && is_object($objPHPExcel) ){ $sheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true); $objPHPExcel->disconnectWorksheets(); unset($objPHPExcel, $objReader); unlink($upload->getFileName()); $contrato = new Model_Contrato(); try { $importacao = $contrato->importarOpSacada($form->getValue('banco_id'), $sheetData); if( $importacao['success'] > 0 ){ $this->_helper->flashMessenger(array( 'success' => "O arquivo foi enviado com sucesso. {$importacao['success']} itens importados." )); } else { $this->_helper->flashMessenger(array('alert' => 'Nenhum contrato importado')); } $this->view->naoImportadas = $importacao['error']; } catch ( Core_Exception $e ) { $this->_helper->flashMessenger(array( 'error' => $e->getMessage() )); } } } $this->view->form = $form; } public function excluirProtocoloEnvioAction() { $request = $this->getRequest(); $form = new Form_Filtro_ExcluirProtocoloEnvio(); $fields = array(); $adapter = null; if( $request->isPost() && $form->isValid($request->getPost()) ){ $fields = $request->getPost(); $form->populate($fields); $dbtable = new Model_DbTable_Contrato(); $adapter = $dbtable->fetchAllDependents($fields, 'corretor ASC'); $this->view->protocolo_id = $fields['protocolo_envio_fisico']; } $this->view->contratos = $adapter; $this->view->form = $form; } public function executarExclusaoProtocoloEnvioAction() { $request = $this->getRequest(); $protocoloId = (int) $request->getParam('protocolo_envio_fisico'); if( $protocoloId > 0 ){ $contrato = new Model_Contrato(); $result = $contrato->excluirProtocoloEnvio($protocoloId); if( $result > 0 ){ $this->_helper->flashMessenger(array( 'success' => 'Protocolo Removido com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'O protocolo não foi removido.' )); } } else { $this->_helper->flashMessenger(array( 'error' => 'O protocolo não foi informado.' )); } $this->_helper->redirector('excluir-protocolo-envio'); } public function liberarProtocoloPagamentoAction() { $protocolos = $this->getRequest()->getParam('protocolos'); $descontarTaxaTransf = $this->getRequest()->getParam('descontar_taxa_transf'); if( !empty($descontarTaxaTransf) ){ $this->_forward('descontar-taxa-transf-protocolo', 'financeiro', null, $this->getRequest()->getParams()); } else { if( count($protocolos) <= 0 ){ $this->_helper->flashMessenger(array( 'alert' => 'Protocolos não identificados.' )); $this->_helper->redirector('view-protocolos'); } else { try { $protocolo = new Model_ProtocoloPagamento(); $result = $protocolo->liberarProtocoloPagamento($protocolos); if( $result ){ $nsProtocolos = new Zend_Session_Namespace('protocolos'); $nsProtocolos->unsetAll(); $this->_helper->flashMessenger(array( 'success' => "Protocolos liberados com sucesso." )); $this->_helper->redirector('view-protocolos'); } else { $this->_helper->flashMessenger(array( 'alert' => "Nenhum protocolo foi liberado." )); $this->_helper->redirector('view-protocolos'); } } catch ( Exception $e ) { $this->_helper->flashMessenger(array( 'erro' => $e->getMessage() )); $this->_helper->redirector('view-protocolos'); } } } } public function liberarProtocoloPagamentosAction() { $protocolos = $this->getRequest()->getParam('protocolos'); $conta_id = $this->getRequest()->getParam('conta_id'); $data_pagamento = $this->getRequest()->getParam('data_pagamento'); $descontarTaxaTransf = $this->getRequest()->getParam('descontar_taxa_transf'); $fields = array(); if( isset($conta_id) && !empty($conta_id) ){ $fields['conta_id'] = $conta_id; } if( isset($data_pagamento) && !empty($data_pagamento) ){ $data = new Zend_Date($data_pagamento, Zend_Date::DATES, 'pt'); $fields['data_pagamento'] = $data->toString('yyyy-MM-dd'); } if( !empty($descontarTaxaTransf) ){ $this->_forward('descontar-taxa-transf-protocolo', 'financeiro', null, $this->getRequest()->getParams()); } else { if( count($protocolos) <= 0 ){ $this->_helper->flashMessenger(array( 'alert' => 'Protocolos não identificados.' )); $this->_helper->redirector('protocolos-liberar'); } else { try { $protocolo = new Model_ProtocoloPagamento(); $result = $protocolo->liberarProtocoloPagamento($protocolos, $fields); if( $result ){ $nsProtocolos = new Zend_Session_Namespace('protocolos'); $nsProtocolos->unsetAll(); $this->_helper->flashMessenger(array( 'success' => "Protocolos liberados com sucesso." )); $this->_helper->redirector('protocolos-liberar'); } else { $this->_helper->flashMessenger(array( 'alert' => "Nenhum protocolo foi liberado." )); $this->_helper->redirector('protocolos-liberar'); } } catch ( Exception $e ) { $this->_helper->flashMessenger(array( 'erro' => $e->getMessage() )); $this->_helper->redirector('protocolos-liberar'); } } } $ns = new Zend_Session_Namespace(); $this->view->acl = $ns->acl; } public function contratosVerificarAction() { $request = $this->getRequest(); $ns = new Zend_Session_Namespace('filtro_verificarcontratos'); $corretorDigitadorId = Yuppie_Auth::getIdentity()->corretor_id; $form = new Form_Filtro_ContratosVerificar(); /* * Remove o campo do corretor quando o usuário logado possui vínculo com algum corretor */ if( $corretorDigitadorId > 0 ){ $form->removeElement('corretor_digitador'); $modelCorretor = new Model_Corretor(); $corretor = $modelCorretor->exibir($corretorDigitadorId); $this->view->corretor = $corretor; } if( !is_null($request->getPost('btn_filtrar')) && $request->isPost() && $form->isValid($request->getPost()) ){ $values = $request->getPost(); if( $corretorDigitadorId > 0 ){ $values += array( 'corretor_digitador' => $corretorDigitadorId ); } $ns->filtro_verificarcontratos = $values; } $page = $this->_getParam('page', 1); if( isset($ns->filtro_verificarcontratos) ){ $form->populate($ns->filtro_verificarcontratos); if ($request->getPost('captador')) { $dbtable = new Model_DbTable_Contrato(); $captador = $request->getPost('captador'); if (count($captador) > 0) { foreach ($captador as $contratoId => $id) { if (!empty($id)) { $dbtable->updateContratosVerificados([ 'id' => $contratoId, 'captador_id' => $id, ], "id = {$contratoId}"); } else { unset($captador[$contratoId]); } } } } if( $request->getPost('corretor') ){ $dbtable = new Model_DbTable_Contrato(); $corretor = $request->getPost('corretor'); if( count($corretor) > 0 ){ foreach ( $corretor as $contrato_id => $id ) { if( !empty($id) ){ $dbtable->updateContratosVerificados([ 'id' => $contrato_id, 'corretor_id' => $id, 'verificar_contratos' => 1 ], "id = {$contrato_id}"); } else { unset($corretor[$contrato_id]); } } } if( count($corretor) > 0 ){ $this->_helper->flashMessenger(array( 'success' => count($corretor) . " contrato(s) verificado(s) com sucesso." )); $this->_redirect("/contrato/contratos-verificar/page/$page"); } } try { $contrato = new Model_Contrato(); $this->view->digitados = $contrato->getContratosVerificar($ns->filtro_verificarcontratos, $page, 20); } catch ( Exception $e ) { $this->_helper->flashMessenger(array( 'error' => $e->getMessage() )); } } $this->view->form = $form; } public function contratosRecuperarAction() { $request = $this->getRequest(); $contratos = $request->getPost('contratos'); $solucoes = $request->getPost('solucoes'); $contrato = new Model_Contrato(); if( $contratos ){ $contratos = $contrato->getContratosRecuperar(array("ids" => $contratos), true); $this->view->contratos = $contratos; } else if($solucoes){ $dbtable = new Model_DbTable_ContratoPendencia(); $countEsteira = $countEmail = 0; $emails = $failEsteira = $failEmail = array(); foreach ( $solucoes as $corretor => $contratos ) { foreach ($contratos as $contratoId => $solucao) { $dados = array( "contrato_id" => $contratoId, "descricao" => $solucao['solucao'], "tipo" => 1, "usuario_cadastro" => Yuppie_Auth::getIdentity()->id ); $insert = trim($solucao['solucao']) ? $dbtable->insert($dados) : false; if ($insert) { $countEsteira++; if ($request->getPost("email")) $emails[$corretor][] = $insert; } else { $failEsteira[] = $contratoId; } } } if( count($emails) ){ try { $email = new Core_Mail(); foreach ( $emails as $corretor => $pendencias ) { $modelCorretor = new Model_Corretor(); $corretor = $modelCorretor->exibir($corretor); $this->view->contratos = $contrato->getContratosRecuperar(array("contrato_pendencia_id" => $pendencias)); $result = $email->enviarMensagemHtml( $corretor['nome'], $corretor['email'], 'Notificação de recuperação de contratos', $this->view->render('contrato/notificacao-contratos-recuperar.phtml') ); if( $result['status'] ){ $countEmail++; } else { $failEmail = array_merge($failEmail, $contratos); } } } catch ( Exception $exc ) { $this->_helper->flashMessenger(array('error' => $exc->getMessage())); } } if( $countEsteira ){ if($countEsteira == 1) { $this->_helper->flashMessenger(array('alert' => "1 contrato enviado para a esteira de contratos a recuperar.")); } else { $this->_helper->flashMessenger(array('alert' => "$countEsteira contratos enviados para a esteira de contratos a recuperar.")); } } if( $countEmail ){ if($countEmail == 1) { $this->_helper->flashMessenger(array('alert' => "1 corretor notificado.")); } else { $this->_helper->flashMessenger(array('alert' => "$countEmail corretores notificados.")); } } if( count($failEsteira) > 0 ) { if (count($failEsteira) == 1) { $this->_helper->flashMessenger(array('alert' => "1 contrato não enviado para a esteira de contratos a recuperar.")); } else { $this->_helper->flashMessenger(array('alert' => count($failEsteira) . " contratos não enviados para a esteira de contratos a recuperar.")); } } if( count($failEmail) > 0 ) { if (count($failEmail) == 1) { $this->_helper->flashMessenger(array('alert' => "1 corretor não notificado.")); } else { $this->_helper->flashMessenger(array('alert' => count($failEmail) . " corretores não notificados.")); } } if( count($failEsteira) > 0 || count($failEmail) > 0 ){ try { $contratos = $contrato->getContratosRecuperar(array("ids" => array_merge($failEsteira, $failEmail))); $this->view->contratos = $contratos; } catch ( Exception $e ) { $this->_helper->flashMessenger(array( 'error' => $e->getMessage() )); } } else { $this->_redirect("/contrato/index"); } } } public function responderContratosRecuperarAction() { $request = $this->getRequest(); $id = $request->getParam("id"); $resposta = $request->getParam("resposta"); $modelContratoPendencia = new Model_ContratoPendencia(); $dadosContratoPendencia = $modelContratoPendencia->exibir($id); if($dadosContratoPendencia){ $dadosContratoPendencia->resposta = $resposta; $contratoPendencia = new Model_ContratoPendencia($dadosContratoPendencia->toArray()); if ($modelContratoPendencia->salvar($contratoPendencia)) { $this->_helper->flashMessenger(array('success' => 'Resposta salva com sucesso.')); } else { $this->_helper->flashMessenger(array('alert' => 'Nenhum registro alterado.')); } } else { $this->_helper->flashMessenger(array('alert' => "Pendência não encontrada.")); } $this->_helper->redirector('contratos-recuperar', 'relatorio'); } public function resolverContratosRecuperarAction() { $request = $this->getRequest(); $id = $request->getParam("id"); $modelContratoPendencia = new Model_ContratoPendencia(); $dadosContratoPendencia = $modelContratoPendencia->exibir($id); if($dadosContratoPendencia){ $dadosContratoPendencia->data_hora_resolvido = Zend_Date::now()->get('yyyy-MM-dd HH:mm:ss'); $dadosContratoPendencia->usuario_resolvido = Yuppie_Auth::getIdentity()->id; $contratoPendencia = new Model_ContratoPendencia($dadosContratoPendencia->toArray()); if ($modelContratoPendencia->salvar($contratoPendencia)) { $this->_helper->flashMessenger(array('success' => 'Pendência marcada como resolvida.')); } else { $this->_helper->flashMessenger(array('alert' => 'Nenhum registro alterado.')); } } else { $this->_helper->flashMessenger(array('alert' => "Pendência não encontrada.")); } $this->_helper->redirector('contratos-recuperar', 'relatorio'); } public function excluirContratosRecuperarAction() { $request = $this->getRequest(); $id = $request->getParam("id"); $modelContratoPendencia = new Model_ContratoPendencia(); $contratoPendencia = $modelContratoPendencia->exibir($id); if($contratoPendencia){ if ($modelContratoPendencia->excluir($contratoPendencia->id)) { $this->_helper->flashMessenger(array('success' => 'Registro excluído com sucesso.')); } else { $this->_helper->flashMessenger(array('alert' => 'Nenhum registro alterado.')); } } else { $this->_helper->flashMessenger(array('alert' => "Pendência não encontrada.")); } $this->_helper->redirector('contratos-recuperar', 'relatorio'); } public function importarAcoesJudiciaisAction() { $request = $this->getRequest(); $form = new Form_ImportarAcoesJudiciais(); $acoesNaoImportadas = array(); if( $request->isPost() && $form->isValid($request->getPost()) ){ $upload = new Zend_File_Transfer_Adapter_Http(); $upload->setDestination(UPLOAD_PATH); try { $upload->receive(); } catch ( Zend_File_Transfer_Exception $e ) { $this->_helper->flashMessenger(array( 'error' => $e->getMessage() )); } $extension = pathinfo($upload->getFileName(), PATHINFO_EXTENSION); if( in_array($extension, array( 'csv', 'txt' )) ){ $objReader = PHPExcel_IOFactory::createReader('CSV'); $objReader->setDelimiter($extension == 'csv' ? ';' : '#'); } else { $objReader = PHPExcel_IOFactory::createReaderForFile($upload->getFileName()); $fileinfo = $objReader->listWorksheetInfo($upload->getFileName()); if( is_array($fileinfo) && ($arrayFilter = array_filter($fileinfo) != null) ){ $firstSheetName = $fileinfo[0]['worksheetName']; $objReader->setLoadSheetsOnly($firstSheetName); } } try { $objPHPExcel = $objReader->load($upload->getFileName()); } catch ( Exception $e ) { if( $e->getMessage() == 'Cannot read encrypted file' ){ $this->_helper->flashMessenger(array( 'alert' => 'O arquivo não pode ser lido. Verifique se ele ' . 'está protegido por senha e tente novamente.' )); } } if( isset($objPHPExcel) && is_object($objPHPExcel) ){ $sheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true); $objPHPExcel->disconnectWorksheets(); unset($objPHPExcel); unlink($upload->getFileName()); unset($sheetData[1]); $contrato = new Model_Contrato(); $qtdCadastrada = 0; $qtdNaoCadastrada = 0; foreach ( $sheetData as $acao ) { try { if( $contrato->cadastrarAcaoJudicial(array( 'numero_contrato' => $acao['A'], 'nome' => $acao['B'], 'cpf' => $acao['C'], 'codigo' => $acao['D'], 'responsabilidade' => $acao['E'], 'processo' => $acao['F'], 'data_audiencia' => isset($acao['G']) && !empty($acao['G']) ? new Zend_Date($acao['G'], $request->getPost('formato_data')) : null, 'motivo' => $acao['H'], 'procedimento' => $acao['I'], 'resposta_parceiro' => $acao['J'], 'resposta_banco' => $acao['K'], 'nome_advogado' => $acao['L'], 'data_recebimento' => isset($acao['N']) && !empty($acao['N']) ? new Zend_Date($acao['N'], $request->getPost('formato_data')) : null )) ){ $qtdCadastrada++; } else { $qtdNaoCadastrada++; } } catch ( Core_Exception $e ) { $qtdNaoCadastrada++; $acoesNaoImportadas[] = array( 'contrato' => $acao['A'], 'justificativa' => $e->getMessage() ); continue; } catch ( Exception $e ) { $this->_helper->flashMessenger(array( 'error' => $e->getMessage() )); } } if( $qtdCadastrada > 0 ){ $msg = $qtdCadastrada == 1 ? 'Uma ação judicial cadastrada.' : $qtdCadastrada . ' ações judiciais cadastradas.'; $this->_helper->flashMessenger(array( 'success' => $msg )); } if( $qtdNaoCadastrada > 0 ){ $msg = $qtdNaoCadastrada == 1 ? 'Uma ação judicial não pôde ser cadastrada.' : $qtdNaoCadastrada . ' ações judiciais não puderam ser cadastradas.'; $this->_helper->flashMessenger(array( 'error' => $msg )); } else { $this->_helper->flashMessenger(array( 'error' => 'Nenhuma ação judicial foi cadastrada.' )); } } } $this->view->acoesNaoImportadas = $acoesNaoImportadas; $this->view->form = $form; } public function visualizarExtratoCorretorAction() { $this->_helper->layout->setLayout("layout_popup"); $corretorId = $this->getRequest()->getParam('id'); $fields = array(); $lancamentos = array(); if( count($corretorId) > 0 ){ $lancamento = new Model_Lancamento(); $fields['corretor_id'] = $corretorId; $lancamentos = $lancamento->getLancamentosPeriodo($fields); } $this->view->lancamentos = $lancamentos; } public function excluirRecebimentoContratoAction() { $request = $this->getRequest(); $recebimentosContratosId = $request->getParam('recebimentos'); $redirect = $request->getParam('redirect'); $result = []; if( count($recebimentosContratosId) > 0 ){ $recebimentoContrato = new Model_RecebimentoContrato(); $modelContrato = new Model_DbTable_Contrato(); foreach ( $recebimentosContratosId as $contratoId => $recebimento ) { $modelContrato->updateDataRecebimento(NULL, $contratoId); foreach ($recebimento as $recebimentoID){ $result[$recebimentoID] = $recebimentoContrato->excluir($recebimentoID); } } if( count($result) > 0 ){ $this->_helper->flashMessenger(array( 'success' => count($result).' Registro(s) removido(s) com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Nenhum registro foi removido.' )); } } else { $this->_helper->flashMessenger(array( 'alert' => 'Nenhum registro foi removido.' )); } if( $redirect ){ $this->_helper->redirector($redirect, 'relatorio'); } else { $this->_helper->redirector('corrigir-contratos-comissao', 'relatorio'); } } /** * Permitir alterar campos de comissão, bonus e valor fixo na tela de protocolo de pagamento */ public function atualizaComissaoAction() { $request = $this->getRequest(); if( $request->isPost() ){ $id = $request->getPost('id'); $name = $request->getPost('name'); $value = $request->getPost('value'); if($id && in_array($name, array('comissao_corretor', 'bonus_corretor', 'valor_fixo_corretor', "comissao_empresa", "bonus_empresa"))) { $dbtable = new Model_DbTable_Contrato(); $result = $dbtable->updateComissao(array( $name => str_replace(array('.', ','), array('', '.'), $value), 'verificar_contratos' => 1 ), "id = $id"); if ($result) { $contrato = $dbtable->fetchPairs("base_comissao_valor", "id = $id", null, "id"); if($contrato[$id] == 0){ $this->_helper->json(array("alert" => "Percentual alterado com sucesso. Valor da comissão não pôde ser calculado pois a base de comissão está zerada." )); } $this->_helper->json(array("result" => 1)); } } } $this->_helper->json(array( "alert" => "Nenhuma informação foi alterada" )); } /** * Alterar protocolo de pagamento */ public function atualizaProtocoloAction() { $request = $this->getRequest(); if( $request->isPost() ){ $id = $request->getPost('id'); $name = $request->getPost('name'); $value = $request->getPost('value'); $comissao = $request->getPost('comissao'); $percentual = $request->getPost('percentual'); $valorFixo = $request->getPost('valor_fixo_corretor'); $bonus = $request->getPost('bonus_corretor'); $baseComissao = $request->getPost('base_comissao'); $baseBonus = $request->getPost('base_comissao_bonus'); $protocoloId = $request->getPost('protocolo_id'); if($id && in_array($name, array('comissao_corretor', 'bonus_corretor', 'valor_fixo_corretor'))) { $dbtable = new Model_DbTable_Contrato(); $result = $dbtable->updateComissao(array( $name => str_replace(array('.', ','), array('', '.'), $value) ), "id = $id"); $dbProtocoloContrato = new Model_DbTable_ProtocoloContrato(); $dadosContratoProtocolo = $dbProtocoloContrato->fetchRow([ 'protocolo_id = ?' => $protocoloId, 'contrato_id = ?' => $id ]); $dbProtocoloContrato->update([ 'valor' => $dadosContratoProtocolo->valor >= 0 ? $comissao : ($comissao*-1), 'percentual' => $percentual, 'valor_fixo_corretor' => $valorFixo, 'percentual_bonus' => $bonus, 'base_comissao' => $baseComissao, 'base_bonus' => $baseBonus ], ['protocolo_id = ?' => $protocoloId, 'contrato_id = ?' => $id]); if ($result) { $contrato = $dbtable->fetchPairs("base_comissao_valor", "id = $id", null, "id"); if($contrato[$id] == 0){ $this->_helper->json(array("alert" => "Percentual alterado com sucesso. Valor da comissão não pôde ser calculado pois a base de comissão está zerada." )); } $this->_helper->json(array("result" => 1)); } } } $this->_helper->json(array( "alert" => "Nenhuma informação foi alterada" )); } public function excluirContratoProtocoloAction() { $this->_helper->viewRenderer->setNoRender(); $this->getHelper('Layout')->disableLayout(); $request = $this->getRequest(); $contratoId = $request->getParam('id'); $protocoloId = $request->getParam('protocolo_id'); try{ $dbtableContrato = new Model_ProtocoloContrato(); $result = $dbtableContrato->excluirContratoProtocolo($protocoloId, $contratoId); }catch (Core_Exception $exc){ $this->_helper->flashMessenger(array('error' => $exc->getMessage())); } if($result > 0){ $this->_helper->flashMessenger(array( 'success' => 'Contrato(s) removido(s) do protocolo com sucesso.' )); }else{ $this->_helper->flashMessenger(array( 'alert' => 'Nenhum contrato foi removido do protocolo.' )); } $this->_redirect("contrato/edit-protocolo-a-quitar/id/{$protocoloId}"); } /** * Atualizar o status da portabilidade na tela de acompanhamento */ public function atualizaStatusPropostaAction() { $request = $this->getRequest(); if( $request->isPost() ){ $statusId = $request->getPost('status_id'); $contratoId = $request->getPost('contrato_id'); $dbtable = new Model_DbTable_Contrato(); $result = $dbtable->updateStatus(['status_proposta' => $statusId], "id = {$contratoId}"); if ($result) { $this->_helper->json(["status" => 1]); } } $this->_helper->json(["alert" => "Nenhuma informação foi alterada"]); } public function importarEnvioFisicoAction() { $request = $this->getRequest(); $this->_helper->flashMessenger(array('info' => "Arquivos de importação com a extensão .csv devem utilizar o delimitador ';'")); switch ( $request->getParam('p') ) {//p - parameter case "newspace": $form = new Form_ImportarEnvioFisico(); $this->view->title_banco = "Newspace"; break; case "pan": $form = new Form_ImportarEnvioFisicoPan(); $this->view->title_banco = "PAN"; break; case "bmg": $form = new Form_ImportarEnvioFisicoBmg(); $this->view->title_banco = "BMG"; break; case "itau": $form = new Form_ImportarEnvioFisicoItau(); $this->_helper->flashMessenger(array( 'info' => "Atenção! A importação de envio de físico do Itaú é realizada através dos códigos de barras de ADE encontrados na coluna 'A' do arquivo original do banco." . "<br>Os códigos de barras ADE são inseridos no sistema através do arquivo de extrator ou manualmente na edição do contrato." )); $this->view->title_banco = "Itaú"; break; case "daycoval": $form = new Form_ImportarEnvioFisicoDaycoval(); $this->view->title_banco = "Daycoval"; break; case "bonsucesso": $form = new Form_ImportarEnvioFisicoBonsucesso(); $this->view->title_banco = "BONSUCESSO"; break; case "mercantil": $form = new Form_ImportarEnvioFisicoMercantil(); $this->view->title_banco = "Mercantil"; break; default: $this->view->title_banco = "Newspace"; $form = new Form_ImportarEnvioFisico(); break; } $envioFisicos = array(); if( $request->isPost() ){ if( !$form->isValid($request->getPost()) ){ $this->_helper->json(["validations" => $form->getMessages()]); } $upload = new Zend_File_Transfer_Adapter_Http(); $upload->setDestination(UPLOAD_PATH); try { $upload->receive(); } catch ( Zend_File_Transfer_Exception $e ) { $this->_helper->json(['alert' => $e->getMessage()]); } if( !$upload->isReceived() ){ $this->_helper->json(['alert' => "Arquivo não subiu para o servidor."]); } $modelBanco = new Model_Banco(); $banco = $modelBanco->exibir($request->getPost('banco_id')); $extension = strtolower(pathinfo($upload->getFileName(), PATHINFO_EXTENSION)); if( in_array($extension, array( 'csv', 'txt' )) ){ $objReader = PHPExcel_IOFactory::createReader('CSV'); if( $banco->nome == "BMG" || strstr($banco->nome, "ITA") ){ $objReader->setDelimiter(';'); }else { $objReader->setDelimiter(';'); } $objReader->setInputEncoding('ISO-8859-1'); } else { $objReader = PHPExcel_IOFactory::createReaderForFile($upload->getFileName()); $fileinfo = $objReader->listWorksheetInfo($upload->getFileName()); switch ( $banco->nome ) { case 'ITAÚ': case 'ITAU': case 'PAN': $fileinfo = $fileinfo[0]; break; case 'BONSUCESSO': $fileinfo = $fileinfo[0]; break; default : $fileinfo = $fileinfo[1]; break; } if( is_array($fileinfo) && ($arrayFilter = array_filter($fileinfo) != null) ){ $firstSheetName = $fileinfo['worksheetName']; $objReader->setLoadSheetsOnly($firstSheetName); } } try { $objPHPExcel = $objReader->load($upload->getFileName()); } catch ( Exception $e ) { if( $e->getMessage() == "Cannot read encrypted file" ){ $this->_helper->json(array( 'alert' => 'O arquivo não pode ser lido. Verifique se ele ' . 'está protegido por senha e tente novamente.' )); } } if( isset($objPHPExcel) && is_object($objPHPExcel) ){ $sheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true); $objPHPExcel->disconnectWorksheets(); unset($objPHPExcel); unset($objReader); unlink($upload->getFileName()); $ns = new Zend_Session_Namespace('importacao_envio_fisico'); $ns->unsetAll(); $ns->importacao_envio_fisico = $sheetData; } $this->view->fisicos = $sheetData; if( $request->isXmlHttpRequest() ){ $this->_helper->json(array( 'params' => $this->getRequest()->getPost(), 'url' => '/contrato/analisar-envio-fisicos', 'total_count' => count($sheetData), )); } } $this->view->fisicos = $envioFisicos; $this->view->form = $form; } public function analisarEnvioFisicosAction() { $dados = array( 'readCompleted' => null, 'result' => null, ); $request = $this->getRequest(); $ns = new Zend_Session_Namespace('importacao_envio_fisico'); $params = $request->getParam('params'); $linhas = $ns->importacao_envio_fisico; $ns->importacao_envio_fisico = array_slice($linhas, 100, null, true); $sheetData = array_diff_key($linhas, $ns->importacao_envio_fisico); $banco = Model_Banco::bancoPorId($params['banco_id']); $banco = String_Refatorar::removerAcentuacao($banco); switch ( $banco ) { case "ITAU": $bancoEnvioFisicos = new Core_Banco_Planilha_Bmg_EnvioFisicoItau($params['banco_id']); break; case "PAN": $bancoEnvioFisicos = new Core_Banco_Planilha_Pan_EnvioFisico($params['banco_id']); break; case "BMG": $bancoEnvioFisicos = new Core_Banco_Planilha_Bmg_EnvioFisico($params['banco_id']); break; case "BRADESCO PROMOTORA": $bancoEnvioFisicos = new Core_Banco_Planilha_Bradesco_EnvioFisico($params['banco_id']); break; case "DAYCOVAL": $bancoEnvioFisicos = new Core_Banco_Planilha_Daycoval_EnvioFisico($params['banco_id']); break; case "BONSUCESSO": $bancoEnvioFisicos = new Core_Banco_Planilha_Bonsucesso_EnvioFisico($params['banco_id']); break; case "MERCANTIL": $bancoEnvioFisicos = new Core_Banco_Planilha_Mercantil_EnvioFisico($params['banco_id']); break; default: $bancoEnvioFisicos = new Core_Banco_Planilha_EnvioFisicoGenerico($params['banco_id']); break; } try { $results = $bancoEnvioFisicos->importar($sheetData, $params); } catch ( Exception $e ) { $results = null; if( $e->getCode() == '01' ){ $this->_helper->json(array( 'error' => $e->getMessage() )); } } $dados = array( 'readCompleted' => count($ns->importacao_envio_fisico) > 0 ? false : true, 'result' => $results, ); $error = new Zend_Session_Namespace('error_envio_fisico'); if( !is_array($error->error_envio_fisico) ){ $error->error_envio_fisico = $results; } else { $tmp = array_merge($error->error_envio_fisico, array_values($results)); $error->error_envio_fisico = $tmp; } if( count($ns->importacao_envio_fisico) <= 0 ){ $this->view->pendentes = $error->error_envio_fisico; $error->unsetAll(); $this->_helper->json(array( 'content' => $this->view->render('contrato/analisar-envio-fisicos.phtml') )); } $this->_helper->json($dados); } public function regularizarPendenciasAction() { $request = $this->getRequest(); $form = new Form_Filtro_RegularizarPendencia(); $ns = new Zend_Session_Namespace('contratos_regularizar'); $fields = array_filter($request->getPost()); if( $request->isPost() && !isset($fields['btn_aceitando']) && !isset($fields['btn_negando']) ){ $ns->unsetAll(); $fields = array( "contrato_id" => $request->getParam('id') ) + $request->getPost(); $ns->contratos_regularizar = $fields; } if( $ns->contratos_regularizar ){ $form->populate($ns->contratos_regularizar); $dbDocumento = new Model_DbTable_PendenciaRegularizar(); $this->view->documentos = $dbDocumento->fetchAllDependents($ns->contratos_regularizar); } if( $request->isPost() ){ if( isset($fields['validar']) && $fields['validar'] == 1 ){ $cont = 0; $contrato = new Model_Contrato(); foreach ( $fields['contratos'] as $c ) { $result = $contrato->validarRegularizacaoPendencia($c, 1); if( $result ){ try{ $contrato->notificarRegularizacaoPendencia($c); $cont++; } catch (Core_Exception $e){ $this->_helper->flashMessenger(array( 'error' => $e->getMessage() )); continue; } } } if( $cont > 0 ){ $this->_helper->flashMessenger(array( 'success' => 'Dados salvos com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Nenhuma informação foi alterada.' )); } $this->_redirect("contrato/regularizar-pendencias"); } elseif( isset($fields['validar']) && $fields['validar'] == 2 ){ $cont = 0; $contrato = new Model_Contrato(); foreach ( $fields['contratos'] as $c ) { $result = $contrato->validarRegularizacaoPendencia($c, 0, $fields['motivo']); if( $result ){ //envia notificação por e-mail para o corretor try{ $contrato->notificarRegularizacaoPendencia($c, 2); $cont++; } catch (Core_Exception $e){ $this->_helper->flashMessenger(array( 'error' => $e->getMessage() )); continue; } } } if( $cont > 0 ){ $this->_helper->flashMessenger(array( 'success' => 'Dados salvos com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Nenhuma informação foi alterada.' )); } $this->_redirect("contrato/regularizar-pendencias"); } } $this->view->form = $form; } public function regularizarConsistenciasAction() { $request = $this->getRequest(); $form = new Form_Filtro_RegularizarConsistencia(); $ns = new Zend_Session_Namespace('contratos_regularizar_consistencia'); $fields = array_filter($request->getPost()); if( $request->isPost() && !isset($fields['btn_aceitando']) && !isset($fields['btn_negando']) ){ $ns->unsetAll(); $fields = array( "contrato_id" => $request->getParam('id'), "tipo" => 2 ) + $request->getPost(); $ns->contratos_regularizar_consistencia = $fields; } if( $ns->contratos_regularizar_consistencia ){ $form->populate($ns->contratos_regularizar_consistencia); $dbDocumento = new Model_DbTable_PendenciaRegularizar(); $this->view->documentos = $dbDocumento->fetchAllDependentsConsistencia($ns->contratos_regularizar_consistencia); } if( $request->isPost() ){ $dbtableContratoPendencia = new Model_DbTable_ContratoPendencia(); if( isset($fields['validar']) && $fields['validar'] == 1 ){ $cont = 0; $contrato = new Model_Contrato(); foreach ( $fields['contratos'] as $key => $contratos ) { foreach ($contratos as $c) { try{ $result = $contrato->validarRegularizacaoPendencia($c, 1); }catch(Exception $e){ $this->_helper->flashMessenger(array( 'error' => $e->getMessage() )); } } if( $result ){ $dados = array('data_hora_resolvido' => Zend_Date::now()->get('yyyy-MM-dd HH:mm:ss'), 'usuario_resolvido' => Yuppie_Auth::getIdentity()->id, 'resposta' => 1); $dbtableContratoPendencia->update($dados, "id = " . $key); $cont++; } } if( $cont > 0 ){ $this->_helper->flashMessenger(array( 'success' => 'Dados salvos com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Nenhuma informação foi alterada.' )); } $this->_redirect("contrato/regularizar-consistencias"); } elseif( isset($fields['validar']) && $fields['validar'] == 2 ){ $cont = 0; $contrato = new Model_Contrato(); foreach ( $fields['contratos'] as $key => $contratos ) { foreach ($contratos as $c) { $result = $contrato->validarRegularizacaoPendencia($c, 0, $fields['motivo']); } if( $result ){ $dados = array('data_hora_resolvido' => Zend_Date::now()->get('yyyy-MM-dd HH:mm:ss'), 'usuario_resolvido' => Yuppie_Auth::getIdentity()->id, 'resposta' => 2); $dbtableContratoPendencia->update($dados, "id = " . $key); $cont++; } } if( $cont > 0 ){ $this->_helper->flashMessenger(array( 'success' => 'Dados salvos com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Nenhuma informação foi alterada.' )); } $this->_redirect("contrato/regularizar-consistencias"); } } $this->view->form = $form; } public function imprimirPreviaRecebimentoAction() { $this->_helper->layout->setLayout('layout_impressao'); $request = $this->getRequest(); $fields = array_filter($request->getParams()); unset($fields['module']); unset($fields['controller']); unset($fields['action']); unset($fields['method']); if(empty($fields['data_recebimento_previa_de']) && empty($fields['data_recebimento_previa_a'])){ $this->view->alert = "Atenção! Os filtros de data de prévia de físico (em filtros avançados) são obrigatórios para a impressão de prévia."; } else { $contrato = new Model_Contrato(); $contratos = $contrato->getContratos($fields, null, 100, array('data_emissao ASC', 'contratos.id ASC')); if (count($contratos) > 0) { $contratosImpressao = array(); $corretores = array(); foreach ($contratos as $dadosContrato) { if ($dadosContrato['data_recebimento_previa'] != '' && $dadosContrato['data_recebimento_previa'] != '0000-00-00') { $dataPrevia = new Zend_Date($dadosContrato['data_recebimento_previa']); $corretor = $dadosContrato['corretor_id']; $numero = $dadosContrato['corretor_id'] . $dataPrevia->getTimestamp(); $dadosContrato['cod_barras'] = Core_CodigoBarras::gerar($numero, $this->getRequest()->getBaseUrl() . "/assets"); $dadosContrato['num_cod_barras'] = Core_CodigoBarras::getNumCodebar(); $contratosImpressao[$dadosContrato['corretor_id']][] = $dadosContrato; if ($dadosContrato['usuario_grupo_previa'] > 0) { $grupoModel = new Model_GrupoUsuario(); $grupoUsuarioResp = $grupoModel->exibir($dadosContrato['usuario_grupo_previa']); switch ($grupoUsuarioResp['nome']) { case "Corretor": $model = new Model_Corretor(); break; case "Supervisor": $model = new Model_GerenteRota(); break; case "Gerente Regional": $model = new Model_Gerente(); break; default: $model = new Model_Usuario(); break; } $usuarioResp = $model->exibir($dadosContrato['usuario_previa']); $contratosImpressao['usuario_responsavel'] = $usuarioResp['nome']; $contratosImpressao['login_usuario_responsavel'] = $usuarioResp['login']; } if (!in_array($corretor, $corretores)) { $corretores[] = $corretor; } } } $this->view->contratos = $contratosImpressao; $this->view->corretores = $corretores; } else { $this->view->alert = "Nenhum contrato encontrado."; } } } public function excluirContratoProtocoloEnvioAction() { $request = $this->getRequest(); $contratos = $request->getParam('contratos'); $protocoloId = $request->getParam('protocolo_id'); $cont = 0; try{ $dbtableContrato = new Model_DbTable_Contrato(); $result = $dbtableContrato->excluirContratoProtocoloEnvio($contratos, $protocoloId); }catch (Core_Exception $exc){ $this->_helper->flashMessenger(array('error' => $exc->getMessage())); } if($result > 0){ $this->_helper->flashMessenger(array( 'success' => 'Contrato(s) removido(s) do protocolo com sucesso.' )); }else{ $this->_helper->flashMessenger(array( 'alert' => 'Nenhum contrato foi removido do protocolo.' )); } $this->_redirect("contrato/imprimir-protocolo-envio/protocolo_id/{$protocoloId}"); } public function excluirContratoProtocoloRecebimentoAction() { $request = $this->getRequest(); $contratos = $request->getParam('contratos'); $protocoloId = $request->getParam('protocolo_id'); $cont = 0; try{ $dbtableContrato = new Model_DbTable_Contrato(); $result = $dbtableContrato->excluirContratoProtocoloRecebimento($contratos, $protocoloId); }catch (Core_Exception $exc){ $this->_helper->flashMessenger(array('error' => $exc->getMessage())); } if($result > 0){ $this->_helper->flashMessenger(array( 'success' => 'Contrato(s) removido(s) do protocolo com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Nenhum contrato foi removido do protocolo.' )); } $this->_redirect("contrato/imprimir-protocolo-recebimento/protocolo_id/{$protocoloId}"); } public function preDispatch() { switch ( $this->getRequest()->getActionName() ) { case "importar-newspace": case "importar-envio-fisico-pan": case "importar-envio-fisico-bmg": case "importar-envio-fisico-itau": case "importar-envio-fisico-daycoval": $this->_forward("importar-envio-fisico"); break; } return parent::preDispatch(); } public function enviarProtocoloRecebimentoAction() { $this->_helper->viewRenderer->setNoRender(); $this->_helper->layout->setLayout('layout_popup'); $request = $this->getRequest(); $protocoloId = (int) $request->getParam('protocolo_id'); $result = array(); if( $protocoloId ){ $contrato = new Model_Contrato(); $fields['protocolo_recebimento_fisico'] = $protocoloId; $contratos = $contrato->listarProtocolosRecebimento($fields); if( count($contratos) > 0 ){ $agrupadoCorretor = null; foreach ( $contratos as $c ) { $agrupadoCorretor[$c['corretor_id']][] = $c; } $contratos = null; try { $email = new Core_Mail(); foreach ( $agrupadoCorretor as $corretorId => $contratos ) { $corretor = new Model_Corretor(); $dadosCorretor = $corretor->exibir($corretorId); $this->view->dados_corretor = $dadosCorretor; $this->view->contratos = $contratos; $result[] = $email->enviarMensagemHtml( $dadosCorretor['nome'], $dadosCorretor['email'], 'Relatório de baixa de físico - ' . $fields['protocolo_recebimento_fisico'], $this->view->render('contrato/enviar-protocolo-recebimento.phtml') ); } } catch ( Exception $exc ) { $this->_helper->flashMessenger(array( 'error' => $exc->getMessage())); } } else { $result[] = array( 'status' => 0, 'msg' => 'Nenhum contrato encontrado para este protocolo.' ); } } foreach ( $result as $r ) { $this->_helper->flashMessenger(array( $r['status'] ? 'success' : 'error' => $r['msg'] )); } } public function aplicarBonusCorretorAction() { $this->_helper->viewRenderer->setNoRender(); $params = $this->getRequest()->getParams(); $contrato = new Model_Contrato(); $contrato->aplicarBonificacao($params); $this->_helper->flashMessenger(array( 'success' => 'Operação com sucesso' ) ); $this->_redirect('/relatorio/faixa-producao-corretor'); } public function acompanharPortabilidadeAction() { $request = $this->getRequest(); $form = new Form_Filtro_AcompanhamentoPortabilidade(); $form->getElement("status_portabilidade")->setValue(array( 'nao-salva', 'nao-enviada', 'aprovada','recusada', )); $page = $request->getPost('page', 1); $fields = array_filter($request->getPost()); unset($fields['btn_filtrar']); unset($fields['page']); if( $request->isPost() && $request->isXmlHttpRequest() ) { try { if ($form->isValid($fields)) { $fields['tipo_contrato'] = array('PORTABILIDADE'); $fields['possui_corretor'] = 1; if(empty($fields['data_emissao_de'])){ $fields['data_emissao_de'] = "20/01/2018"; } $contrato = new Model_Contrato(); $contratos = $contrato->getContratosPortabilidade($fields, $page, 100, array( 'corretores.nome ASC', 'contratos.data_liberacao ASC', 'clientes.nome ASC' )); $this->view->contratos = $contratos; if ($contratos) { $this->_helper->json(array( 'alert' => '', 'page' => $page, 'pages' => $contratos->count(), 'body' => true, 'readCompleted' => $contratos->count() == $page, 'content' => $this->view->render('contrato/acompanhar-portabilidade-body.phtml'), )); } } else { $this->_helper->json(array('alert' => "Informe pelo menos uma opção de filtragem.", 'body' => true)); } } catch (Exception $exception) { $this->_helper->json(array('alert' => $exception->getMessage(), 'body' => true)); } } $this->view->form = $form; } public function salvarNotificarPortabilidadeAction() { $request = $this->getRequest(); if ($request->isPost()) { try { $salvar = $request->getPost('salvar'); $notificar = $request->getPost('notificar'); $resolver = $request->getPost('resolver'); $corretorId = (int) $salvar ? $salvar : ($notificar ? $notificar : $resolver ); $corretores = $request->getPost('salvar_notificar_resolver'); $simulacoes = $request->getPost('simulacoes'); if ($corretorId > 0) { if (empty($simulacoes[$corretorId]) || empty($corretores[$corretorId])) { throw new Exception("Nenhum contrato selecionado para este corretor."); } $simulacoes = array($corretorId => $simulacoes[$corretorId]); $corretores = array($corretorId => $corretores[$corretorId]); } $notificado = $salvo = $resolvido = 0; $simulacoesId = array(); foreach ($corretores as $corretorId => $contratos) { if (count($contratos) <= 0) continue; $agora = Zend_Date::now(); $dbtable = new Model_DbTable_ContratoPortabilidade(); foreach ($contratos as $contratoId) { $simulacao = $simulacoes[$corretorId][$contratoId]; if ($salvar) { if ($dbtable->salvarSimulacao($simulacao)) { $salvo++; } } if ($notificar && !empty($simulacao['id'])) { $simulacoesId[] = $simulacao['id']; } if ($resolver && !empty($simulacao['id'])) { if ($dbtable->resolverPortabilidade($agora, $simulacao)) { $resolvido++; } } } if ($notificar && count($simulacoesId) > 0) { $modelCorretor = new Model_Corretor(); $corretor = $modelCorretor->exibir($corretorId); if (!$corretor) { throw new Exception("Corretor não encontrado"); } $dbtableContrato = new Model_DbTable_Contrato(); $dadosSimulacoes = $dbtableContrato->fetchAllDependents(array( "corretor_id" => $corretorId, "ids" => $contratos, "portabilidade_id" => $simulacoesId, "data_hora_envio" => -1, "data_hora_corretor" => -1, )); if (count($dadosSimulacoes)) { $this->view->contratos = $dadosSimulacoes; $mail = new Core_Mail(); $result = $mail->enviarMensagemHtml( $corretor->nome, $corretor->email, 'Notificação pendência saldo da portabilidade', $this->view->render('contrato/notificacao-simulacao-portabilidade.phtml' )); if ($result['status']) { if ($dbtable->notificarSimulacao($agora, $simulacoesId)) { $notificado++; } } else { $this->_helper->flashMessenger(array("alert" => $result['msg'])); } } } } if ($resolver) { if ($resolvido > 0) { $this->_helper->flashMessenger(array("success" => "$resolvido portabilidade(s) resolvida(s) com sucesso.")); } else { $this->_helper->flashMessenger(array("alert" => "Nenhuma portabilidade foi resolvida.")); } } if ($salvar) { if ($salvo > 0) { $this->_helper->flashMessenger(array("success" => "$salvo simulações salva(s) com sucesso.")); } else { $this->_helper->flashMessenger(array("success" => "Nenhuma simulação salva.")); } } if ($notificar) { if ($notificado > 0) { $this->_helper->flashMessenger(array("success" => "$notificado corretor(es) notificado(s) com sucesso.")); } else { $this->_helper->flashMessenger(array("alert" => "Nenhum corretor foi notificado.")); } } } catch (Exception $e) { $this->_helper->flashMessenger(array("error" => $e->getMessage())); } } $this->_helper->redirector('acompanhar-portabilidade'); } public function importarCapasAction() { set_time_limit(0); // ini_set('memory_limit', '-1'); $request = $this->getRequest(); $form = new Form_ImportarCapas(); $resultado = 0; if( $request->isPost() && $form->isValid($request->getPost()) ){ $upload = new Zend_File_Transfer_Adapter_Http(); $diretorioDestino = UPLOAD_PATH . '/arquivos-importados/' . $form->getValue('banco_nome'); if( !(is_dir($diretorioDestino)) ): if( !(mkdir($diretorioDestino, 0777, true)) ): throw new Zend_Upload_Exception("Pasta de upload nao existe e não pode ser criada."); endif; endif; $upload->setDestination($diretorioDestino); try { $upload->receive(); } catch ( Zend_File_Transfer_Exception $e ) { $this->_helper->flashMessenger(array( 'error' => $e->getMessage() )); } /* Informações para Log */ $pathinfo = pathinfo($upload->getFileName()); $md5File = md5_file($upload->getFileName()); $log = new stdClass(); $log->arquivo = isset($pathinfo) ? $pathinfo['basename'] : ""; $log->md5 = isset($md5File) ? $md5File : ""; $extension = strtolower(pathinfo($upload->getFileName(), PATHINFO_EXTENSION)); if( $extension == 'pdf'){ try { $banco = $form->getValue('banco_nome'); $modelBanco = new Model_Banco(); $resultado = ''; switch ($banco) { case 'ITAU': $bancoId = $modelBanco->bancoPorNome($form->getValue('banco_nome')); $importacao = new Core_Banco_Planilha_Itau_ImportacaoCapa; $importacao->setBancoId($bancoId); $resultado = $importacao->importar($upload->getFileName()); break; case 'BONSUCESSO' : $bancoId = $modelBanco->bancoPorNome($form->getValue('banco_nome')); $importacao = new Core_Banco_Planilha_Bonsucesso_ImportacaoCapa; $importacao->setBancoId($bancoId); $resultado = $importacao->importar($upload->getFileName()); break; default: # code... break; } } catch ( Exception $exception ) { $this->_helper->flashMessenger(array( 'error' => $exception->getMessage() )); } if( $resultado ){ $this->_helper->flashMessenger(array( "alert" => "Contrato não importado" )); $this->view->nao_importados = $resultado; }else{ $this->view->nao_importados = null; $this->_helper->flashMessenger(array( "success" => "Contrato importado" )); } } } $this->view->form = $form; } public function listarConsistenciasAction() { $request = $this->getRequest(); $form = new Form_Filtro_Consistencias(); $contratos = array(); if ($request->isPost()) { if (!$form->isValid($request->getPost())) { $this->_helper->json(array('alert' => "Informe pelo menos uma opção de filtragem.")); } else { $form->populate($request->getPost()); $fields = array_filter($request->getPost()); unset($fields['btn_filtrar']); unset($fields['page']); try { $contrato = new Model_ContratoPendencia(); $contratos = $contrato->listar($fields); $form->populate($fields); } catch (Exception $exception) { $this->_helper->json(array('alert' => $exception->getMessage())); } } } $this->view->contratos = $contratos; $this->view->form = $form; } public function importarConsistenciasAction() { $request = $this->getRequest(); $form = new Form_ImportarConsistencias(); if ($request->isPost() && $form->isValid($request->getPost())) { $upload = new Zend_File_Transfer_Adapter_Http(); $upload->setDestination(UPLOAD_PATH); try { $upload->receive(); } catch (Zend_File_Transfer_Exception $e) { $this->_helper->flashMessenger(array('error' => $e->getMessage())); } $objReader = PHPExcel_IOFactory::createReaderForFile($upload->getFileName()); $fileinfo = $objReader->listWorksheetInfo($upload->getFileName()); if (is_array($fileinfo) && (array_filter($fileinfo) != null)) { $firstSheetName = $fileinfo[0]['worksheetName']; $objReader->setLoadSheetsOnly($firstSheetName); } try { $objPHPExcel = $objReader->load($upload->getFileName()); } catch (Exception $e) { if ($e->getMessage() == "Cannot read encrypted file") { $this->_helper->flashMessenger(array('alert' => 'O arquivo não pode ser lido. Verifique se ele ' . 'está protegido por senha e tente novamente.')); } } if (isset($objPHPExcel) && is_object($objPHPExcel)) { $sheetData = $objPHPExcel->getActiveSheet() ->toArray(null, true, true, true); $objPHPExcel->disconnectWorksheets(); unset($objPHPExcel); unset($objReader); unlink($upload->getFileName()); $contrato = new Model_Contrato(); try { $retorno = $contrato->importarConsistencias($sheetData); if ($retorno->importadas > 0) { $this->_helper->flashMessenger(array( 'success' => "O arquivo foi enviado com sucesso!" . " {$retorno->importadas} itens importados!")); } else { $this->_helper->flashMessenger(array( 'alert' => 'Nenhuma consistência importada' )); } $this->view->nao_importados = $retorno->naoImportadas; } catch (Core_Exception $e) { $this->_helper->flashMessenger( array('error' => $e->getMessage()) ); } } } $this->view->form = $form; } public function deleteConsistenciaAction() { $request = $this->getRequest(); $id = (int) $request->getParam('id'); if( $id > 0 ){ $contratoPendencia = new Model_ContratoPendencia(); $dbDocumento = new Model_DbTable_PendenciaRegularizar(); try { $contratoPendencia->excluir($id); $dbDocumento->update(array("excluido" => 1), "contrato_pendencia_id = {$id}"); $this->_helper->flashMessenger(array( 'success' => 'Excluído com sucesso' )); } catch ( Exception $e ) { $this->_helper->flashMessenger(array( 'error' => $e->getMessage() )); } } $this->_redirect('/contrato/listar-consistencias'); } public function importarValorARecuperarAction() { $request = $this->getRequest(); $form = new Form_ImportarValorARecuperar(); if( $request->isPost() && $form->isValid($request->getPost()) ){ $upload = new Zend_File_Transfer_Adapter_Http(); $upload->setDestination(UPLOAD_PATH); try { $upload->receive(); } catch ( Zend_File_Transfer_Exception $e ) { $this->_helper->flashMessenger(array( 'error' => $e->getMessage() )); } $extension = strtolower(pathinfo($upload->getFileName(), PATHINFO_EXTENSION)); if( in_array($extension, array( 'csv', 'txt' )) ){ $objReader = PHPExcel_IOFactory::createReader('CSV'); $objReader->setDelimiter($extension == 'csv' ? ';' : '#'); } else { $this->_helper->flashMessenger(array( 'alert' => 'Por favor, importe um arquivo CSV.' )); $this->_redirect("contrato/importar-valor-a-recuperar"); } try { $objPHPExcel = $objReader->load($upload->getFileName()); } catch ( Exception $e ) { if( $e->getMessage() == "Cannot read encrypted file" ){ $this->_helper->flashMessenger(array( 'alert' => 'O arquivo não pode ser lido. Verifique se ele ' . 'está protegido por senha e tente novamente.' )); } } if( isset($objPHPExcel) && is_object($objPHPExcel) ){ $sheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true); $objPHPExcel->disconnectWorksheets(); unset($objPHPExcel, $objReader); unlink($upload->getFileName()); $contrato = new Model_Contrato(); try { $retorno = $contrato->importarValorARecuperar($form->getValue('banco_id'), $sheetData); if( count($retorno->importados) > 0 ){ $this->_helper->flashMessenger(array( 'success' => "O arquivo foi enviado com sucesso! " . count($retorno->importados) . " itens importados!" )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Nenhum contrato importado' )); } $this->view->nao_importados = $retorno->naoImportados; } catch ( Core_Exception $e ) { $this->_helper->flashMessenger( array( 'error' => $e->getMessage() ) ); } } } $this->view->form = $form; } /** * Historico de portabilidade */ public function getHistoricoPortabilidadeAction() { $this->getHelper('Layout')->disableLayout(); $request = $this->getRequest(); $contratoId = $request->getParam('id'); try{ $model = new Model_ContratoPortabilidade(); $result = $model->listar("contrato_id = {$contratoId}"); $this->view->result = $result; $this->_helper->json(array( 'alert' => '', 'body' => true, 'content' => $this->view->render('contrato/get-historico-portabilidade.phtml'), )); }catch (Exception $e){ $this->_helper->flashMessenger(array( 'alert' => 'Falha ao carregar o histórico.' )); } } /** * Historico do contrato */ public function historicoContratoAction() { $this->getHelper('Layout')->disableLayout(); $request = $this->getRequest(); $contratoId = $request->getParam('id'); $dataInicial = Zend_Date::now()->subDay(90)->get('yyyy-MM-dd'); try{ $model = new Model_Log(); $result = $model->listar("data_mudanca >= '{$dataInicial}' AND (chave = {$contratoId} OR clausula_where = 'id = {$contratoId}') AND tabela = 'tb_contratos'"); $this->view->result = $result; $this->_helper->json([ 'alert' => '', 'body' => true, 'content' => $this->view->render('contrato/historico-contrato.phtml'), ]); }catch (Exception $e){ $this->_helper->flashMessenger([ 'alert' => 'Falha ao carregar o histórico.' ]); } } public function atualizaCorretorPorDigitadorAction() { $this->getHelper('Layout')->disableLayout(); $this->getHelper('viewRenderer')->setNoRender(); $request = $this->getRequest(); if( !$request->isXmlHttpRequest() ){ $this->_helper->flashMessenger([ 'error' => 'Falha ao carregar o acesso!' ]); $this->_helper->redirector('index'); return; } $senha = $request->getParam('s'); $bancoId = $request->getParam('b'); $corretorId = $request->getParam('c'); try{ $model = new Model_CorretorSenha(); $result = $model->atualizaContratoPorDigitador($senha, $bancoId, $corretorId); if( $result ){ $this->_helper->json("Contratos atualizados com sucesso!"); } }catch( Exception $e ){ $this->_helper->json($e->getMessage()); } } public function agendamentoBaixaFisicosAction() { $request = $this->getRequest(); $form = new Form_AgendamentoBaixaFisicos(); if ( $request->isPost() && $form->isValid($request->getPost()) ) { try { Model_AgendamentoBaixaFisicos::persistData(array_filter($request->getPost())); $this->_helper->flashMessenger([ 'success' => 'Configurações salvas com sucesso.' ]); $this->_redirect('contrato/agendamento-baixa-fisicos'); } catch ( Core_Exception $e ) { $this->_helper->flashMessenger([ 'error' => 'Não foi possível salvar a configuração de agendamento.' ]); } } $this->view->form = $form; $this->view->data = Model_AgendamentoBaixaFisicos::getConfig(); } public function exibirEspelhoImportacaoAction() { $this->getHelper('Layout')->disableLayout(); $request = $this->getRequest(); $id = $request->getParam('id'); $this->view->historico = Model_Contrato::getDetalheHistoricoImportacao($id); $this->_helper->json([ 'alert' => '', 'body' => true, 'content' => $this->view->render('contrato/exibir-historico-importacao.phtml'), ]); } public function historicoPendenciasAction() { $request = $this->getRequest(); $form = new Form_HistoricoPendencia(); $params = $request->getParams(); $pendencia = new Model_HistoricoPendencia(); if ($request->isPost() && $form->isValid($request->getPost()) && $request->getParam('contrato_id') > 0) { try { $pendencia->gravarPendenciaContrato($params); $pendencia->notificarPendencia($params['descricao'], $params['contrato_id'], $this); $this->_helper->flashMessenger(['success' => 'Descrição adicionada com sucesso!']); } catch (DomainException $domainException) { $this->_helper->flashMessenger(['error' => $domainException->getMessage()]); } catch ( Exception $ex ) { $this->_helper->flashMessenger(['error' => $ex->getMessage()]); } } else { $this->_helper->flashMessenger(['alert' => 'Preencha os campos corretamente.']); } $this->_redirect("/contrato/save/id/{$params['contrato_id']}/#mytabcontainer-frag-6"); } public function deleteHistoricoAction() { $request = $this->getRequest(); $params = $request->getParams(); try { (new Model_HistoricoPendencia())->excluir($params['id']); } catch (DomainException $domainException) { $this->_helper->flashMessenger(['error' => $domainException->getMessage()]); } $this->_redirect("/{$params['controller']}/save/id/{$params['contrato_id']}/#mytabcontainer-frag-6"); } public function resolveHistoricoAction() { $request = $this->getRequest(); $params = $request->getParams(); $pendencia = new Model_HistoricoPendencia(); try { $result = $pendencia->resolverPendencia($params['id']); if ($result) { $historicoPendencia = (new Model_DbTable_HistoricoPendencia())->fetchRow(['id = ?' => $params['id']])->toArray(); $pendencia->notificarPendencia($historicoPendencia['descricao'], $historicoPendencia['contrato_id'], $this, true); } } catch (Throwable $domainException) { $this->_helper->flashMessenger(['error' => $domainException->getMessage()]); } $this->_redirect("/{$params['controller']}/save/id/{$params['contrato_id']}/#mytabcontainer-frag-6"); } /** * Esteira Anti-Fraude */ public function antiFraudeAction() { $form = new Form_Filtro_AntiFraude(); $request = $this->getRequest(); $ns = new Zend_Session_Namespace('antifraude_contratos'); $page = $request->getPost('page', 1); $fields = ['status' => 1]; if ($request->isPost()) { $ns->unsetAll(); $ns->antifraude_contratos = $request->getPost(); } if (isset($ns->antifraude_contratos)) { $fields = $ns->antifraude_contratos; unset($fields['btn_filtrar']); unset($fields['page']); } $form->populate($fields); $model = new Model_Contrato(); $fields['antifraude'] = true; $contratos = $model->getContratos($fields, $page, 50); $contratos->setCurrentPageNumber($this->_getParam('page', 1)); $this->view->paginator = $contratos; $this->view->form = $form; } public function processarProducaoBancoAsyncAction() { try { $result = $this->importacaoAsyncService->initImportacaoAsync($this->getRequest()); $this->_helper->json(['async' => true, 'importacao' => $result]); } catch (Throwable $throwable) { $this->_helper->json(['alert' => $throwable->getMessage()]); } } /** * Copiar URL de Formalização Via API */ public function getUrlFormalizacaoAction() { $propostaId = (int)$this->getRequest()->getParam('id', 0); if (empty($propostaId)) { return $this->_helper->json([]); } $contrato = (new Model_Contrato())->exibir($propostaId); if (empty($contrato)) { $this->_helper->json(['alert' => "Contrato não localizado."]); } $cliente = (new Model_Cliente())->exibir($contrato->cliente_id); $banco = (new Model_Banco())->bancoPorId($contrato->banco_id); try { $service = Core_Banco_Service_Factory::load($banco); if (!method_exists($service, "getUrlFormalizacao")) { $this->_helper->json(['alert' => "Banco não possui API para localizar link de formalização"]); } $urlformalizacao = $service->getUrlFormalizacao($contrato->token_proposta ?? $contrato->numero_contrato, $cliente->cpf, $cliente->celular); } catch (Yuppie_Exception $e) { $this->_helper->json(['alert' => $e->getMessage()]); } catch (Core_Exception $e) { $this->_helper->json(['alert' => $e->getMessage()]); } if (empty($urlformalizacao)) { $this->_helper->json(['alert' => "Nenhum link de formalização encontrado"]); } $this->_helper->json(['url_formalizacao' => $urlformalizacao]); } /** * Listar contratos para digitação automática */ public function listarParaDigitacaoAutomaticaAction() { $this->_helper->flashMessenger(['info' => 'Essa tela exibirá no máximo 5.000 linhas. Utilize os filtros para melhor atender às suas necessidades.']); $request = $this->getRequest(); $form = new Form_Filtro_ContratosDigitacaoAutomatica(); $ns = new Zend_Session_Namespace('listar_para_digitacao'); if ($request->isPost() && $form->isValid($request->getPost())) { $ns->listar_para_digitacao = $form->getValues(); } if (!empty($ns->listar_para_digitacao)) { $this->view->clientes = (new Model_Contrato())->getContratosDigitacaoAutomatica($ns->listar_para_digitacao); $form->populate($ns->listar_para_digitacao); } $this->view->form = $form; $this->view->convenio_id = $form->getValue('convenio_id'); } public function enviarParaDigitacaoAutomaticaAction() { $request = $this->getRequest(); $clientes = $request->getParam('clientes'); $form = new Form_EnviarDigitacaoAutomatica(); if (empty($clientes)) { $this->_helper->flashMessenger(['error' => "Pelo menos um cliente deve ser selecionado."]); $this->_helper->redirector('listar-para-digitacao-automatica'); return; } if ($request->getParam('banco_id') && $request->getParam('convenio_id') && $form->isValid($request->getPost())) { //gravar para digitacao automática $result = (new Model_DbTable_DigitacaoAutomatica())->gravarParaDigitacao(unserialize($clientes), $request->getParam('convenio_id'), $request->getParam('banco_id'), $request->getParam('tipo_operacao')); array_map(function ($item){ if ($item['status'] == false) { $this->_helper->flashMessenger(['alert' => "Alguns clientes não foram enviados pois podem já estar na fila."]); $this->_helper->redirector('listar-para-digitacao-automatica'); return; } }, $result); $this->_helper->flashMessenger(['success' => "Clientes enviados para a esteira. A digitação iniciará em breve. Acompanhe pela esteira de digitação."]); $this->_helper->redirector('listar-para-digitacao-automatica'); return; } $form->populate(['clientes' => serialize($clientes)]); $this->view->form = $form; } /** * Visualizar esteira de digitação automática */ public function viewEsteiraDigitacaoAction() { $request = $this->getRequest(); $form = new Form_Filtro_EsteiraDigitacaoAutomatica(); if ($request->isPost() && $form->isValid($request->getPost())) { $this->view->contratos = (new Model_DbTable_DigitacaoAutomatica())->viewEsteira($form->getValues()); } $this->view->form = $form; } public function cancelarDigitacaoAutomaticaAction() { $request = $this->getRequest(); $contratos = $request->getParam('contratos'); if (empty($contratos)) { $this->_helper->flashMessenger(['error' => "Pelo menos um contrato deve ser selecionado."]); $this->_helper->redirector('view-esteira-digitacao'); return; } $result = (new Model_DbTable_DigitacaoAutomatica())->delete("id IN (" . implode(",", $contratos) . ")"); if ($result) { $this->_helper->flashMessenger(['success' => "Digitação cancelada com sucesso."]); } else { $this->_helper->flashMessenger(['error' => "Nenhuma digitação foi cancelada."]); } $this->_helper->redirector('view-esteira-digitacao'); } }
💾 保存文件
← 返回文件管理器