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