/** * 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; }
/** * Lista de DMS Saida */ public function emissaoDmsListaAction() { parent::noTemplate(); $iMes = $this->_getParam('mes_competencia', NULL); $iAno = $this->_getParam('ano_competencia', NULL); $sDmsTipo = $this->_getParam('tipo', NULL); $oContribuinte = $this->_session->contribuinte; $oDms = new Contribuinte_Model_Dms(); $aResultado = $oDms->getDMSSemGuiaNaCompetencia($oContribuinte, $iAno, $iMes, $sDmsTipo); // Filtra as notas isentas foreach ($aResultado as $oDms) { $bEmiteGuia = FALSE; $iQuantidadeNotas = 0; $fValorGuia = 0; // Notas de DMS foreach ($oDms->getDmsNotas() as $oNota) { // Ignora notas prestadas e retidas pelo tomador if ($oDms->getOperacao() == 's' && $oNota->getServicoImpostoRetido() == TRUE) { continue; } // Ignora notas tomadas e retidas pelo tomador if ($oDms->getOperacao() == 'e' && $oNota->getServicoImpostoRetido() == FALSE) { continue; } // nota: anulada, extraviada ou cancelada if ($oNota->getStatus() == 5 || in_array($oNota->getSituacaoDocumento(), array('E', 'C'))) { continue; } // verifica se o contribuinte emite guia if ($oNota->getEmiteGuia()) { $iQuantidadeNotas++; $fValorGuia += $oNota->getServicoValorImposto(); $bEmiteGuia = TRUE; } } // Adiciona a quantidade e o valor total das DMS agrupadas $oDms->iQuantidadeNotas = $iQuantidadeNotas; $oDms->fValorGuia = $fValorGuia; if ($bEmiteGuia) { $aListaDms[] = $oDms; } } $this->view->aDms = isset($aListaDms) ? $aListaDms : array(); $this->view->urlEdicaoDms = '/contribuinte/dms/emissao-manual-saida'; if ($sDmsTipo == Contribuinte_Model_Dms::ENTRADA) { $this->view->urlEdicaoDms = '/contribuinte/dms/emissao-manual-entrada'; } }
/** * Metodo responsavel por criar as guias dms do prestador * * @param Contribuinte_Model_Dms $oDms * @param $sDataPagamento * @return StdClass */ public static function gerarGuiaDmsPrestador(Contribuinte_Model_Dms $oDms, $sDataPagamento) { try { $oDoctrine = Zend_Registry::get('em'); $oDoctrine->getConnection()->beginTransaction(); $aNotas = array(); foreach ($oDms->getDmsNotas() as $oDadosNota) { $oNota = new Contribuinte_Model_DmsNota($oDadosNota); // Ignora notas prestadas e retidas pelo tomador if ($oDms->getOperacao() == 's' && $oNota->getServicoImpostoRetido() == TRUE) { continue; } // Ignora notas tomadas e retidas pelo tomador if ($oDms->getOperacao() == 'e' && $oNota->getServicoImpostoRetido() == FALSE) { continue; } // Ignora notas anuladas, extraviadas ou canceladas if ($oNota->getStatus() == 5 || in_array($oNota->getSituacaoDocumento(), array('E', 'C'))) { continue; } // Ignora notas isentas if ($oNota->getEmiteGuia() == FALSE) { continue; } // Ignora notas com aliquota ou servico zerados if (floatval($oNota->getServicoAliquota()) <= 0) { continue; } else { if (floatval($oNota->getServicoValorImposto()) <= 0) { continue; } } $aNotas[$oNota->getId()] = $oNota; } $iMesCompetencia = $oDms->getMesCompetencia(); $iAnoCompetencia = $oDms->getAnoCompetencia(); $oUsuarioContribuinte = Administrativo_Model_UsuarioContribuinte::getById($oDms->getIdContribuinte()); $oContribuinte = Administrativo_Model_UsuarioContribuinte::getContribuinte($oDms->getIdContribuinte()); // Salva guia antes de ser gerada no e-cidade $oGuia = new Contribuinte_Model_Guia(); $sDataPagamentoGuia = DBSeller_Helper_Date_Date::invertDate($sDataPagamento); $oGuia->gerarGuiaDmsPrestador($oContribuinte, new DateTime($sDataPagamentoGuia), $iMesCompetencia, $iAnoCompetencia); // Envia Guia para o e-cidade $oGuiaGerar = self::montaDadosGuia($oUsuarioContribuinte, $iAnoCompetencia, $iMesCompetencia, $aNotas, $sDataPagamento, $oGuia->getId()); $oGuiaGerada = self::gerarGuia($oGuiaGerar, $sDataPagamento, self::TIPO_DEBITO_RETIDO); $oDms->setCodigoPlanilha($oGuiaGerada->codigo_planilha); $oDms->setStatus('emitida'); $aDadosNotas = $oGuiaGerar->notas; $aDadosNotas += $oGuiaGerada->notas; foreach ($aDadosNotas as $oNotaProcessada) { $oNota = $aNotas[$oNotaProcessada->codigo_documento]; $oNota->setCodigoNotaPlanilha($oNotaProcessada->codigo_nota_planilha); $oNota->setNumpre($oGuiaGerada->debito_planilha); } $oDms->persist(); $oGuia->complementaGuiaDmsPrestador($oGuiaGerada->debito, $oDms); $oGuiaGerada->arquivo_guia = self::salvarPdf($oGuiaGerada->debito->dados_boleto->arquivo_guia, 'guia_substituto'); $oDoctrine->getConnection()->commit(); return $oGuiaGerada; } catch (Exception $oError) { $oDoctrine->getConnection()->rollback(); return $oError->getMessage(); } }