/** * Geração do relatório de empresas omissas */ public function empresasOmissasGerarAction() { parent::noLayout(); $aValidacaoFormulario = self::validarFormulario(Fiscal_Form_Relatorio2::TIPO6); if (is_array($aValidacaoFormulario)) { exit($this->getHelper('json')->sendJson($aValidacaoFormulario)); } try { // Parâmetros do formulário $sOrdenacaoCampo = $this->getRequest()->getParam('ordenacao'); $sOrdenacaoDirecao = $this->getRequest()->getParam('ordem'); $sCompetenciaInicial = $this->getRequest()->getParam('data_competencia_inicial'); $sCompetenciaFinal = $this->getRequest()->getParam('data_competencia_final'); // Separa os meses e anos $iCompetenciaInicialMes = intval(substr($sCompetenciaInicial, 0, 2)); $iCompetenciaFinalMes = intval(substr($sCompetenciaFinal, 0, 2)); $iCompetenciaInicialAno = intval(substr($sCompetenciaInicial, -4)); $iCompetenciaFinalAno = intval(substr($sCompetenciaFinal, -4)); $sNomeArquivo = 'relatorio_empresas_omissas_' . date('YmdHis') . '.pdf'; $aDescricaoFiltros = array('inscricao_municipal' => 'Inscrição Municipal', 'nome' => 'Nome', 'asc' => 'Crescente', 'desc' => 'Decrescente'); $oPdf = new Fiscal_Model_Relatoriopdfmodelo1('L'); $oPdf->Open(APPLICATION_PATH . "/../public/tmp/{$sNomeArquivo}"); $oPdf->setLinhaFiltro('Relatório de Empresas Omissas'); $oPdf->setLinhaFiltro(''); $oPdf->setLinhaFiltro("FILTRO: Competência de {$sCompetenciaInicial} até {$sCompetenciaFinal}"); $oPdf->setLinhaFiltro("ORDEM: {$aDescricaoFiltros[$sOrdenacaoCampo]} ({$aDescricaoFiltros[$sOrdenacaoDirecao]})"); $oPdf->carregaDados(); $aUsuarioContribuintes = Administrativo_Model_UsuarioContribuinte::getPrestadores(); $aInscricoesMunicipaisContribuintes = array(); // Verifica se existem usuários contribuinte cadastrados if (count($aUsuarioContribuintes) == 0) { throw new Exception($this->translate->_('Não existem contribuintes cadastrados no sistema.')); } $aDeclaracaoIsentoValidos = array(); 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; } // Varre a lista de usuários contribuintes, verificando quem tem movimentações foreach ($aUsuarioContribuintes as $oContribuinte) { // Verifica se tem movimentação $sSql = "SELECT 1 AS existe_movimento\n FROM view_nota_mais_dms\n WHERE (dms_operacao = 's' OR dms_operacao IS NULL) AND\n prestador_cnpjcpf = '{$oContribuinte->getCnpjCpf()}' AND\n documento_competencia_ano = {$iAnoLoop} AND\n documento_competencia_mes = {$iMesLoop}"; $oStatement = $this->oConexao->prepare($sSql); $oStatement->execute(); // Adiciona na lista somente os contribuinte sem movimentação no sistema if ($oStatement->rowCount() == 0) { // Informações complementares do contribuinte $oDadosContribuinteComplemento = Administrativo_Model_UsuarioContribuinteComplemento::getById($oContribuinte->getCnpjCpf()); // Variaveis do contribuinte $iInscricaoMunicipal = $oContribuinte->getIm(); $sRazaoSocial = $oDadosContribuinteComplemento->getRazaoSocial(); $sEndereco = $oDadosContribuinteComplemento->getEnderecoDescricao(); if (strlen(trim($iInscricaoMunicipal)) > 0) { // Dados dos contribuintes $aDeclaracaoIsentoValidos[$iAnoLoop][$iMesLoop][$iInscricaoMunicipal] = array('inscricao_municipal' => $iInscricaoMunicipal, 'nome' => DBSeller_Helper_String_Format::wordsCap($sRazaoSocial), 'endereco' => DBSeller_Helper_String_Format::wordsCap($sEndereco), 'telefone' => $oDadosContribuinteComplemento->getContatoTelefone(), 'competencia_ano' => $iAnoLoop, 'competencia_mes' => $iMesLoop); } // Lista para consulta no webservice $aInscricoesMunicipaisContribuintes[$iInscricaoMunicipal] = $iInscricaoMunicipal; } } } } // Mosta a lista de inscrições do contribuintes para verificação no webservice (separados por vírgula) $sInscricoesMunicipaisContribuintes = implode("','", $aInscricoesMunicipaisContribuintes); // Retorna apenas os contribuintes com declaração de insento $aDeclaracaoIsento = Contribuinte_Model_Competencia::getDeclaracaoSemMovimentoPorContribuintes($sInscricoesMunicipaisContribuintes); // Limpa as inscricoes com declaração de isenção foreach ($aDeclaracaoIsento as $oDeclaracaoIsento) { unset($aDeclaracaoIsentoValidos[$oDeclaracaoIsento->ano][$oDeclaracaoIsento->mes][$oDeclaracaoIsento->inscricao_municipal]); // Limpa dados do mes, caso não possua registros if (isset($aDeclaracaoIsentoValidos[$oDeclaracaoIsento->ano][$oDeclaracaoIsento->mes]) && count($aDeclaracaoIsentoValidos[$oDeclaracaoIsento->ano][$oDeclaracaoIsento->mes]) == 0) { unset($aDeclaracaoIsentoValidos[$oDeclaracaoIsento->ano][$oDeclaracaoIsento->mes]); } // Limpa dados do ano, caso não possua registros if (isset($aDeclaracaoIsentoValidos[$oDeclaracaoIsento->ano]) && count($aDeclaracaoIsentoValidos[$oDeclaracaoIsento->ano]) == 0) { unset($aDeclaracaoIsentoValidos[$oDeclaracaoIsento->ano]); } } if (count($aDeclaracaoIsentoValidos) == 0) { $sMensagemErro = 'Nenhuma informação foi encontrada neste período para geração do relatório.'; throw new Exception($this->translate->_($sMensagemErro)); } // Varre os anos 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; } // Ordena o array pelo índice informado if (isset($aDeclaracaoIsentoValidos[$iAnoLoop][$iMesLoop])) { // Formata para mês por extenso $sMesExtenso = DBSeller_Helper_Date_Date::mesExtenso($iMesLoop); $oPdf->SetFont('Arial', 'B', 8); $oPdf->Cell(20, 5, utf8_decode('Competência:')); $oPdf->SetFont('Arial', NULL, 8); $oPdf->Cell(0, 5, utf8_decode("{$sMesExtenso}/{$iAnoLoop}")); $oPdf->Ln(5); $oPdf->SetFont('Arial', 'B', 8); $oPdf->Cell(28, 5, utf8_decode('Inscrição Municipal'), 1); $oPdf->Cell(100, 5, utf8_decode('Nome'), 1); $oPdf->Cell(117, 5, utf8_decode('Endereço'), 1); $oPdf->Cell(32, 5, utf8_decode('Telefone'), 1); $oPdf->Ln(5); $aDeclaracaoIsentoOrdenado = DBSeller_Helper_Array_Abstract::ordenarPorIndice($aDeclaracaoIsentoValidos[$iAnoLoop][$iMesLoop], $sOrdenacaoCampo, $sOrdenacaoDirecao, TRUE); $oPdf->SetFont('Arial', NULL, 8); foreach ($aDeclaracaoIsentoOrdenado as $oDeclaracaoIsentoOrdenado) { $oPdf->Cell(28, 5, utf8_decode($oDeclaracaoIsentoOrdenado['inscricao_municipal']), 1); $oPdf->Cell(100, 5, utf8_decode($oDeclaracaoIsentoOrdenado['nome']), 1); $oPdf->Cell(117, 5, utf8_decode($oDeclaracaoIsentoOrdenado['endereco']), 1); $oPdf->Cell(32, 5, utf8_decode($oDeclaracaoIsentoOrdenado['telefone']), 1); $oPdf->Ln(5); } $oPdf->Ln(5); $oPdf->proximaPagina(10); } } } $oPdf->Output(); $aRetornoJson['status'] = TRUE; $aRetornoJson['url'] = $this->view->baseUrl("tmp/{$sNomeArquivo}"); $aRetornoJson['success'] = $this->translate->_('Arquivo importado com sucesso.'); } catch (Exception $oErro) { $aRetornoJson['status'] = FALSE; $aRetornoJson['error'][] = $oErro->getMessage(); } echo $this->getHelper('json')->sendJson($aRetornoJson); }
/** * Salva os dados complementares do usuário contribuinte * * @param int $iInscricaoMunicipal * @return bool */ private function salvarDadosComplementaresUsuarioContribuinte($iInscricaoMunicipal) { try { $oContribuinte = Contribuinte_Model_Contribuinte::getByInscricaoMunicipal($iInscricaoMunicipal); $oContribuinteComplemento = Administrativo_Model_UsuarioContribuinteComplemento::getById($oContribuinte->getCgcCpf()); $oContribuinteComplemento->setInscricaoMunicipal($oContribuinte->getInscricaoMunicipal()); $oContribuinteComplemento->setInscricaoEstadual($oContribuinte->getInscricaoEstadual()); $oContribuinteComplemento->setCnpjcpf($oContribuinte->getCgcCpf()); $oContribuinteComplemento->setRazaoSocial($oContribuinte->getRazaoSocial() ?: $oContribuinte->getNome()); $oContribuinteComplemento->setNomeFantasia($oContribuinte->getNomeFantasia()); $oContribuinteComplemento->setEnderecoPaisCodigo(); $oContribuinteComplemento->setEnderecoUf($oContribuinte->getEstado()); $oContribuinteComplemento->setEnderecoMunicipioCodigo($oContribuinte->getCodigoIbgeMunicipio()); $oContribuinteComplemento->setEnderecoDescricao($oContribuinte->getDescricaoLogradouro()); $oContribuinteComplemento->setEnderecoBairro($oContribuinte->getLogradouroBairro()); $oContribuinteComplemento->setEnderecoNumero($oContribuinte->getLogradouroNumero()); $oContribuinteComplemento->setEnderecoComplemento($oContribuinte->getLogradouroComplemento()); $oContribuinteComplemento->setEnderecoCep($oContribuinte->getCep()); $oContribuinteComplemento->setContatoEmail($oContribuinte->getEmail()); $oContribuinteComplemento->setContatoTelefone($oContribuinte->getTelefone()); $oContribuinteComplemento->persist(); return TRUE; } catch (Exception $oErro) { return FALSE; } }