@PostConstruct
 private void init() {
   List<Podatnik> lista = podatnikDAO.findPodatnikFKPkpir();
   listaPodatnikowNoFK = podatnikDAO.findPodatnikNieFK();
   for (Podatnik p : lista) {
     if (!listaPodatnikowNoFK.contains(p)) {
       listaPodatnikowNoFK.add(p);
     }
   }
   Collections.sort(listaPodatnikowNoFK, new Podatnikcomparator());
   listaPodatnikowFK = podatnikDAO.findPodatnikFK();
   for (Podatnik p : lista) {
     if (!listaPodatnikowFK.contains(p)) {
       listaPodatnikowFK.add(p);
     }
   }
   Collections.sort(listaPodatnikowFK, new Podatnikcomparator());
   listaPodatnikow = podatnikDAO.findAll();
   Collections.sort(listaPodatnikow, new Podatnikcomparator());
 }
 private void pobierz47zustawien() {
   try {
     Podatnik pod = podatnikDAO.find(podatnik);
     String Pole47 = pod.getPole47();
     Integer PoleI47 = Integer.parseInt(Pole47);
     pozycjeSzczegoloweVAT.setPole47(Pole47);
     pozycjeSzczegoloweVAT.setPoleI47(PoleI47);
     deklaracjawyslana.setIdentyfikator("lolo");
     deklaracjawyslana.setPodatnik("manolo");
   } catch (Exception e) {
     setFlaga(1);
     Msg.msg("e", "Nie wpisano w ustawieniach klienta wartosci pola 47!  ", "form:msg");
   }
 }
  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:");
  }