/** * 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(); } }