예제 #1
0
  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;
  }
예제 #2
0
  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;
  }
예제 #3
0
  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;
  }
예제 #4
0
  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;
  }
예제 #5
0
  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;
  }
예제 #6
0
  @Override
  public void executar() throws OpenPdvException {
    // ajustando a data fim para documento, pois o mesmo usa datetime
    Calendar cal = Calendar.getInstance();
    cal.setTime(fim);
    cal.add(Calendar.DAY_OF_MONTH, 1);
    fim = cal.getTime();

    // recupera as nfes emitidas no periodo
    FiltroData fd1 = new FiltroData("ecfNotaEletronicaData", ECompara.MAIOR_IGUAL, inicio);
    FiltroData fd2 = new FiltroData("ecfNotaEletronicaData", ECompara.MENOR, fim);
    GrupoFiltro gp1 = new GrupoFiltro(EJuncao.E, new IFiltro[] {fd1, fd2});
    EcfNotaEletronica ene = new EcfNotaEletronica();
    ene.setOrdemDirecao(EDirecao.ASC);
    nfes = service.selecionar(ene, 0, 0, gp1);

    // recupera as notas emitidas no periodo
    FiltroData fd3 = new FiltroData("ecfNotaData", ECompara.MAIOR_IGUAL, inicio);
    FiltroData fd4 = new FiltroData("ecfNotaData", ECompara.MENOR, fim);
    GrupoFiltro gp2 = new GrupoFiltro(EJuncao.E, new IFiltro[] {fd3, fd4});
    EcfNota en = new EcfNota();
    en.setOrdemDirecao(EDirecao.ASC);
    notas = service.selecionar(en, 0, 0, gp2);

    // recupera as leituras Z no periodo
    FiltroData fd7 = new FiltroData("ecfZMovimento", ECompara.MAIOR_IGUAL, inicio);
    FiltroData fd8 = new FiltroData("ecfZMovimento", ECompara.MENOR, fim);
    GrupoFiltro gf4 = new GrupoFiltro(EJuncao.E, new IFiltro[] {fd7, fd8});
    EcfZ ez = new EcfZ();
    ez.setOrdemDirecao(EDirecao.ASC);
    zs = service.selecionar(ez, 0, 0, gf4);

    // recupera os produtos com estoque maior que zero
    FiltroNumero fn = new FiltroNumero("prodProdutoEstoque", ECompara.DIFERENTE, 0);
    ProdProduto pp = new ProdProduto();
    pp.setCampoOrdem("prodProdutoId");
    estoque = service.selecionar(pp, 0, 0, fn);

    Sintegra sintegra = new Sintegra();
    // Dados 10
    sintegra.setDados10(getDados10());
    // Dados 11
    sintegra.setDados11(getDados11());
    // Dados 50
    sintegra.setDados50(getDados50());
    // Dados 54
    sintegra.setDados54(getDados54());
    // Dados 60M
    sintegra.setDados60M(getDados60M());
    // Dados 60R
    sintegra.setDados60R(getDados60R());
    // Dados 61
    sintegra.setDados61(getDados61());
    // Dados 61R
    sintegra.setDados61R(getDados61R());
    // Dados 74
    sintegra.setDados74(getDados74());
    // Dados 75
    sintegra.setDados75(getDados75());
    // Dados 90 e gerado internamento pelo PAF

    try {
      // gerar o arquivo
      path = PAF.gerarVendasPeriodo(sintegra);
    } catch (Exception ex) {
      throw new OpenPdvException(ex);
    }
  }