/** * Complementa os dados da Guia DMS após retornar do webservice * * @param object $oDadosGuia * @param Contribuinte_Model_Dms $oDms * @return Contribuinte_Model_Guia $this */ public function complementaGuiaDmsPrestador($oDadosGuia, Contribuinte_Model_Dms $oDms) { $this->setValorCorrigido($oDadosGuia->dados_boleto->valor_corrigido); $this->setValorHistorico($oDadosGuia->dados_boleto->valor_historico); $this->setCodigoBarras($oDadosGuia->dados_boleto->codigo_barras); $this->setLinhaDigitavel($oDadosGuia->dados_boleto->linha_digitavel); $this->setJurosMulta($oDadosGuia->dados_boleto->juros_multa); $this->setCodigoGuia($oDadosGuia->dados_boleto->codigo_guia); $this->addDms($oDms->getEntity()); foreach ($oDadosGuia->lista_debitos as $oDebito) { $this->addNumpre($oDebito->numpre); $this->setNumpre($oDebito->numpre); } $this->persist(); return $this; }
/** * 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(); } }
/** * Calcula valores [Json] */ public function emissaoManualCalculaValoresDmsAction() { // Parametros $lTomadorRetemImposto = $this->getRequest()->getParam('s_imposto_retido', 1); $fValorServico = $this->getRequest()->getParam('s_valor_bruto', 0); $fValorDeducao = $this->getRequest()->getParam('s_valor_deducao', 0); $fValorDescontoCondicionado = $this->getRequest()->getParam('s_vl_condicionado', 0); $fValorDescontoIncondicionado = $this->getRequest()->getParam('s_vl_desc_incondicionado', 0); $fPercentualAliquota = $this->getRequest()->getParam('s_aliquota', 0); $aValidacaoValores = Contribuinte_Model_Dms::emissaoManualCalculaValoresDms($lTomadorRetemImposto, $fValorServico, $fValorDeducao, $fValorDescontoCondicionado, $fValorDescontoIncondicionado, $fPercentualAliquota); echo $this->getHelper('json')->sendJson($aValidacaoValores); }
/** * Remove os Meses que existe movimentacao ou foi declarado sem movimento * * @return $this */ public function removerMesesComMovimentacaoDeNotas() { $oSession = new Zend_Session_Namespace('nfse'); $iMesCompetencia = (int) date('m') - 1; $iAnoCompetencia = (int) ((int) date('m') == 1 ? date('Y') - 1 : date('Y')); $oContribuinte = $oSession->contribuinte; $oCompetencia = new Contribuinte_Model_Competencia($iAnoCompetencia, $iMesCompetencia, $oContribuinte); $aMeses = DBSeller_Helper_Date_Date::getMesesAnterioresArray($iMesCompetencia); $aDeclaracaoSemMovimento = $oCompetencia->getDeclaracaoSemMovimento(); // Remove os meses que já tem declaracao sem movimento if (count($aDeclaracaoSemMovimento) > 0) { foreach ($aDeclaracaoSemMovimento as $oDeclaracaoSemMovimento) { unset($aMeses[$oDeclaracaoSemMovimento->mes]); } } // Verifica se existem notas lancadas no NFSE if (count($aMeses) > 0) { foreach ($aMeses as $iMes => $sMes) { $aResultadoDms = Contribuinte_Model_Dms::getDadosPorCompetencia($oContribuinte->getContribuintes(), $iAnoCompetencia, $iMes, Contribuinte_Model_Dms::SAIDA); // Verifica se tem NFSe lancadas na competência $oParametros = new stdClass(); $oParametros->iMes = $iMes; $oParametros->iAno = $iAnoCompetencia; $aResultadoNota = Contribuinte_Model_Nota::getByContribuinteAndCompetencia($oContribuinte->getContribuintes(), $oParametros); // Limpa os meses if (count($aResultadoDms) > 0 || count($aResultadoNota) > 0) { unset($aMeses[$iMes]); } } } // Desabilita geração quando não possuir meses válidos if (count($aMeses) == 0) { $this->getElement('mes_competencia')->setAttrib('disabled', TRUE); $this->getElement('btn_competencia')->setAttrib('disabled', TRUE); } $this->getElement('mes_competencia')->setMultiOptions($aMeses); return $this; }