public void oblicz()
      throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException,
          InvocationTargetException {
    Podatnik pod = podatnikDAO.find(podatnik);
    String vatokres = sprawdzjakiokresvat();
    if (!vatokres.equals("miesięczne")) {
      Integer kwartal =
          Integer.parseInt(
              Kwartaly.getMapanrkw().get(Integer.parseInt(wpisView.getMiesiacWpisu())));
      List<String> miesiacewkwartale = Kwartaly.getMapakwnr().get(kwartal);
      mc = miesiacewkwartale.get(2);
    }
    HashMap<String, EVatwpisSuma> sumaewidencji =
        ewidencjeVatDAO.find(rok, mc, podatnik).getSumaewidencji();
    ArrayList<EVatwpisSuma> wyciagnieteewidencje = new ArrayList<>(sumaewidencji.values());
    // tu zduplikowac ewidencje
    ArrayList<EVatwpisSuma> ewidencjetmp = new ArrayList<>(sumaewidencji.values());
    for (EVatwpisSuma ew : ewidencjetmp) {
      if (ew.getEwidencja().getNazwa().equals("import usług")
          || ew.getEwidencja().getNazwa().equals("rejestr WNT")) {
        EVatwpisSuma suma =
            new EVatwpisSuma(ew.getEwidencja(), ew.getNetto(), ew.getVat(), ew.getEstawka());
        // pobieram i kopiuje stara ewidencje
        Evewidencja tmp =
            new Evewidencja(
                ew.getEwidencja().getNazwa(),
                ew.getEwidencja().getPole(),
                ew.getEwidencja().getNrpolanetto(),
                ew.getEwidencja().getNrpolavat(),
                ew.getEwidencja().getRodzajzakupu(),
                ew.getEwidencja().getTransakcja(),
                ew.getEwidencja().isTylkoNetto());
        // wpisuje pola zakupu
        tmp.setNrpolanetto("51");
        tmp.setNrpolavat("52");
        // zachowuje ewidecje do tymczasowej sumy
        suma.setEwidencja(tmp);
        // dodaje tymczasowa sume do calosci
        wyciagnieteewidencje.add(suma);
      }
      if (ew.getEwidencja().getNazwa().equals("import usług")) {
        EVatwpisSuma suma =
            new EVatwpisSuma(ew.getEwidencja(), ew.getNetto(), ew.getVat(), ew.getEstawka());
        // pobieram i kopiuje stara ewidencje
        Evewidencja tmp =
            new Evewidencja(
                ew.getEwidencja().getNazwa(),
                ew.getEwidencja().getPole(),
                ew.getEwidencja().getNrpolanetto(),
                ew.getEwidencja().getNrpolavat(),
                ew.getEwidencja().getRodzajzakupu(),
                ew.getEwidencja().getTransakcja(),
                ew.getEwidencja().isTylkoNetto());
        // wpisuje pola zakupu
        tmp.setNrpolanetto("39");
        tmp.setNrpolavat("40");
        // zachowuje ewidecje do tymczasowej sumy
        suma.setEwidencja(tmp);
        // dodaje tymczasowa sume do calosci
        wyciagnieteewidencje.add(suma);
      }
    }
    // sumuj ewidencje 51 i52 pola
    Evewidencja pojewid =
        new Evewidencja(
            "sumaryczna",
            "Nabycie towarów i usług pozostałych",
            "51",
            "52",
            "opodatkowane",
            "zakup suma",
            false);
    EVatwpisSuma sumawew = new EVatwpisSuma(pojewid, BigDecimal.ZERO, BigDecimal.ZERO, "");
    for (Iterator<EVatwpisSuma> it = wyciagnieteewidencje.iterator(); it.hasNext(); ) {
      EVatwpisSuma ew = it.next();
      if (ew.getEwidencja().getNrpolanetto().equals("51")) {
        sumawew.setNetto(sumawew.getNetto().add(ew.getNetto()));
        sumawew.setVat(sumawew.getVat().add(ew.getVat()));
        it.remove();
      }
    }
    wyciagnieteewidencje.add(sumawew);

    //
    for (EVatwpisSuma ew : wyciagnieteewidencje) {
      System.out.println("Ewidencja :" + ew.toString());
      String nrpolanetto = ew.getEwidencja().getNrpolanetto();
      String nrpolavat = ew.getEwidencja().getNrpolavat();
      String netto = String.valueOf(ew.getNetto());
      int nettoI = Integer.parseInt(ew.getNetto().toString());
      String vat = String.valueOf(ew.getVat().toString());
      int vatI = Integer.parseInt(ew.getVat().toString());
      Class[] paramString = new Class[1];
      paramString[0] = String.class;
      Method met =
          PozycjeSzczegoloweVAT.class.getDeclaredMethod("setPole" + nrpolanetto, paramString);
      met.invoke(pozycjeSzczegoloweVAT, new String(netto));
      paramString = new Class[1];
      paramString[0] = Integer.class;
      try {
        met = PozycjeSzczegoloweVAT.class.getDeclaredMethod("setPoleI" + nrpolanetto, paramString);
        met.invoke(pozycjeSzczegoloweVAT, new Integer(nettoI));
      } catch (NoSuchMethodException
          | SecurityException
          | IllegalAccessException
          | IllegalArgumentException
          | InvocationTargetException e) {
      }
      if ((nrpolavat != null) && (!nrpolavat.equals(""))) {
        paramString = new Class[1];
        paramString[0] = String.class;
        met = PozycjeSzczegoloweVAT.class.getDeclaredMethod("setPole" + nrpolavat, paramString);
        met.invoke(pozycjeSzczegoloweVAT, new String(vat));
        paramString = new Class[1];
        paramString[0] = Integer.class;
        try {
          met = PozycjeSzczegoloweVAT.class.getDeclaredMethod("setPoleI" + nrpolavat, paramString);
          met.invoke(pozycjeSzczegoloweVAT, new Integer(vatI));
        } catch (Exception e) {
        }
      }
    }
    String kwotaautoryzujaca = null;
    String kodus = tKodUS.getLista().get(pod.getUrzadskarbowy());
    try {
      boolean equals = kodus.equals("");
    } catch (Exception e) {
      Msg.msg("e", "Brak wpisanego urzędu skarbowego!", "form:msg");
      setFlaga(1);
    }
    try {
      List<Parametr> listakwotaautoryzujaca = pod.getKwotaautoryzujaca();
      if (listakwotaautoryzujaca.size() == 0) {
        throw new Exception();
      }
      for (Parametr par : listakwotaautoryzujaca) {
        if (par.getRokOd().equals(rok)) {
          kwotaautoryzujaca = par.getParametr();
          break;
        }
      }
    } catch (Exception e) {
      Msg.msg("e", "Wystapil blad, brak kwoty autoryzujacej w ustawieniach!", "form:msg");
      setFlaga(1);
    }
    if (flaga != 1) {
      try {
        bylajuzdeklaracjawtymmiesiacu();
        zbadajpobranadeklarajce();
        pobierz47zpoprzedniej();
      } catch (Exception e) {
        pobierz47zustawien();
        najpierwszadeklaracja();
      }
    }

    if (flaga != 1) {
      podsumujszczegolowe();
      selected.setPozycjeszczegolowe(pozycjeSzczegoloweVAT);
      selected.setPodatnik(podatnik);
      selected.setRok(rok);
      if (vatokres.equals("miesięczne")) {
        selected.setRodzajdeklaracji("VAT-7");
      } else {
        selected.setRodzajdeklaracji("VAT-7K");
      }
      String mcx = String.valueOf(Integer.parseInt(mc));
      selected.setMiesiac(mcx);
      selected.setKodurzedu(tKodUS.getLista().get(pod.getUrzadskarbowy()));
      selected.setNazwaurzedu(pod.getUrzadskarbowy());
      adres.setNIP(pod.getNip());
      adres.setImiePierwsze(pod.getImie().toUpperCase());
      adres.setNazwisko(pod.getNazwisko().toUpperCase());
      adres.setDataUrodzenia(pod.getDataurodzenia());
      adres.setWojewodztwo(pod.getWojewodztwo().toUpperCase());
      adres.setPowiat(pod.getPowiat().toUpperCase());
      adres.setGmina(pod.getGmina().toUpperCase());
      adres.setUlica(pod.getUlica().toUpperCase());
      adres.setNrDomu(pod.getNrdomu());
      adres.setNrLokalu(pod.getNrlokalu());
      adres.setMiejscowosc(pod.getMiejscowosc().toUpperCase());
      adres.setKodPocztowy(pod.getKodpocztowy());
      adres.setPoczta(pod.getPoczta().toUpperCase());
      selected.setAdres(adres);

      selected.setKwotaautoryzacja(kwotaautoryzujaca);
      stworzdeklaracje();
      nowadeklaracja.setEwidencje(ewidencjeVatDAO.find(rok, mc, podatnik).getEwidencje());
      nowadeklaracja.setPodsumowanieewidencji(
          ewidencjeVatDAO.find(rok, mc, podatnik).getSumaewidencji());
      nowadeklaracja.setRok(rok);
      if (!vatokres.equals("miesięczne")) {
        Integer kwartal =
            Integer.parseInt(
                Kwartaly.getMapanrkw().get(Integer.parseInt(wpisView.getMiesiacWpisu())));
        List<String> miesiacewkwartale = Kwartaly.getMapakwnr().get(kwartal);
        nowadeklaracja.setMiesiac(miesiacewkwartale.get(2));
      } else {
        nowadeklaracja.setMiesiac(mc);
      }
      nowadeklaracja.setMiesiac(mc);
      nowadeklaracja.setKodurzedu(selected.getKodurzedu());
      nowadeklaracja.setPodatnik(podatnik);
      nowadeklaracja.setSelected(selected);
      nowadeklaracja.setPozycjeszczegolowe(pozycjeSzczegoloweVAT);
      nowadeklaracja.setIdentyfikator("");
      nowadeklaracja.setUpo("");
      nowadeklaracja.setStatus("");
      nowadeklaracja.setOpis("");
    }
    if (flaga == 2) {
      deklaracjevatDAO.destroy(deklaracjakorygowana);
      deklaracjevatDAO.edit(nowadeklaracja);
      deklaracjakorygowana = new Deklaracjevat();
      Msg.msg(
          "i",
          podatnik + " - zachowano korekte niewysłanej deklaracji VAT za " + rok + "-" + mc,
          "form:msg");
    } else if (flaga == 1) {
      Msg.msg("e", podatnik + " Deklaracja nie zachowana", "form:msg");
    } else {
      deklaracjevatDAO.dodaj(nowadeklaracja);
      Msg.msg("i", podatnik + " - zachowano nową deklaracje VAT za " + rok + "-" + mc, "form:msg");
    }
    // pobieranie potwierdzenia
    RequestContext.getCurrentInstance().update("vat7:");
  }
  @PostConstruct
  private void init() throws Exception {
    listadokvat.addAll(dokTabView.getDokvatmc());
    for (Dok zaksiegowanafaktura : listadokvat) {
      if (zaksiegowanafaktura.getEwidencjaVAT() != null) {
        List<EVatwpis> ewidencja = new ArrayList<>();
        ewidencja.addAll(zaksiegowanafaktura.getEwidencjaVAT());
        for (EVatwpis ewidwiersz : ewidencja) {
          if (ewidwiersz.getNetto() != 0) {
            EVatViewPola wiersz = new EVatViewPola();
            wiersz.setId(zaksiegowanafaktura.getNrWpkpir());
            wiersz.setDataSprz(zaksiegowanafaktura.getDataSprz());
            wiersz.setDataWyst(zaksiegowanafaktura.getDataWyst());
            wiersz.setKontr(zaksiegowanafaktura.getKontr());
            wiersz.setNrWlDk(zaksiegowanafaktura.getNrWlDk());
            wiersz.setOpis(zaksiegowanafaktura.getOpis());
            wiersz.setNazwaewidencji(ewidwiersz.getEwidencja().getNazwa());
            wiersz.setNrpolanetto(ewidwiersz.getEwidencja().getNrpolanetto());
            wiersz.setNrpolavat(ewidwiersz.getEwidencja().getNrpolavat());
            wiersz.setNetto(ewidwiersz.getNetto());
            wiersz.setVat(ewidwiersz.getVat());
            wiersz.setOpizw(ewidwiersz.getEstawka());
            listadokvatprzetworzona.add(wiersz);
          }
        }
      }
    }
    // rozdziela zapisy na poszczególne ewidencje
    for (EVatViewPola wierszogolny : listadokvatprzetworzona) {
      ArrayList<EVatViewPola> listatmp = new ArrayList<>();
      // sprawdza nazwe ewidencji zawarta w wierszu ogolnym i dodaje do listy
      String nazwaewidencji = wierszogolny.getNazwaewidencji();
      try {
        Collection c = listaewidencji.get(nazwaewidencji);
        listatmp.addAll(c);
      } catch (Exception e) {
        listaewidencji.put(nazwaewidencji, new ArrayList<EVatViewPola>());
        Evewidencja nowaEv = evewidencjaDAO.znajdzponazwie(nazwaewidencji);
        sumaewidencji.put(
            nazwaewidencji,
            new EVatwpisSuma(nowaEv, BigDecimal.ZERO, BigDecimal.ZERO, wierszogolny.getOpizw()));
      }
      listatmp.add(wierszogolny);
      EVatwpisSuma ew = sumaewidencji.get(nazwaewidencji);
      BigDecimal sumanetto =
          ew.getNetto()
              .add(BigDecimal.valueOf(wierszogolny.getNetto()).setScale(0, RoundingMode.HALF_EVEN));
      ew.setNetto(sumanetto);
      BigDecimal sumavat =
          ew.getVat()
              .add(BigDecimal.valueOf(wierszogolny.getVat()).setScale(0, RoundingMode.HALF_EVEN));
      ew.setVat(sumavat);
      sumaewidencji.put(nazwaewidencji, ew);
      listaewidencji.put(nazwaewidencji, listatmp);
    }

    wygeneruj(listaewidencji);
    String rok = wpisView.getRokWpisu().toString();
    String mc = wpisView.getMiesiacWpisu();
    String pod = wpisView.getPodatnikWpisu();
    // zachowaj wygenerowane ewidencje do bazy danych
    try {
      Ewidencjevat pobrane = ewidencjeVatDAO.find(rok, mc, pod);
      pobrane.setEwidencje(listaewidencji);
      pobrane.setSumaewidencji(sumaewidencji);
      ewidencjeVatDAO.edit(pobrane);
    } catch (Exception e) {
      zrzucane.setPodatnik(pod);
      zrzucane.setRok(rok);
      zrzucane.setMiesiac(mc);
      zrzucane.setEwidencje(listaewidencji);
      zrzucane.setSumaewidencji(sumaewidencji);
      ewidencjeVatDAO.dodajewidencje(zrzucane);
    }
    System.out.println("lolo");
  }