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<Dados60M> getDados60M() {
    List<Dados60M> ld60m = new ArrayList<>();

    for (EcfZ z : zs) {
      Dados60M d60m = new Dados60M();
      d60m.setData(z.getEcfZMovimento());
      d60m.setSerie(z.getEcfImpressora().getEcfImpressoraSerie());
      d60m.setCaixa(z.getEcfImpressora().getEcfImpressoraCaixa());
      d60m.setModelo(z.getEcfImpressora().getEcfImpressoraCodigo());
      d60m.setCooInicial(z.getEcfZCooIni());
      d60m.setCooFinal(z.getEcfZCooFin());
      d60m.setCrz(z.getEcfZCrz());
      d60m.setCro(z.getEcfZCro());
      d60m.setValorBruto(z.getEcfZBruto());
      d60m.setValorGeral(z.getEcfZGt());

      // Dados 60A
      d60m.setDados60A(getDados60A(z));
      // Dados 60D
      d60m.setDados60D(getDados60D(z));
      // Dados 60I
      d60m.setDados60I(getDados60I(z));

      Util.normaliza(d60m);
      ld60m.add(d60m);
    }

    return ld60m;
  }
  private List<Dados60A> getDados60A(EcfZ z) {
    List<Dados60A> ld60a = new ArrayList<>();

    for (EcfZTotais total : z.getEcfZTotais()) {
      Dados60A d60a = new Dados60A();
      d60a.setData(z.getEcfZMovimento());
      d60a.setSerie(z.getEcfImpressora().getEcfImpressoraSerie());
      if (total.getEcfZTotaisCodigo().length() == 7
          && (total.getEcfZTotaisCodigo().substring(2, 3).equals("T")
              || total.getEcfZTotaisCodigo().substring(2, 3).equals("S"))) {
        d60a.setTotalizador(total.getEcfZTotaisCodigo().substring(3));
      } else if (total.getEcfZTotaisCodigo().startsWith("C")) {
        d60a.setTotalizador("CANC");
      } else if (total.getEcfZTotaisCodigo().startsWith("D")) {
        d60a.setTotalizador("DESC");
      } else if (total.getEcfZTotaisCodigo().startsWith("S")) {
        d60a.setTotalizador("ISS");
      } else {
        d60a.setTotalizador(total.getEcfZTotaisCodigo());
      }
      d60a.setValor(total.getEcfZTotaisValor());

      Util.normaliza(d60a);
      ld60a.add(d60a);
    }

    return ld60a;
  }
  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;
  }