/** * Tela com a lista de DMS de serviços tomados */ public function emissaoManualEntradaListaDmsAction() { // Parametros request $iMes = $this->getRequest()->getParam('mes'); $iAno = $this->getRequest()->getParam('ano'); $oDms = new Contribuinte_Model_Dms(); $aDms = $oDms->getCompetenciaByCpfCnpj($this->oContribuinte->getCgcCpf(), $iMes, $iAno, $oDms::ENTRADA); if (count($aDms) > 0) { // Varre a lista de DMS foreach ($aDms as $oDms) { $fValorDms = 0; $sStatus = $oDms->getStatus(); if ($oDms->getStatus() == 'emitida') { $iNumpre = Contribuinte_Model_DmsNota::getNumpreByIdDms($oDms->getId()); $sStatusEcidade = Contribuinte_Model_GuiaEcidade::atualizaSituacao($iNumpre, $iMes); if ($sStatusEcidade == 'ABERTO') { $sStatus = 'Emitida Guia'; } } foreach ($oDms->getDmsNotas() as $oNota) { $fValorDms += $oNota->getServicoValorImposto(); } // Formata os dados $sMesPorExtenso = DBSeller_Helper_Date_Date::mesExtenso($oDms->getMesCompetencia()); // Lista de DMS para view $oDmsView = new stdClass(); $oDmsView->id = $oDms->getId(); $oDmsView->data_operacao = $oDms->getDataOperacao()->format('d/m/Y'); $oDmsView->competencia = "{$sMesPorExtenso}/{$oDms->getAnoCompetencia()}"; $oDmsView->fechado = $oDms->getStatus() == 'fechado'; $oDmsView->status_guia = DBSeller_Helper_String_Format::wordsCap($sStatus); $oDmsView->valor_imposto = DBSeller_Helper_Number_Format::toMoney($fValorDms, 2, 'R$ '); $aResultado[] = $oDmsView; } } // Competencia $oCompetencia = new stdClass(); $oCompetencia->mes = $iMes; $oCompetencia->ano = $iAno; // Dados da view $this->view->aDms = isset($aResultado) ? $aResultado : array(); $this->view->competencia = $oCompetencia; }
/** * 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); }
/** * Define os dados do contribuinte * * @param Contribuinte_Model_Contribuinte $oContribuinte * @param $iMesCompetencia * @param $iAnoCompetencia * @param bool $lLivroFiscal */ public function setDadosContribuinte(Contribuinte_Model_Contribuinte $oContribuinte, $iMesCompetencia, $iAnoCompetencia, $lLivroFiscal = TRUE) { if (!$lLivroFiscal) { $this->AddPage(); } // Mês e ano da competnência por extenso $sCompetencia = DBSeller_Helper_Date_Date::mesExtenso($iMesCompetencia) . "/{$iAnoCompetencia}"; $sCompetencia = utf8_decode($sCompetencia); // Mostra os campos referentes à guia somente para contribuintes NFSe if ($oContribuinte->getTipoEmissao() == Contribuinte_Model_Contribuinte::TIPO_EMISSAO_NOTA || !$lLivroFiscal) { // Situação da Guia $sDataFechamentoGuia = '-'; $sSituacaoGuia = 'Em aberto'; $oGuia = new Contribuinte_Model_Guia(); $aGuia = $oGuia->getByCompetenciaAndContribuinte($iAnoCompetencia, $iMesCompetencia, $oContribuinte, Contribuinte_Model_Guia::$PRESTADOR); if (count($aGuia) > 0) { $oGuia = $aGuia[0]->getEntity(); $sDataFechamentoGuia = $oGuia->getDataFechamento()->format('d/m/Y'); $sSituacaoGuia = Contribuinte_Model_Guia::$SITUACAO[$oGuia->getSituacao()]; } $aLarguraCelulas = array(57, 55, 55, 55, 55, 45, 50); $this->SetFont('Arial', 'B', 8); if ($lLivroFiscal) { // Mostra CGM ou Inscrição Municipal if ($oContribuinte->getCgm()) { $this->Cell($aLarguraCelulas[0], 5, utf8_decode('CGM / Inscrição Municipal:'), 1); } else { $this->Cell($aLarguraCelulas[0], 5, utf8_decode('Inscrição Municipal:'), 1); } $this->Cell($aLarguraCelulas[1], 5, utf8_decode('CPF / CNPJ:'), 1); $this->Cell($aLarguraCelulas[2], 5, utf8_decode('Mês Referência:'), 1); $this->Cell($aLarguraCelulas[3], 5, utf8_decode('Situação:'), 1); $this->Cell($aLarguraCelulas[4], 5, utf8_decode('Encerramento:'), 1); $this->Ln(); $this->SetFont('Arial', NULL, 8); // Mostra CGM ou Inscrição Municipal if ($oContribuinte->getCgm()) { $this->Cell($aLarguraCelulas[0], 5, $oContribuinte->getCgm(), 1); } else { $this->Cell($aLarguraCelulas[0], 5, $oContribuinte->getInscricaoMunicipal(), 1); } $sCpfCnpjContribuinte = DBSeller_Helper_Number_Format::maskCPF_CNPJ($oContribuinte->getCgcCpf()); $this->Cell($aLarguraCelulas[1], 5, $sCpfCnpjContribuinte, 1); $this->Cell($aLarguraCelulas[2], 5, $sCompetencia, 1); $this->Cell($aLarguraCelulas[3], 5, $sSituacaoGuia, 1); $this->Cell($aLarguraCelulas[4], 5, $sDataFechamentoGuia, 1); $this->Ln(6); } else { // Mostra CGM ou Inscrição Municipal if ($oContribuinte->getCgm()) { $this->Cell($aLarguraCelulas[1], 5, utf8_decode('CGM / Inscrição Municipal:'), 1); } else { $this->Cell($aLarguraCelulas[1], 5, utf8_decode('Inscrição Municipal:'), 1); } $this->Cell($aLarguraCelulas[6], 5, utf8_decode('CPF / CNPJ:'), 1); $this->Cell($aLarguraCelulas[5], 5, utf8_decode('Competencia Inicial:'), 1); $this->Cell($aLarguraCelulas[5], 5, utf8_decode('Competencia Final:'), 1); $this->Cell($aLarguraCelulas[5], 5, utf8_decode('Situação:'), 1); $this->Cell(0, 5, utf8_decode('Encerramento:'), 1); $this->Ln(); $this->SetFont('Arial', NULL, 8); // Mostra CGM ou Inscrição Municipal if ($oContribuinte->getCgm()) { $this->Cell($aLarguraCelulas[1], 5, $oContribuinte->getCgm(), 1); } else { $this->Cell($aLarguraCelulas[1], 5, $oContribuinte->getInscricaoMunicipal(), 1); } $sCpfCnpjContribuinte = DBSeller_Helper_Number_Format::maskCPF_CNPJ($oContribuinte->getCgcCpf()); $sCompetenciaInicial = $iMesCompetencia['inicial'] . '/' . $iAnoCompetencia['inicial']; $sCompetenciaFinal = $iMesCompetencia['final'] . '/' . $iAnoCompetencia['final']; $this->Cell($aLarguraCelulas[6], 5, $sCpfCnpjContribuinte, 1); $this->Cell($aLarguraCelulas[5], 5, $sCompetenciaInicial, 1); $this->Cell($aLarguraCelulas[5], 5, $sCompetenciaFinal, 1); $this->Cell($aLarguraCelulas[5], 5, $sSituacaoGuia, 1); $this->Cell(0, 5, $sDataFechamentoGuia, 1); $this->Ln(6); } } else { $aLarguraCelulas = array(93, 92, 92); $this->SetFont('Arial', 'B', 8); // Mostra CGM ou Inscrição Municipal if ($oContribuinte->getCgm()) { $this->Cell($aLarguraCelulas[0], 5, utf8_decode('CGM / Inscrição Municipal:'), 1); } else { $this->Cell($aLarguraCelulas[0], 5, utf8_decode('Inscrição Municipal:'), 1); } $this->Cell($aLarguraCelulas[1], 5, utf8_decode('CPF / CNPJ:'), 1); $this->Cell($aLarguraCelulas[2], 5, utf8_decode('Mês Referência:'), 1); $this->Ln(); $this->SetFont('Arial', NULL, 8); // Mostra CGM ou Inscrição Municipal if ($oContribuinte->getCgm()) { $this->Cell($aLarguraCelulas[0], 5, $oContribuinte->getCgm(), 1); } else { $this->Cell($aLarguraCelulas[0], 5, $oContribuinte->getInscricaoMunicipal(), 1); } $this->Cell($aLarguraCelulas[1], 5, DBSeller_Helper_Number_Format::maskCPF_CNPJ($oContribuinte->getCgcCpf()), 1); $this->Cell($aLarguraCelulas[2], 5, $sCompetencia, 1); $this->Ln(6); } $this->SetFont('Arial', 'B', 8); $this->Cell(0, 5, utf8_decode('Razão Social:'), 1); $this->Ln(); $this->SetFont('Arial', NULL, 8); $this->Cell(0, 5, utf8_decode($oContribuinte->getNome()), 1); $this->Ln(6); $this->SetFont('Arial', 'B', 8); $this->Cell(242, 5, utf8_decode('Endereço:'), 1); $this->Cell(35, 5, utf8_decode('Número:'), 1); $this->Ln(); $this->SetFont('Arial', NULL, 8); $this->Cell(242, 5, utf8_decode($oContribuinte->getDescricaoLogradouro()), 1); $this->Cell(35, 5, utf8_decode($oContribuinte->getLogradouroNumero()), 1); $this->Ln(6); $this->SetFont('Arial', 'B', 8); $this->Cell(90, 5, utf8_decode('Complemento:'), 1); $this->Cell(80, 5, utf8_decode('Bairro:'), 1); $this->Cell(72, 5, utf8_decode('Cidade:'), 1); $this->Cell(35, 5, utf8_decode('Estado:'), 1); $this->Ln(); $this->SetFont('Arial', NULL, 8); $this->Cell(90, 5, utf8_decode($oContribuinte->getLogradouroComplemento()), 1); $this->Cell(80, 5, utf8_decode($oContribuinte->getLogradouroBairro()), 1); $this->Cell(72, 5, utf8_decode($oContribuinte->getDescricaoMunicipio()), 1); $this->Cell(35, 5, utf8_decode($oContribuinte->getEstado()), 1); $this->Ln(6); $oDataAtual = new DateTime(); $sEnderecoIp = $_SERVER['REMOTE_ADDR']; $this->SetFont('Arial', 'B', 8); $this->Cell(139, 5, utf8_decode("Endereço IP: {$sEnderecoIp}"), 1); $this->Cell(138, 5, utf8_decode("Data da impressão: {$oDataAtual->format('d/m/Y H:i:s')}"), 1); $this->Ln(7); }