/** * @param Contribuinte_Model_Contribuinte $oContribuinte * @param $iAno * @param $iMes * @param null $fAliquota * @return object */ public static function getTotalReceitasCompetencia(Contribuinte_Model_Contribuinte $oContribuinte, $iAno, $iMes, $fAliquota = NULL) { $aReceitasGuia = array(); $aParametros = array('contribuinte' => $oContribuinte->getContribuintes(), 'competencia_inicial' => "{$iAno}{$iMes}"); $aImportacaoDesif = Contribuinte_Model_ImportacaoDesif::getByAttributes($aParametros); /** * Verifica se retornou uma importacao desif */ if (isset($aImportacaoDesif[0])) { $oImportacaoDesif = $aImportacaoDesif[0]->getEntity(); $aReceitasGuia = Contribuinte_Model_ImportacaoDesif::getTotalReceitasGuia($oImportacaoDesif->getId(), TRUE, $fAliquota); } return (object) $aReceitasGuia; }
/** * 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()}"); } }