/**
  * Gera guia para substituto tributário
  *
  * @param $notas
  * @param $data
  * @return array
  */
 public function gerarGuiaTomador($notas, $data)
 {
     if ($data == '') {
         $data = new DateTime();
     } else {
         $data = parent::stringToDate($data);
     }
     $cpfcnpj = $notas[0]->getT_cnpjcpf();
     $inscricao = $notas[0]->getT_im();
     $ano_comp = $notas[0]->getAno_comp();
     $mes_comp = $notas[0]->getMes_comp();
     $planilha = Contribuinte_Model_GuiaEcidade::gerarPlanilhaRetencao($cpfcnpj, $inscricao, $ano_comp, $mes_comp);
     $array_servicos = array();
     // Vetor que faz cache das descricoes dos servicos
     foreach ($notas as $n) {
         $this->addNota($n->getEntity());
         $cod_serv = $n->getS_dados_cod_tributacao();
         if (!isset($array_servicos[$cod_serv])) {
             $serv = Contribuinte_Model_Servico::getByCodServico($cod_serv);
             $descr_serv = urlencode($serv[0]->attr('desc_item_servico'));
             $array_servicos[$cod_serv] = $descr_serv;
         }
         Contribuinte_Model_GuiaEcidade::lancarPlanilhaRetencao($planilha, $n, $data, $array_servicos[$cod_serv]);
     }
     $guiaWS = Contribuinte_Model_GuiaEcidade::gerarGuiaTomador($planilha);
     $this->setValorCorrigido($guiaWS->valor_corrigido);
     $this->setValorHistorico($guiaWS->valor_historico);
     $this->setCodigoBarras($guiaWS->codigo_barras);
     $this->setLinhaDigitavel($guiaWS->linha_digitavel);
     $this->setJurosMulta($guiaWS->juros_multa);
     $this->setCodigoGuia($guiaWS->codigo_guia);
     $numpre = each($guiaWS->debitos_guia);
     $this->setNumpre($numpre['value']->iNumpre);
     $this->setAnoComp($ano_comp);
     $this->setMesComp($mes_comp);
     $this->setTipo(self::$TOMADOR);
     $this->setSituacao(self::$ABERTA);
     $this->setTipoDocumentoOrigem(self::$DOCUMENTO_ORIGEM_DMS);
     $this->setIm($inscricao);
     $this->setVencimento($data);
     $this->persist();
     return array('objeto' => $this, 'arquivo' => $guiaWS->arquivo_guia);
 }