/**
  * Construtor da classe Modelo Relatório
  */
 public function carregaDados()
 {
     $aIdentity = Zend_Auth::getInstance()->getIdentity();
     $this->oDadosPrefeitura = Administrativo_Model_Prefeitura::getDadosPrefeituraBase();
     $this->oDadosUsuario = Administrativo_Model_Usuario::getById($aIdentity['id']);
     $this->SetFillColor(220, 220, 220);
     $this->AddPage();
     $this->SetAutoPageBreak(TRUE, 12);
 }
 /**
  * Retorna lista dos bairros
  *
  * Aviso:
  * - Se o codigo da prefeitura for igual retorna parametro para mostrar campo texto
  *
  * @param string $municipio
  * @return JSON $aBairros[]
  */
 public function getBairrosAction()
 {
     $iCodigoIbge = Administrativo_Model_Prefeitura::getDadosPrefeituraBase()->getIbge();
     $iMunicipio = $this->_getParam('municipio', NULL);
     if ($iCodigoIbge == $iMunicipio) {
         $aBairros = Default_Model_Cadenderbairro::getBairros($iMunicipio);
         echo $this->getHelper('json')->sendJson($aBairros);
     } else {
         echo $this->getHelper('json')->sendJson(array('mostra_campo_texto' => TRUE));
     }
 }
 public function indexAction()
 {
     parent::noTemplate();
     $oForm = new Contribuinte_Form_Tomador();
     if ($this->getRequest()->isPost()) {
         $aDados = $this->getRequest()->getPost();
         $oForm->preenche($aDados);
         if (!$oForm->isValid($aDados)) {
             $this->view->form = $oForm;
             $this->getResponse()->setHttpResponseCode(406);
             // Evita o Fechamento da Modal JS
         } else {
             $iCodigoIbge = Administrativo_Model_Prefeitura::getDadosPrefeituraBase()->getIbge();
             if ($aDados['z01_munic'] == $iCodigoIbge) {
                 $aDados['z01_bairro'] = $aDados['z01_bairro_munic'];
                 $aDados['z01_ender'] = $aDados['z01_ender_munic'];
             } else {
                 $aDados['z01_bairro'] = $aDados['z01_bairro_fora'];
                 $aDados['z01_ender'] = $aDados['z01_ender_fora'];
             }
             // Salva Novo CGM (eCidade)
             //Contribuinte_Model_Cgm::persist($aDados);
             // Salva Novo Tomador (NFSE)
             $aDadosNfse = array();
             $aDadosNfse['t_cnpjcpf'] = $aDados['z01_cgccpf'];
             $aDadosNfse['t_razao_social'] = $aDados['z01_nome'];
             $aDadosNfse['t_cod_pais'] = $aDados['z01_nome'];
             $aDadosNfse['t_uf'] = $aDados['z01_uf'];
             $aDadosNfse['t_cod_municipio'] = $aDados['z01_munic'];
             $aDadosNfse['t_cep'] = $aDados['z01_cep'];
             $aDadosNfse['t_bairro'] = $aDados['z01_bairro_fora'];
             $aDadosNfse['t_endereco'] = $aDados['z01_ender_fora'];
             $aDadosNfse['t_endereco_numero'] = $aDados['z01_numero'];
             $aDadosNfse['t_endereco_comp'] = $aDados['z01_compl'];
             $aDadosNfse['t_telefone'] = $aDados['z01_telef'];
             $aDadosNfse['t_email'] = $aDados['z01_email'];
             $oTomador = new Contribuinte_Model_TomadorBase();
             $oTomador->persist($aDadosNfse);
             $this->_helper->getHelper('FlashMessenger')->addMessage(array('success' => 'Tomador cadastrado com sucesso.'));
             return;
         }
     } else {
         $this->view->form = $oForm;
     }
 }
 public function rpsAction()
 {
     $im = $this->getRequest()->getParam('im');
     $req = $this->getRequest()->getParam('req');
     $requisicao = null;
     $config = Administrativo_Model_Prefeitura::getDadosPrefeituraBase();
     $sControleAidof = $config->getControleAidof();
     $contribuinte = Administrativo_Model_Contribuinte::getByIm($im);
     $this->view->sControleAidof = $sControleAidof;
     if ($req !== null) {
         $requisicao = Administrativo_Model_Aidof::getById($req);
         $im = $requisicao->getIm();
         $this->view->liberacaoForm = $this->liberacaoRpsForm($requisicao->getContribuinte(), $requisicao, $sControleAidof);
     }
     if ($contribuinte != null || !empty($contribuinte)) {
         $this->view->contribuinte_nome = $contribuinte[0]->attr('nome');
         $liberacaoForm = $this->liberacaoRpsForm($contribuinte, $requisicao, $sControleAidof);
         if ($this->getRequest()->isPost()) {
             if ($liberacaoForm->isValid($_POST)) {
                 $dados = $this->getRequest()->getPost();
                 if (isset($dados['nota_limite']) && $dados['nota_limite'] != null && (isset($dados['data_limite']) && $dados['data_limite'] != null)) {
                     $this->view->messages[] = array('error' => 'Informe apenas um dos campos. Ou limite por rps, ou limite por data.');
                 } else {
                     $liberacao = Administrativo_Model_Aidof::getById($req);
                     if ($liberacao->getDataLiberacao() == null) {
                         $liberacao->setDataLiberacao(new Datetime());
                         $dados['situacao'] = 'l';
                         if ($sControleAidof == 'data') {
                             $auxData = str_replace('/', '-', $this->_getParam('data_liberada'));
                             $auxData = new DateTime($auxData);
                             $auxData->format('Y-m-d H:i:s');
                             $dados['data_liberada'] = $auxData;
                         }
                         $liberacao->persist($dados);
                         $this->view->messages[] = array('success' => 'Liberação cadastrada com sucesso.');
                     } else {
                         $this->_redirector->gotoSimple('rps', 'liberacao', 'administrativo');
                     }
                 }
             }
         }
         $this->view->historico = Administrativo_Model_Aidof::getRequisicoes($im, 'r');
     }
     $this->view->requisicoes = Administrativo_Model_Aidof::getRequisicoesPendentes(null, 'r');
 }
 public function indexAction()
 {
     $this->_helper->layout->setLayoutPath(APPLICATION_PATH . '/modules/contribuinte/views/scripts/layouts');
     $this->_helper->layout->setLayout('layout-modal');
     $oForm = new Contribuinte_Form_Empresa();
     if ($this->getRequest()->isPost()) {
         $aDados = $this->getRequest()->getPost();
         $oForm->preenche($aDados);
         if (!$oForm->isValid($aDados)) {
             $this->view->form = $oForm;
             $this->getResponse()->setHttpResponseCode(406);
             // Evita o Fechamento da Modal JS
         } else {
             $iCodigoIbge = Administrativo_Model_Prefeitura::getDadosPrefeituraBase()->getIbge();
             if ($aDados['z01_munic'] == $iCodigoIbge) {
                 $aDados['z01_bairro'] = $aDados['z01_bairro_munic'];
                 $aDados['z01_ender'] = $aDados['z01_ender_munic'];
             } else {
                 $aDados['z01_bairro'] = $aDados['z01_bairro_fora'];
                 $aDados['z01_ender'] = $aDados['z01_ender_fora'];
             }
             // Salva Nova Empresa (NFSE)
             $aDadosEmpresa = array();
             $aDadosEmpresa['t_cnpjcpf'] = DBSeller_Helper_Number_Format::getNumbers($aDados['z01_cgccpf']);
             $aDadosEmpresa['t_razao_social'] = $aDados['z01_nome'];
             $aDadosEmpresa['t_cod_pais'] = $aDados['z01_nome'];
             $aDadosEmpresa['t_uf'] = $aDados['z01_uf'];
             $aDadosEmpresa['t_cod_municipio'] = $aDados['z01_munic'];
             $aDadosEmpresa['t_cep'] = $aDados['z01_cep'];
             $aDadosEmpresa['t_bairro'] = $aDados['z01_bairro_fora'];
             $aDadosEmpresa['t_endereco'] = $aDados['z01_ender_fora'];
             $aDadosEmpresa['t_endereco_numero'] = $aDados['z01_numero'];
             $aDadosEmpresa['t_endereco_comp'] = $aDados['z01_compl'];
             $aDadosEmpresa['t_telefone'] = $aDados['z01_telef'];
             $aDadosEmpresa['t_email'] = $aDados['z01_email'];
             $oEmpresa = new Contribuinte_Model_EmpresaBase();
             $oEmpresa->persist($aDadosEmpresa);
             $this->_helper->getHelper('FlashMessenger')->addMessage(array('success' => 'Empresa cadastrada com sucesso.'));
             return TRUE;
         }
     } else {
         $this->view->form = $oForm;
     }
 }
 /**
  * Gera o PDF da NFSE
  *
  * @param string  $sCodigoVerificacao
  * @return string
  */
 private function getNotaImpressao($sCodigoVerificacao)
 {
     $oNota = Contribuinte_Model_Nota::getByAttribute('cod_verificacao', $sCodigoVerificacao);
     $oPrefeitura = Administrativo_Model_Prefeitura::getDadosPrefeituraBase();
     $this->view->aDadosNota = Contribuinte_Model_Nota::getDadosEmissao($sCodigoVerificacao, $oNota, $oPrefeitura);
     $sHtml = "pdf/nota_modelo_{$oPrefeitura->getModeloImpressaoNfse()}.phtml";
     $sHtml = $this->view->render($sHtml);
     $sNomeArquivo = "nfse_{$oNota->getNota()}";
     $sLocalArquivo = APPLICATION_PATH . "/../public/tmp/{$sNomeArquivo}";
     DBSeller_Helper_Pdf_Pdf::renderPdf($sHtml, $sLocalArquivo, array('format' => 'A4', 'output' => 'F'));
     return array('location' => "{$sLocalArquivo}.pdf", 'filename' => "{$sNomeArquivo}.pdf", 'type' => 'application/pdf');
 }
 public function init()
 {
     $oBaseUrlHelper = new Zend_View_Helper_BaseUrl();
     // pega codigo do IBGE do municipio no arquivo de configuracao
     $iCodigoIbge = Administrativo_Model_Prefeitura::getDadosPrefeituraBase()->getIbge();
     $this->setAction($oBaseUrlHelper->baseUrl($this->sAction));
     $this->setMethod(Zend_Form::METHOD_POST);
     $this->setAttrib('id', 'formTomador');
     $oElm = $this->createElement('hidden', 'endereco_fora');
     $oElm->setValue('1');
     $this->addElement($oElm);
     $oElm = $this->createElement('text', 'z01_cgccpf');
     $oElm->setLabel('CNPJ: ');
     $oElm->addValidator(new DBSeller_Validator_Cnpj());
     $oElm->addValidator(new Zend_Validate_StringLength(array('min' => 14, 'max' => 18)));
     $oElm->addFilter(new Zend_Filter_Digits());
     $oElm->setRequired(TRUE);
     $oElm->removeDecorator('errors');
     $this->addElement($oElm);
     $oElm = $this->createElement('text', 'z01_nome');
     $oElm->setLabel('Razão Social: ');
     $oElm->setRequired(TRUE);
     $oElm->removeDecorator('errors');
     $this->addElement($oElm);
     $aEstados = Default_Model_Cadenderestado::getEstados('01058');
     $oElm = $this->createElement('select', 'z01_uf', array('multiOptions' => $aEstados));
     $oElm->setLabel('Estado: ');
     $oElm->setAttrib('class', 'select-estados');
     $oElm->setAttrib('select-munic', 'z01_munic');
     $oElm->setAttrib('ajax-url', '/endereco/get-municipios/');
     $oElm->setAttrib('key', FALSE);
     $oElm->setRequired(TRUE);
     $oElm->addValidator(new Zend_Validate_Alpha());
     $oElm->removeDecorator('errors');
     $this->addElement($oElm);
     $oElm = $this->createElement('select', 'z01_munic');
     $oElm->setLabel('Cidade: ');
     $oElm->setAttrib('key', TRUE);
     $oElm->setRequired(TRUE);
     $oElm->addValidator(new Zend_Validate_Digits());
     $oElm->addValidator(new Zend_Validate_GreaterThan(array('min' => 0)));
     $oElm->removeDecorator('errors');
     $this->addElement($oElm);
     $oElm = $this->createElement('text', 'z01_cep');
     $oElm->setLabel('CEP: ');
     $oElm->setAttrib('maxlength', 8);
     $oElm->setRequired(TRUE);
     $oElm->addValidator(new Zend_Validate_Digits());
     $oElm->addValidator(new Zend_Validate_StringLength(array('min' => 8)));
     $oElm->removeDecorator('errors');
     $this->addElement($oElm);
     $aBairros = Default_Model_Cadenderbairro::getBairros();
     $oElm = $this->createElement('select', 'z01_bairro_munic', array('multiOptions' => $aBairros));
     $oElm->setLabel('Bairro: ');
     $oElm->setAttrib('municipio', $iCodigoIbge);
     $oElm->setRequired(TRUE);
     $oElm->addValidator(new Zend_Validate_Digits());
     $oElm->addValidator(new Zend_Validate_GreaterThan(array('min' => 0)));
     $oElm->removeDecorator('errors');
     $this->addElement($oElm);
     $aMunicipios = Default_Model_Cadenderrua::getRuas();
     $oElm = $this->createElement('select', 'z01_ender_munic', array('multiOptions' => $aMunicipios));
     $oElm->setLabel('Endereço: ');
     $oElm->setAttrib('municipio', $iCodigoIbge);
     $oElm->setRequired(TRUE);
     $oElm->addValidator(new Zend_Validate_Digits());
     $oElm->addValidator(new Zend_Validate_GreaterThan(array('min' => 0)));
     $oElm->removeDecorator('errors');
     $this->addElement($oElm);
     $oElm = $this->createElement('text', 'z01_bairro_fora');
     $oElm->setLabel('Bairro: ');
     $oElm->setRequired(TRUE);
     $oElm->removeDecorator('errors');
     $this->addElement($oElm);
     $oElm = $this->createElement('text', 'z01_ender_fora');
     $oElm->setLabel('Endereço: ');
     $oElm->setRequired(TRUE);
     $oElm->removeDecorator('errors');
     $this->addElement($oElm);
     $oElm = $this->createElement('text', 'z01_numero');
     $oElm->setLabel('Número: ');
     $oElm->setRequired(TRUE);
     $oElm->removeDecorator('errors');
     $this->addElement($oElm);
     $oElm = $this->createElement('text', 'z01_compl');
     $oElm->setLabel('Complemento: ');
     $this->addElement($oElm);
     $oElm = $this->createElement('text', 'z01_telef');
     $oElm->setLabel('Telefone: ');
     $oElm->addFilter(new Zend_Filter_Digits());
     $this->addElement($oElm);
     $oElm = $this->createElement('text', 'z01_email');
     $oElm->setLabel('Email: ');
     $oElm->setRequired(TRUE);
     $oElm->addValidator(new Zend_Validate_EmailAddress());
     $oElm->removeDecorator('errors');
     $this->addElement($oElm);
     if ($this->bSubmit) {
         $this->addElement(new Zend_Form_Element_Submit('Cadastrar', 'Cadastrar', array('label' => 'Criar')));
     }
     return $this;
 }
 /**
  * Método que gera o relatório e importações de desif
  */
 public function imprimeImportacaoAction()
 {
     parent::noLayout();
     $iIdImportacao = $this->getRequest()->getParam('id');
     $sDataHoraGeracao = date('YmdHis');
     $sArquivoPdf = "importacao_desif_{$sDataHoraGeracao}.pdf";
     $oContribuinte = $this->_session->contribuinte;
     $oDadosPrefeitura = Administrativo_Model_Prefeitura::getDadosPrefeituraBase();
     $oImportacaoDesif = Contribuinte_Model_ImportacaoDesif::getById($iIdImportacao);
     $sCompInicial = $oImportacaoDesif->getCompetenciaInicial();
     $sCompFinal = $oImportacaoDesif->getCompetenciaFinal();
     $aMes = array('inicial' => substr($sCompInicial, 4), 'final' => substr($sCompFinal, 4));
     $aAno = array('inicial' => substr($sCompInicial, 0, 4), 'final' => substr($sCompFinal, 0, 4));
     $aReceitas = Contribuinte_Model_ImportacaoDesifReceita::getReceitasContasByImportacao($iIdImportacao);
     $oPdf = new Contribuinte_Model_RelatorioReceitasDesif('l');
     $oPdf->setNomeArquivo($sArquivoPdf);
     $oPdf->setAmbiente(getenv('APPLICATION_ENV'));
     $oPdf->setPrefeitura($oDadosPrefeitura);
     $oPdf->openPdf();
     $oPdf->setDadosContribuinte($oContribuinte, $aMes, $aAno, FALSE);
     $oPdf->setDadosReceitas($aReceitas);
     $oPdf->Output();
     parent::download($oPdf->getNomeArquivo());
 }
 /**
  * Formulário de impressão automatica das guias
  */
 public function impressaoGeracaoAutomaticaAction()
 {
     $oForm = new Fiscal_Form_Guias();
     $oForm->getElement('btn_gerar')->setAttrib('style', 'display:none;');
     $oForm->getElement('btn_consultar')->setLabel('Imprimir');
     $oForm->getElement('btn_consultar')->setAttrib('type', 'submit');
     $oForm->setAction($this->action);
     $this->view->oForm = $oForm;
     if ($this->getRequest()->isPost()) {
         $aParametros = $this->getRequest()->getParams();
         parent::noTemplate();
         $iMesCompetencia = str_pad($aParametros['mes_competencia'], 2, '0', STR_PAD_LEFT);
         $iAnoCompetencia = $aParametros['ano_competencia'];
         $aGuiasCompetencia = Contribuinte_Model_Competencia::getByGuiasContribuinteAndCompetencia($iMesCompetencia, $iAnoCompetencia);
         $oPrefeitura = Administrativo_Model_Prefeitura::getDadosPrefeituraBase();
         $aDadosRelatorio = array();
         foreach ($aGuiasCompetencia as $oGuia) {
             $oDados = new stdClass();
             $oDados->competencia = $oGuia->getCompetencia();
             $oDados->valorTotal = $oGuia->getFormatedTotalServico();
             $oDados->valorIss = $oGuia->getFormatedTotalIss();
             $oDados->razaoSocial = $oGuia->getContribuinte()->getNome();
             $oDados->im = $oGuia->getContribuinte()->getInscricaoMunicipal();
             $oDados->cnpj = $oGuia->getContribuinte()->getCgcCpf();
             $aDadosRelatorio[] = $oDados;
         }
         $oImpressaoRelatorio = new Fiscal_Model_ImpressaoRelatorioDeGuias();
         $oImpressaoRelatorio->setAmbiente(getenv("APPLICATION_ENV"));
         $oImpressaoRelatorio->setPrefeitura($oPrefeitura->getNome());
         $oImpressaoRelatorio->setDados($aDadosRelatorio);
         $aArquivo = $oImpressaoRelatorio->montaRelatorio();
         parent::download($aArquivo['filename']);
     }
 }
 /**
  * Gera o documento do livro fiscal e retorna o nome do arquivo gerado
  *
  * @param Contribuinte_Model_Contribuinte $oContribuinte
  * @return null|string
  * @throws Exception
  */
 private function livroFiscalGerarDocumento(Contribuinte_Model_Contribuinte $oContribuinte)
 {
     $oDadosPrefeitura = Administrativo_Model_Prefeitura::getDadosPrefeituraBase();
     $sDataHoraGeracao = date('YmdHis');
     $sArquivoPdf = "livro_fiscal_{$sDataHoraGeracao}.pdf";
     try {
         // Parâmetros do formulário
         $sCompetenciaInicial = $this->getRequest()->getParam('data_competencia_inicial');
         $sCompetenciaFinal = $this->getRequest()->getParam('data_competencia_final');
         // Separa os meses e anos
         $iCompetenciaInicialMes = substr($sCompetenciaInicial, 0, 2);
         $iCompetenciaFinalMes = substr($sCompetenciaFinal, 0, 2);
         $iCompetenciaInicialAno = substr($sCompetenciaInicial, -4);
         $iCompetenciaFinalAno = substr($sCompetenciaFinal, -4);
         // Dados do gerenciador de entidade e conexão (Doctrine)
         $oEntityManager = Zend_Registry::get('em');
         $oConexao = $oEntityManager->getConnection();
         // Inicia o processo de geração do PDF
         $oPdf = new DBSeller_Helper_Pdf_LivroFiscal('l');
         $oPdf->setNomeArquivo($sArquivoPdf);
         $oPdf->setAmbiente(getenv('APPLICATION_ENV'));
         $oPdf->openPdf();
         $sCodigosContribuintes = NULL;
         // Une todos os ID's referentes ao contribuinte
         foreach ($oContribuinte->getContribuintes() as $iIdContribuinte) {
             if ($sCodigosContribuintes == NULL) {
                 $sCodigosContribuintes = $iIdContribuinte;
             } else {
                 $sCodigosContribuintes .= ',' . $iIdContribuinte;
             }
         }
         // Varre os anos para geração do relatório
         for ($iAno = 0; $iAno <= $iCompetenciaFinalAno - $iCompetenciaInicialAno; $iAno++) {
             $iAnoLoop = intval($iCompetenciaInicialAno) + $iAno;
             // Varre os meses
             for ($iMesLoop = 1; $iMesLoop <= 12; $iMesLoop++) {
                 // Ignora os meses anteriores e seguintes aos meses inicial e final
                 if ($iAnoLoop == $iCompetenciaInicialAno && $iMesLoop < $iCompetenciaInicialMes || $iAnoLoop == $iCompetenciaFinalAno && $iMesLoop > $iCompetenciaFinalMes) {
                     continue;
                 }
                 // Monta os dados da prefeitura
                 $oPdf->setDadosPrefeitura($oDadosPrefeitura);
                 // Monta os dados do contribuinte
                 $oPdf->setDadosContribuinte($oContribuinte, $iMesLoop, $iAnoLoop);
                 // Parametros consulta documentos
                 $aParametrosDocumentos = array();
                 $aParametrosDocumentos['iAno'] = $iAnoLoop;
                 $aParametrosDocumentos['iMes'] = $iMesLoop;
                 // Documentos validos
                 $oStatementValidos = $oConexao->prepare("\n            SELECT   *\n            FROM     view_nota_mais_dms WHERE\n                     servico_iss_retido          = false                        AND\n                    (dms_operacao                = 's' OR dms_operacao IS NULL) AND\n                     documento_competencia_ano   = :iAno                        AND\n                     documento_competencia_mes   = :iMes                        AND\n                     documento_id_contribuinte IN ({$sCodigosContribuintes})\n            ORDER BY documento_data,\n                     documento_numero,\n                     documento_tipo\n          ");
                 // Monta a lista dos documentos validos do contribuinte
                 $oPdf->setDadosDocumentosValidos($oStatementValidos, $aParametrosDocumentos);
                 $oPdf->Ln(10);
                 // Documentos Substituídos
                 $oStatementSubstituitos = $oConexao->prepare("\n            SELECT   *\n            FROM     view_nota_mais_dms WHERE\n                     servico_iss_retido          = true                         AND\n                    (dms_operacao                = 's' OR dms_operacao IS NULL) AND\n                     documento_competencia_ano   = :iAno                        AND\n                     documento_competencia_mes   = :iMes                        AND\n                     documento_id_contribuinte in ({$sCodigosContribuintes})\n            ORDER BY documento_data,\n                     documento_numero,\n                     documento_tipo\n          ");
                 // Monta a lista dos documentos substituídos do contribuinte
                 $oPdf->setDadosDocumentosSubstituidos($oStatementSubstituitos, $aParametrosDocumentos);
             }
             // Parametros termo de abertura/fechamento
             $oParametrosAberturaFechamento = new stdClass();
             $oParametrosAberturaFechamento->oContribuinte = $oContribuinte;
             $oParametrosAberturaFechamento->iAno = $iAnoLoop;
             $oParametrosAberturaFechamento->iCompetenciaInicialMes = $iCompetenciaInicialMes;
             $oParametrosAberturaFechamento->iCompetenciaInicialAno = $iCompetenciaInicialAno;
             $oParametrosAberturaFechamento->iCompetenciaFinalMes = $iCompetenciaFinalMes;
             $oParametrosAberturaFechamento->iCompetenciaFinalAno = $iCompetenciaFinalAno;
             // Gera os termos de abertura e fechamento
             $oPdf->setDadosAberturaFechamento($oParametrosAberturaFechamento);
             $oParametrosAberturaFechamento->lFechamento = TRUE;
             $oPdf->setDadosAberturaFechamento($oParametrosAberturaFechamento);
             $oPdf->setNumeroPagina(1);
         }
         // Gera o arquivo no diretório "/public/tmp/"
         $oPdf->Output();
         // Retorna o nome do arquivo gerado
         return $sArquivoPdf;
     } catch (Exception $oErro) {
         throw new Exception("Erro ao gerar o relatório: {$oErro->getMessage()}");
     }
 }
 /**
  * Carrega a lista de bairros no elemento, seta o bairro do elemento se informado
  *
  * @param integer $iIdMunicipio
  * @param integer $iIdBairro [opcional]
  */
 public function carregarBairros($iIdMunicipio, $iIdBairro = NULL)
 {
     $iCodigoIbge = Administrativo_Model_Prefeitura::getDadosPrefeituraBase()->getIbge();
     if ($iCodigoIbge == $iIdMunicipio) {
         $aBairros = Default_Model_Cadenderbairro::getBairros($iIdMunicipio);
         $this->cod_bairro->addMultiOptions($aBairros);
     }
     $this->cod_bairro->setValue($iIdBairro);
 }
 /**
  * Formulário NFSE
  *
  * @param string $sCodigoVerificacao
  * @param string $oContribuinte
  * @return Contribuinte_Form_Nota
  */
 private function formNota($sCodigoVerificacao, $oContribuinte = NULL)
 {
     $oContribuinte = $oContribuinte ?: $this->_session->contribuinte;
     $iMaxNota = 0;
     $iMaxGuia = 0;
     // Calcula quantos dias no passado a nota pode ser emitida
     $oParametrosPrefeitura = Administrativo_Model_Prefeitura::getDadosPrefeituraBase();
     $iDiasRetroativosEmissaoNota = $oParametrosPrefeitura->getNotaRetroativa();
     $oDataCorrente = new DateTime();
     $oUltimaGuia = Contribuinte_Model_Guia::getUltimaGuiaNota($oContribuinte);
     $uDataUltimaNota = Contribuinte_Model_Nota::getUltimaNotaEmitidaByContribuinte($oContribuinte->getContribuintes());
     if ($uDataUltimaNota != NULL) {
         $oDiff = $oDataCorrente->diff(new DateTime($uDataUltimaNota), TRUE);
         $iMaxNota = $oDiff->days < $iDiasRetroativosEmissaoNota ? $oDiff->days : $iDiasRetroativosEmissaoNota;
     }
     if (!empty($oUltimaGuia)) {
         $iMes = $oUltimaGuia->getMesComp();
         $iAno = $oUltimaGuia->getAnoComp();
         if ($oUltimaGuia->getMesComp() + 1 > 12) {
             $iMes = 1;
         }
         $iMes = str_pad($iMes, 2, '0', STR_PAD_LEFT);
         $uDataUltimoDiaCompetencia = new Zend_Date("01/{$iMes}/{$iAno}");
         $uDataUltimoDiaCompetencia->sub(-1, Zend_date::MONTH);
         $oDiff = $oDataCorrente->diff(new DateTime($uDataUltimoDiaCompetencia->get('Y-M-d')), TRUE);
         $iMaxGuia = $oDiff->days < $iDiasRetroativosEmissaoNota ? $oDiff->days : $iDiasRetroativosEmissaoNota;
     }
     if ($iMaxNota > $iMaxGuia && $iMaxGuia > 0) {
         $iDiasRetroativosEmissaoNota = $iMaxGuia;
     } else {
         if ($iMaxNota > 0) {
             $iDiasRetroativosEmissaoNota = $iMaxNota;
         } else {
             if (!$iDiasRetroativosEmissaoNota || $iMaxNota == 0) {
                 $iDiasRetroativosEmissaoNota = 0;
             }
         }
     }
     $oDataCorrente = new DateTime();
     $oDataCorrente = $oDataCorrente->sub(date_interval_create_from_date_string("{$iDiasRetroativosEmissaoNota} days"));
     $oForm = new Contribuinte_Form_Nota($sCodigoVerificacao, $oDataCorrente);
     if ($oContribuinte !== NULL) {
         $oParametros = Contribuinte_Model_ParametroContribuinte::getById($oContribuinte->getIdUsuarioContribuinte());
         if ($oParametros instanceof Contribuinte_Model_ParametroContribuinte) {
             $oForm->preencheParametros($oParametros);
         }
     }
     return $oForm;
 }
 /**
  * Instancia o formulario de emissão de RPS
  *
  * @param string                                  $sCodigoVerificacao Código de Verificação
  * @param Contribuinte_Model_ContribuinteAbstract $oContribuinte      Dados do contribuinte
  * @return Contribuinte_Form_Nota
  */
 private function formNota($sCodigoVerificacao, Contribuinte_Model_ContribuinteAbstract $oContribuinte = NULL)
 {
     // Seta o contribuinte da sessão se não for enviado por parâmetro
     $oContribuinte = $oContribuinte ? $oContribuinte : $this->_session->contribuinte;
     $iIdContribuinte = $oContribuinte->getIdUsuarioContribuinte();
     $maxNota = 0;
     $maxGuia = 0;
     $aListaIdContribuinte = $oContribuinte->getContribuintes();
     // Calcula quantos dias no passado a nota pode ser emtidida
     $oParametrosPrefeitura = Administrativo_Model_Prefeitura::getDadosPrefeituraBase();
     $max = $oParametrosPrefeitura->getNotaRetroativa();
     $oUltimaGuia = Contribuinte_Model_Guia::getUltimaGuiaNota($oContribuinte);
     $uDataUltimaNota = Contribuinte_Model_Nota::getUltimaNotaEmitidaByContribuinte($aListaIdContribuinte);
     $dia = new DateTime();
     if ($oUltimaGuia != NULL) {
         if ($oUltimaGuia->getMesComp() + 1 > 12) {
             $iMes = 1;
         } else {
             $iMes = $oUltimaGuia->getMesComp();
         }
         $uDataUltimoDiaCompetencia = new Zend_Date("01/{$iMes}/{$oUltimaGuia->getAnoComp()}");
         $uDataUltimoDiaCompetencia->sub(1, Zend_date::DAY);
         $diff = $dia->diff(new DateTime($uDataUltimoDiaCompetencia->get('YYYY-MM-dd')), TRUE);
         $maxGuia = $diff->d < $max ? $diff->d : $max;
     }
     if ($uDataUltimaNota != NULL) {
         $diff = $dia->diff(new DateTime($uDataUltimaNota), TRUE);
         $maxNota = $diff->d < $max ? $diff->d : $max;
     }
     if ($maxNota - $maxGuia < $maxGuia) {
         $max = $maxGuia - 1;
     } else {
         if ($maxNota > 0) {
             $max = $maxNota;
         } else {
             $max = 0;
         }
     }
     $dia = $dia->sub(new DateInterval('P' . $max . 'D'));
     $oForm = new Contribuinte_Form_Nota($sCodigoVerificacao, $dia, '/contribuinte/rps/index', TRUE);
     if ($oContribuinte !== NULL) {
         $oParametros = Contribuinte_Model_ParametroContribuinte::getById($iIdContribuinte);
         $oForm->preencheParametros($oParametros);
     }
     return $oForm;
 }
 /**
  * Retorna os dados da prefeitura
  *
  * @return mixed
  */
 public function getDadosPrefeitura()
 {
     try {
         $oPrefeitura = Administrativo_Model_Prefeitura::getDadosPrefeituraBase();
     } catch (Exception $oErro) {
         $oPrefeitura = NULL;
     }
     return $oPrefeitura;
 }
 /**
  * Página para autenticação de notas
  */
 public function autenticaAction()
 {
     // Desabilita o layout do sistema
     parent::noLayout();
     $sPrestadorCnpjCpf = parent::getParam('prestador_cnpjcpf');
     $sNumeroRps = parent::getParam('numero_rps');
     $sCodigoVerificacao = parent::getParam('codigo_verificacao');
     $sCodVer = parent::getParam('cod_ver');
     $sCpfCnpj = parent::getParam('cpfcnpj');
     if (!empty($sCodigoVerificacao) && !empty($sPrestadorCnpjCpf)) {
         $oNota = Contribuinte_Model_Nota::getByPrestadorAndCodigoVerificacao($sPrestadorCnpjCpf, $sCodigoVerificacao);
     } else {
         if (!empty($sCodVer) && !empty($sCpfCnpj)) {
             $oNota = Contribuinte_Model_Nota::getByPrestadorAndCodigoVerificacao($sCodVer, $sCpfCnpj);
         } else {
             $oNota = Contribuinte_Model_Nota::getByPrestadorAndNumeroRps($sPrestadorCnpjCpf, $sNumeroRps);
         }
     }
     $oPrefeitura = Administrativo_Model_Prefeitura::getDadosPrefeituraBase();
     $this->view->aDadosNota = Contribuinte_Model_Nota::getDadosEmissao($sCodigoVerificacao, $oNota, $oPrefeitura);
     $this->view->setBasePath(APPLICATION_PATH . '/modules/contribuinte/views/');
     $sHtml = $this->view->render("pdf/nota_modelo_{$oPrefeitura->getModeloImpressaoNfse()}.phtml");
     echo $sHtml;
 }
 /**
  * Salva os parametros da prefeitura [Json]
  */
 public function prefeituraSalvarNfseAction()
 {
     // Dados Request
     $aDados = $this->_getAllParams();
     // Formulario
     $oForm = new Administrativo_Form_ParametroPrefeituraNfse();
     $oForm->setModelosImpressao($oForm->modelo_impressao_nfse);
     $oForm->populate($aDados);
     // Valida o formulario
     if ($oForm->isValid($aDados)) {
         $oParametros = Administrativo_Model_Prefeitura::getDadosPrefeituraBase();
         $oParametros->persist($aDados);
         $aRetornoJson['status'] = TRUE;
         $aRetornoJson['success'] = $this->translate->_('Parâmetros configurados com sucesso.');
     } else {
         $aRetornoJson['status'] = FALSE;
         $aRetornoJson['fields'] = array_keys($oForm->getMessages());
         $aRetornoJson['error'][] = $this->translate->_('Preencha os dados corretamente.');
     }
     echo $this->getHelper('json')->sendJson($aRetornoJson);
 }
 /**
  * Método para persistir os dados do cadastro eventual [Json]
  *
  * @return void
  */
 public function salvarAction()
 {
     $aDados = $this->getAllParams();
     $oForm = new Administrativo_Form_CadastroPessoa();
     // Carrega a lista de cidade e seta os selecionados
     if (!empty($aDados['estado']) && !empty($aDados['cidade'])) {
         $oForm->carregarCidades($aDados['estado'], $aDados['cidade']);
     }
     // Se informado o bairro pelo combo, retira a validação do campo texto
     if (isset($aDados['cod_bairro']) && !empty($aDados['cod_bairro'])) {
         $oForm->getElement('bairro')->setRequired(FALSE);
         $oForm->carregarBairros($aDados['cidade']);
     }
     // Se informado o bairro pelo campo texto, retira a validação do combo
     if (isset($aDados['bairro']) && !empty($aDados['bairro'])) {
         $oForm->getElement('cod_bairro')->setRequired(FALSE);
     }
     // Se informado o bairro pelo combo, retira a validação do campo texto
     if (isset($aDados['cod_endereco']) && !empty($aDados['cod_endereco'])) {
         $oForm->getElement('endereco')->setRequired(FALSE);
         $oForm->carregarEnderecos($aDados['cod_endereco']);
     }
     // Se informado o bairro pelo campo texto, retira a validação do combo
     if (isset($aDados['endereco']) && !empty($aDados['endereco'])) {
         $oForm->getElement('cod_endereco')->setRequired(FALSE);
     }
     if ($aDados['id_perfil'] == 6) {
         $oForm->getElement('cnpjcpf')->removeDecorator('DBSeller_Validator_CpfCnpj');
         $oForm->getElement('cnpjcpf')->addValidator(new DBSeller_Validator_Cnpj());
     } else {
         $oForm->getElement('cnpjcpf')->addValidator(new DBSeller_Validator_CpfCnpj());
     }
     // Popula o formulario
     $oForm->populate($aDados);
     // Valida o formulario
     if ($oForm->isValid($aDados)) {
         // Recupera os parametros, limpando as máscaras com filters do form
         $aDados = $oForm->getValues();
         // Recupera as configurações do doctrine e inicia a transação
         $oDoctrine = Zend_Registry::get('em');
         $oDoctrine->getConnection()->beginTransaction();
         try {
             $aUsuarioEmail = Administrativo_Model_Usuario::getByAttribute('email', $aDados['email']);
             if (count($aUsuarioEmail) > 0) {
                 $sUrl = '<a href="' . $this->view->serverUrl('/auth/login/esqueci-minha-senha/') . '">Clique Aqui</a>';
                 $sMensagemErro = 'Já encontramos um cadastro com este email.<br>';
                 $sMensagemErro .= "Caso tenha esquecido sua senha. {$sUrl}";
                 throw new Exception($this->translate->_($sMensagemErro));
             }
             $aUsuarioSistema = Administrativo_Model_Usuario::getByAttribute('login', $aDados['cnpjcpf']);
             if (count($aUsuarioSistema) > 0) {
                 $sMensagemErro = 'Já encontramos um cadastro com essas informações.<br>';
                 $sMensagemErro .= 'Entre em contato com a prefeitura para maiores informações.';
                 throw new Exception($this->translate->_($sMensagemErro));
             }
             $sHash = NULL;
             $oParametosPrefeitura = Administrativo_Model_Prefeitura::getDadosPrefeituraBase();
             if (!$oParametosPrefeitura->getVerificaAutocadastro()) {
                 $sHash = hash('whirlpool', $aDados['cnpjcpf'] . time() . $aDados['email']);
                 $aDados['tipo_liberacao'] = Contribuinte_Model_CadastroPessoa::TIPO_LIBERACAO_USUARIO_CGM;
             }
             $aDados['hash'] = $sHash;
             $oCadastro = new Contribuinte_Model_CadastroPessoa();
             $oCadastro->setDadosEventual($aDados);
             $oCadastro->persist();
             if ($oParametosPrefeitura->getVerificaAutocadastro()) {
                 $sTextoEmail = $this->view->render('cadastro-eventual/email-aviso-fiscal.phtml');
                 $aUsuariosFiscais = Administrativo_Model_Usuario::getByAttribute('perfil', 5);
                 // Cria um array, mesmo quando for somente um objeto
                 if (is_object($aUsuariosFiscais)) {
                     $aUsuariosFiscais = array($aUsuariosFiscais);
                 }
                 if (is_array($aUsuariosFiscais)) {
                     foreach ($aUsuariosFiscais as $oUsuarioFiscal) {
                         // Envia email apenas para os fiscais habilitados
                         if ($oUsuarioFiscal->getHabilitado()) {
                             DBSeller_Helper_Mail_Mail::send($oUsuarioFiscal->getEmail(), $this->translate->_('ECidadeOnline2 - Solicitação de Contribuinte Eventual'), $sTextoEmail);
                         }
                     }
                 }
                 // Envio do email para o contribuinte, avisando da  espera do envio do email
                 $sTextoEmail = $this->view->render('cadastro-eventual/email-aviso-espera-liberacao-contribuinte.phtml');
                 DBSeller_Helper_Mail_Mail::send($aDados['email'], $this->translate->_('ECidadeOnline2 - Solicitação de Cadastro'), $sTextoEmail);
             } else {
                 //link base do sistema + caminho para geração de senha
                 $this->view->sLinkSenha = $this->view->serverUrl("/default/cadastro-eventual/verificacao/hash/{$sHash}");
                 $sTextoEmail = $this->view->render('cadastro-eventual/email-aviso-contribuinte.phtml');
                 $lEmail = DBSeller_Helper_Mail_Mail::send($aDados['email'], $this->translate->_('ECidadeOnline2 - Confirmação de Cadastro'), $sTextoEmail);
                 if (!$lEmail) {
                     throw new Exception($this->translate->_('Email não enviado. Favor contate o suporte da prefeitura.'));
                 }
             }
             $sMensagemErro = 'Cadastro efetuado com sucesso.<br>';
             $sMensagemErro .= 'Siga as instruções enviadas para o seu email para continuar o cadastro.';
             $aRetornoJson['status'] = TRUE;
             $aRetornoJson['url'] = $this->view->serverUrl();
             $aRetornoJson['success'] = $this->translate->_($sMensagemErro);
             $oDoctrine->getConnection()->commit();
         } catch (Exception $oErro) {
             $oDoctrine->getConnection()->rollback();
             $aRetornoJson['status'] = FALSE;
             $aRetornoJson['error'][] = $oErro->getMessage();
         }
     } else {
         $aRetornoJson['status'] = FALSE;
         $aRetornoJson['fields'] = array_keys($oForm->getMessages());
         $aRetornoJson['error'][] = $this->translate->_('Preencha os dados corretamente.');
     }
     // Retorna um json com mensagens de erro ou sucesso
     echo $this->getHelper('json')->sendJson($aRetornoJson);
 }
 private function cadastroForm($oCadastro)
 {
     $oForm = new Administrativo_Form_Cadastro(TRUE);
     $oForm->setAction($this->view->baseUrl('/administrativo/cadastro/editar'));
     $aDados = array('id' => $oCadastro->getId(), 'tipo' => $oCadastro->getTipo(), 'cpfcnpj' => $oCadastro->getCpfcnpj(), 'login' => $oCadastro->getLogin(), 'nome' => $oCadastro->getNome(), 'nome_fantasia' => $oCadastro->getNomeFantasia(), 'estado' => $oCadastro->getEstado(), 'cidade' => $oCadastro->getCidade(), 'cep' => $oCadastro->getCep(), 'cod_bairro' => $oCadastro->getCodBairro(), 'bairro' => $oCadastro->getBairro(), 'cod_endereco' => $oCadastro->getCodEndereco(), 'endereco' => $oCadastro->getEndereco(), 'numero' => $oCadastro->getNumero(), 'complemento' => $oCadastro->getComplemento(), 'telefone' => $oCadastro->getTelefone(), 'email' => $oCadastro->getEmail());
     $iCodigoIbge = Administrativo_Model_Prefeitura::getDadosPrefeituraBase()->getIbge();
     if ($iCodigoIbge == $aDados['cidade']) {
         $aDados['bairro'] = NULL;
         $aDados['endereco'] = NULL;
         $elmBairro = $oForm->getElement('bairro');
         $elmBairro->clearErrorMessages();
         $elmBairro->clearValidators();
         $elmBairro->setRequired(FALSE);
         $elmEndereco = $oForm->getElement('endereco');
         $elmEndereco->clearErrorMessages();
         $elmEndereco->clearValidators();
         $elmEndereco->setRequired(FALSE);
     } else {
         $aDados['cod_bairro'] = NULL;
         $aDados['cod_endereco'] = NULL;
         $elmBairro = $oForm->getElement('cod_bairro');
         $elmBairro->clearErrorMessages();
         $elmBairro->clearValidators();
         $elmBairro->setRequired(FALSE);
         $elmEndereco = $oForm->getElement('cod_endereco');
         $elmEndereco->clearErrorMessages();
         $elmEndereco->clearValidators();
         $elmEndereco->setRequired(FALSE);
     }
     $oForm->preenche($aDados);
     return $oForm;
 }
 public function preenche($aDados = NULL)
 {
     // Preenche campo cidade pelo estado
     if (isset($aDados['estado'])) {
         $aCidades = Default_Model_Cadendermunicipio::getByEstado($aDados['estado']);
         $elmCidade = $this->getElement('cidade');
         if (is_array($aCidades)) {
             $elmCidade->setMultiOptions($aCidades);
         }
     }
     // Exibe/Oculta campos de bairro e endereco quando o codigo da cidade da prefeitura for igual ao escolhido
     $elmBairroTexto = $this->getElement('cod_bairro');
     $elmBairroTexto->setAttrib('class', 'campo-oculto');
     $elmEndTexto = $this->getElement('cod_endereco');
     $elmEndTexto->setAttrib('class', 'campo-oculto');
     // Classe "campo-oculto" no javascript
     // Codigo da cidade da prefeitura
     $iCodigoIbge = Administrativo_Model_Prefeitura::getDadosPrefeituraBase()->getIbge();
     if (isset($aDados['cidade'])) {
         if ($iCodigoIbge == $aDados['cidade']) {
             $aDados['bairro'] = NULL;
             $elmBairroTexto = $this->getElement('bairro');
             $elmBairroTexto->setAttrib('class', 'campo-oculto');
             $elmBairroTexto->clearValidators();
             $elmBairroTexto->setRequired(FALSE);
             $elmBairroCombo = $this->getElement('cod_bairro');
             $elmBairroCombo->setAttrib('class', '');
             $aBairros = Default_Model_Cadenderbairro::getBairros();
             if (is_array($aBairros)) {
                 $elmBairroCombo->setMultiOptions($aBairros);
             }
             $aDados['endereco'] = NULL;
             $elmEndTexto = $this->getElement('endereco');
             $elmEndTexto->setAttrib('class', 'campo-oculto');
             $elmEndTexto->clearValidators();
             $elmEndTexto->setRequired(FALSE);
             $elmEndCombo = $this->getElement('cod_endereco');
             $elmEndCombo->setAttrib('class', '');
             $aEnderecos = Default_Model_Cadenderrua::getRuas();
             if (is_array($aEnderecos)) {
                 $elmEndCombo->setMultiOptions($aEnderecos);
             }
         }
     }
     $this->populate($aDados);
     return $this;
 }