/** * Emite e gera as guias conforme a receita e aliquota informadas */ public function emitirGuiaAction() { parent::noTemplate(); $aParametros = $this->getAllParams(); try { $iIdImportacao = $aParametros['id']; $fAliquota = $aParametros['aliq_issqn'] ? $aParametros['aliq_issqn'] : NULL; $oContribuinte = $this->_session->contribuinte; $aReceitaDesif = Contribuinte_Model_ImportacaoDesif::getTotalReceitaGuiaDesif($oContribuinte, $iIdImportacao, $fAliquota); $sTotalReceita = DBSeller_Helper_Number_Format::toMoney($aReceitaDesif->total_receita, 2, 'R$ '); $sTotalIss = DBSeller_Helper_Number_Format::toMoney($aReceitaDesif->total_iss, 2, 'R$ '); $oFormEmitirGuia = new Contribuinte_Form_GuiaCompetencia(); $oFormEmitirGuia->setName('form-emitir-guia'); $oFormEmitirGuia->setAction('/contribuinte/guia-desif/emitir-guia'); $oFormEmitirGuia->getElement('ano')->setValue($aReceitaDesif->ano_competencia); $oFormEmitirGuia->getElement('mes')->setValue($aReceitaDesif->mes_competencia); $oFormEmitirGuia->getElement('aliq_issqn')->setValue($fAliquota); $oFormEmitirGuia->getElement('total_servico')->setValue($sTotalReceita); $oFormEmitirGuia->getElement('total_iss')->setValue($sTotalIss); $oFormEmitirGuia->getElement('data_guia')->setValue(date('d/m/Y')); $this->view->form = $oFormEmitirGuia; // Verifica se for enviado os dados via $_POST if ($this->getRequest()->isPost()) { // Formata a data de pagamento da guia $sDataInvertida = DBSeller_Helper_Date_Date::invertDate($this->getRequest()->getParam('data_guia')); $oDataPagamento = new DateTime($sDataInvertida); // Gera a guia e emite o PDF da geração $oGuia = Contribuinte_Model_GuiaEcidade::gerarGuiaDesif($oContribuinte, $aParametros['ano'], $aParametros['mes'], $oDataPagamento, $fAliquota, true); $this->view->arquivo = $oGuia->arquivo_guia; } } catch (Exception $oErro) { $this->view->mensagem_erro = $oErro->getMessage(); } }
/** * Atualiza a situação das guias conforme uma coleção de numpre e numpar informados * * @param array $aGuias * @return array * @throws Exception */ public static function atualizaSituacaoGuias(array $aGuias) { $aResultado = array(); // Agrupa os Numpres e Numpars do Contribuinte foreach ($aGuias as $oGuia) { $sChaveNumpreNumpar = "{$oGuia->getNumpre()}/{$oGuia->getMesComp()}"; $aDadosSituacao[$sChaveNumpreNumpar]['iNumpre'] = $oGuia->getNumpre(); $aDadosSituacao[$sChaveNumpreNumpar]['iNumpar'] = $oGuia->getMesComp(); } if (isset($aDadosSituacao)) { $aSitucao = Contribuinte_Model_GuiaEcidade::pesquisaSituacaoGuias($aDadosSituacao); // Altera a situacao da guia conforme as situacoes encontradas na pesquisa foreach ($aGuias as $oGuia) { $sChaveNumpreNumpar = "{$oGuia->getNumpre()}/{$oGuia->getMesComp()}"; $sSituacao = $aSitucao[$sChaveNumpreNumpar]; if (!isset(self::$WS_NFSE_SITUACAO[$sSituacao])) { throw new Exception("Situação de débito {$sSituacao} não mapeada para o modelo Guia"); } $oGuia->setSituacao(self::$WS_NFSE_SITUACAO[$sSituacao]); $oComparaData = new Zend_Date("01-{$oGuia->getMesComp()}-{$oGuia->getAnoComp()}"); $oComparaData->add(1, 'MM'); // Verifica se a guia de débito foi cancelada no E-cidade remove o vinculo da guia, caso seja NFSE e não // estiver um mês retroativo apenas exibe como "Quitada Manualmente" if ($oComparaData->compare(new Zend_Date(), 'MM/yyyy') == 0 && $oGuia->getTipoDocumentoOrigem() == self::$DOCUMENTO_ORIGEM_NFSE || $oGuia->getTipoDocumentoOrigem() == self::$DOCUMENTO_ORIGEM_DMS) { if (!empty($sSituacao) && $sSituacao == 'CANCELADO') { $aAtributos = array('set' => array('guia' => NULL), 'where' => array('guia' => $oGuia->getEntity())); Contribuinte_Model_DesifContaGuia::update($aAtributos['set'], $aAtributos['where']); Contribuinte_Model_Guia::removeGuiaCancelada($oGuia); } else { $aResultado[] = $oGuia; } } else { $aResultado[] = $oGuia; } } } return $aResultado; }
/** * Gerar as guias em aberto dos contribuintes */ public function gerarAction() { parent::noLayout(); $aParametros = $this->getRequest()->getParams(); /** * Parametros de retorno do AJAX */ $aRetornoJson = array('success' => FALSE, 'message' => NULL); try { /** * Verifica competência informada */ if (empty($aParametros['mes_competencia']) || empty($aParametros['ano_competencia'])) { throw new Exception('Informe a competência.'); } $iMesCompetencia = str_pad($aParametros['mes_competencia'], 2, '0', STR_PAD_LEFT); $iAnoCompetencia = $aParametros['ano_competencia']; $iMesCorrente = date('m'); $iAnoCorrente = date('Y'); /** * Verifica mês e ano corrente */ if ($iMesCompetencia >= $iMesCorrente && $iAnoCompetencia == $iAnoCorrente) { throw new Exception('Competência corrente não é gerado guia. <br />Selecione os meses anteriores ao corrente.'); } $oDataPagamento = new DateTime(); $aGuiasCompetencia = Contribuinte_Model_Competencia::getByGuiasContribuinteAndCompetencia($iMesCompetencia, $iAnoCompetencia); /** * Verifica se encontro alguma guia em aberto */ if (count($aGuiasCompetencia) == 0) { throw new Exception('Nenhum registro encontrado para a competência selecionada.'); } foreach ($aGuiasCompetencia as $oGuiaCompetencia) { $oContribuinte = $oGuiaCompetencia->getContribuinte(); $iMesCompetencia = $oGuiaCompetencia->getMesComp(); $iAnoCompetencia = $oGuiaCompetencia->getAnoComp(); $aNotas = $oGuiaCompetencia->getNotas(); if (empty($iMesCompetencia)) { throw new Exception("O mês de competência do contribuinte {$oContribuinte->getInscricaoMunicipal()} não foi informado."); } if (empty($iAnoCompetencia)) { throw new Exception("O ano de competência do contribuinte {$oContribuinte->getInscricaoMunicipal()} não foi informado."); } if (count($aNotas) == 0) { throw new Exception("Não existem notas na competência do contribuinte {$oContribuinte->getInscricaoMunicipal()} não foi informado."); } $aRetornoGuiaEcidade[] = Contribuinte_Model_GuiaEcidade::gerarGuiaNFSE($oContribuinte, $oGuiaCompetencia, $oDataPagamento, FALSE); } $aRetornoJson['success'] = TRUE; $aRetornoJson['message'] = "Guias de competência {$iMesCompetencia}/{$iAnoCompetencia} geradas com sucesso."; /** * Para uso como debug de retorno do e-cidade */ //$aRetornoJson['retorno_ecidade'] = $aRetornoGuiaEcidade; } catch (Exception $oErro) { $aRetornoJson['message'] = $oErro->getMessage(); } echo $this->getHelper('json')->sendJson($aRetornoJson); }
/** * Gera a guia da DMS */ public function dmsGerarAction() { $sDataPagamento = $this->_getParam('data_pagamento', NULL); $iCodigoDms = $this->_getParam('id_dms', NULL); $aRetornoJson = array(); $aRetornoJson['status'] = TRUE; try { $oDms = Contribuinte_Model_Dms::getById($iCodigoDms); $oGuia = Contribuinte_Model_GuiaEcidade::gerarGuiaDmsPrestador($oDms, $sDataPagamento); // Verifica se retornou algum erro no processo de geração da guia if (is_string($oGuia)) { throw new Exception($oGuia); } // Verifica se foi gerado o arquivo de emissão da guia if (empty($oGuia->arquivo_guia)) { throw new Exception('Ocorreu algum problema na geração da guia de pagamento!'); } $aRetornoJson['url'] = $oGuia->arquivo_guia; $aRetornoJson['success'] = $this->translate->_('Guia emitida com sucesso.'); } catch (Exception $oError) { $aRetornoJson['status'] = FALSE; $aRetornoJson['error'][] = $oError->getMessage(); } echo $this->getHelper('json')->sendJson($aRetornoJson); }
/** * 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 a guia de DES-IF no eCidade * * @param Contribuinte_Model_Contribuinte $oContribuinte * @param $iAnoCompetencia * @param $iMesCompetencia * @param DateTime $oDataPagamento * @param $fAliquota * @param bool $lGerarPdf * @return bool * @throws Exception */ public static function gerarGuiaDesif(Contribuinte_Model_Contribuinte $oContribuinte, $iAnoCompetencia, $iMesCompetencia, DateTime $oDataPagamento, $fAliquota, $lGerarPdf = TRUE) { // Verifica se já possui uma guia emitida $lTemGuiaEmitida = Contribuinte_Model_Guia::existeGuia($oContribuinte, $iMesCompetencia, $iAnoCompetencia, Contribuinte_Model_Guia::$DOCUMENTO_ORIGEM_NFSE); if ($lTemGuiaEmitida) { throw new Exception('Guia já emitida.'); } $aReceitasDesif = Contribuinte_Model_ImportacaoDesif::getTotalReceitasCompetencia($oContribuinte, $iAnoCompetencia, $iMesCompetencia, $fAliquota); $sDataPagamento = $oDataPagamento->format('d/m/Y'); $oUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getById($oContribuinte->getIdUsuarioContribuinte()); $oValidateDate = new Zend_Validate_Date(); $sData = DBSeller_Helper_Date_Date::invertDate($sDataPagamento); $sDataValidacao = DBSeller_Helper_Date_Date::invertDate($sDataPagamento, ''); if ($sDataValidacao < date('Ymd')) { throw new Exception('Informe uma data posterior a data atual!'); } if ($oValidateDate->isValid($sDataPagamento)) { $oData = new DateTime($sData); } else { throw new Exception('Informe uma data para pagamento válida!'); } /** * Alterado o parametro de envio do cpf_cnpj para o e-cidade pois não estava sendo passado corretamente. */ $iCpfCnpj = $oUsuarioContribuinte->getCnpjCpf(); $iCpf = strlen($iCpfCnpj) == 11 ? $iCpfCnpj : NULL; $iCnpj = strlen($iCpfCnpj) == 14 ? $iCpfCnpj : NULL; $oGuiaGerar = new StdClass(); $oGuiaGerar->id_importacao_desif = $aReceitasDesif->id_importacao_desif; $oGuiaGerar->id_importacao_desif_conta = $aReceitasDesif->id_importacao_desif_conta; $oGuiaGerar->inscricao_municipal = $oUsuarioContribuinte->getIm(); $oGuiaGerar->cpf = $iCpf; $oGuiaGerar->cnpj = $iCnpj; $oGuiaGerar->numcgm = $oUsuarioContribuinte->getCgm(); $oGuiaGerar->mes_competencia = $iMesCompetencia; $oGuiaGerar->ano_competencia = $iAnoCompetencia; $aListaReceitas = array(); foreach ($aReceitasDesif->aliquotas_issqn as $fAliquota => $aDadosReceita) { $sNumeroNotaFiscal = date('YmdHs', time()) . $aReceitasDesif->id_importacao_desif . str_replace('.', '', $fAliquota); $oReceita = new stdClass(); $oReceita->numero_nota_fiscal = $sNumeroNotaFiscal; $oReceita->codigo_documento = $aReceitasDesif->id_importacao_desif; $oReceita->data_nota_fiscal = $aReceitasDesif->data_importacao->format('Y-m-d'); $oReceita->serie_nota_fiscal = NULL; $oReceita->valor_base_calculo = $aDadosReceita['total_receita']; $oReceita->valor_deducao = 0; $oReceita->valor_imposto_retido = $aDadosReceita['total_iss']; $oReceita->valor_servico_prestado = $aDadosReceita['total_receita']; $oReceita->aliquota = $fAliquota; $oReceita->data_pagamento = $sDataPagamento; $oReceita->retido = $aDadosReceita['total_iss']; $oReceita->situacao = 1; $oReceita->status = 1; $oReceita->servico_prestado = 'Receita Importada Desif'; $oReceita->cnpj_prestador = $oUsuarioContribuinte->getCnpjCpf(); $oReceita->inscricao_prestador = $oUsuarioContribuinte->getIm(); $oReceita->nome = $oContribuinte->getNome(); $oReceita->operacao = 2; $aListaReceitas[] = $oReceita; } $oGuiaGerar->notas = $aListaReceitas; $aDados = array('planilha' => $oGuiaGerar, 'data_pagamento' => $oData->format('Y-m-d'), 'tipo_debito' => Contribuinte_Model_GuiaEcidade::TIPO_DEBITO_VARIAVEL); $oGuiaGerada = WebService_Model_Ecidade::processar('geraDebitoIssContribribuinte', $aDados); $oGuia = new Contribuinte_Model_Guia(); $oGuia->gerarGuiaDesifPrestador($oContribuinte, $oGuiaGerada, $iAnoCompetencia, $iMesCompetencia, $oDataPagamento); $sArquivoGuiaPdf = $oGuiaGerada->debito->dados_boleto->arquivo_guia; if ($lGerarPdf) { $oGuiaGerada->arquivo_guia = Contribuinte_Model_GuiaEcidade::salvarPdf($sArquivoGuiaPdf, 'guia_substituto'); } return $oGuiaGerada; }