private List<Dados60I> getDados60I(EcfZ z) {
    List<Dados60I> ld60i = new ArrayList<>();

    for (EcfVenda venda : z.getEcfVendas()) {
      for (EcfVendaProduto vp : venda.getEcfVendaProdutos()) {
        Dados60I d60i = new Dados60I();
        d60i.setData(z.getEcfZMovimento());
        d60i.setSerie(z.getEcfImpressora().getEcfImpressoraSerie());
        d60i.setModelo(z.getEcfImpressora().getEcfImpressoraCodigo());
        d60i.setCoo(venda.getEcfVendaCoo());
        d60i.setItem(vp.getEcfVendaProdutoOrdem());
        d60i.setCodigo(vp.getProdProduto().getId() + "");
        d60i.setQtd(vp.getEcfVendaProdutoQuantidade());
        d60i.setLiquido(vp.getEcfVendaProdutoLiquido());
        if (vp.getProdProduto().getProdProdutoTributacao() == 'T') {
          d60i.setBase_icms(vp.getEcfVendaProdutoLiquido());
          d60i.setTributacao(
              Util.formataNumero(vp.getProdProduto().getProdProdutoIcms() * 100, 4, 0, false));
          d60i.setValor_icms(vp.getEcfVendaProdutoIcms());
        } else {
          d60i.setTributacao(vp.getProdProduto().getProdProdutoTributacao() + "");
        }

        Util.normaliza(d60i);
        ld60i.add(d60i);
      }
    }

    return ld60i;
  }
  private List<Dados60R> getDados60R() {
    List<Dados60R> ld60r = new ArrayList<>();

    // agrupando os itens vendidos pelo mes+ano+id produto.
    Map<String, List<EcfVendaProduto>> mensal = new HashMap<>();
    for (EcfZ z : zs) {
      String mesAno = Util.formataData(z.getEcfZMovimento(), "MMyyyy");
      for (EcfVenda venda : z.getEcfVendas()) {
        for (EcfVendaProduto vp : venda.getEcfVendaProdutos()) {
          String chave = mesAno + "-" + vp.getProdProduto().getId();
          List<EcfVendaProduto> lista = mensal.get(chave);
          if (lista == null) {
            lista = new ArrayList<>();
            lista.add(vp);
            mensal.put(chave, lista);
          } else {
            lista.add(vp);
          }
        }
      }
    }

    // gerando os valores do mes/ano por produto
    for (Entry<String, List<EcfVendaProduto>> entry : mensal.entrySet()) {
      double qtd = 0.00;
      double liquido = 0.00;
      char trib = 0;
      double aliq = 0.00;

      // soma os valores
      for (EcfVendaProduto vp : entry.getValue()) {
        qtd += vp.getEcfVendaProdutoQuantidade();
        liquido += vp.getEcfVendaProdutoLiquido();
        trib = vp.getProdProduto().getProdProdutoTributacao();
        aliq = vp.getProdProduto().getProdProdutoIcms();
      }

      Dados60R d60r = new Dados60R();
      d60r.setMesAno(Integer.valueOf(entry.getKey().substring(0, 6)));
      d60r.setCodigo(entry.getKey() + "");
      d60r.setQtd(qtd);
      d60r.setLiquido(liquido);
      if (trib == 'T') {
        d60r.setBase_icms(liquido);
        d60r.setTributacao(Util.formataNumero(aliq * 100, 4, 0, false));
      } else {
        d60r.setTributacao(trib + "");
      }

      Util.normaliza(d60r);
      ld60r.add(d60r);
    }

    return ld60r;
  }
  private List<Dados60D> getDados60D(EcfZ z) {
    List<Dados60D> ld60d = new ArrayList<>();

    // agrupando os itens vendidos pelo id produto no dia.
    Map<Integer, List<EcfVendaProduto>> diario = new HashMap<>();
    for (EcfVenda venda : z.getEcfVendas()) {
      for (EcfVendaProduto vp : venda.getEcfVendaProdutos()) {
        List<EcfVendaProduto> lista = diario.get(vp.getProdProduto().getId());
        if (lista == null) {
          lista = new ArrayList<>();
          lista.add(vp);
          diario.put(vp.getProdProduto().getId(), lista);
        } else {
          lista.add(vp);
        }
      }
    }

    // gerando os valores do dia por produto
    for (Entry<Integer, List<EcfVendaProduto>> entry : diario.entrySet()) {
      double qtd = 0.00;
      double liquido = 0.00;
      double icms = 0.00;
      char trib = 0;
      double aliq = 0.00;

      // soma os valores
      for (EcfVendaProduto vp : entry.getValue()) {
        qtd += vp.getEcfVendaProdutoQuantidade();
        liquido += vp.getEcfVendaProdutoLiquido();
        icms += vp.getEcfVendaProdutoIcms();
        trib = vp.getProdProduto().getProdProdutoTributacao();
        aliq = vp.getProdProduto().getProdProdutoIcms();
      }

      Dados60D d60d = new Dados60D();
      d60d.setData(z.getEcfZMovimento());
      d60d.setSerie(z.getEcfImpressora().getEcfImpressoraSerie());
      d60d.setCodigo(entry.getKey() + "");
      d60d.setQtd(qtd);
      d60d.setLiquido(liquido);
      if (trib == 'T') {
        d60d.setBase_icms(liquido);
        d60d.setTributacao(Util.formataNumero(aliq * 100, 4, 0, false));
        d60d.setValor_icms(icms);
      } else {
        d60d.setTributacao(trib + "");
      }

      Util.normaliza(d60d);
      ld60d.add(d60d);
    }

    return ld60d;
  }