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