public Naglowek(Vatpoz selected, DeklaracjaVatSchema schema) {
   String celZlozenia = selected.getCelzlozenia();
   String rok = selected.getRok();
   String miesiac = selected.getMiesiac();
   String kodUrzedu = selected.getKodurzedu();
   Integer kw = Integer.parseInt(Kwartaly.getMapanrkw().get(Integer.parseInt(miesiac)));
   String kwartal = String.valueOf(kw);
   String ng = schema.getNaglowek();
   if (schema.isMc0kw1() == false) {
     Naglowek =
         ng
             + "<CelZlozenia poz=\"P_7\">"
             + celZlozenia
             + "</CelZlozenia><Rok>"
             + rok
             + "</Rok><Miesiac>"
             + miesiac
             + "</Miesiac><KodUrzedu>"
             + kodUrzedu
             + "</KodUrzedu></Naglowek>";
   } else {
     Naglowek =
         ng
             + "<CelZlozenia poz=\"P_7\">"
             + celZlozenia
             + "</CelZlozenia><Rok>"
             + rok
             + "</Rok><Kwartal>"
             + kwartal
             + "</Kwartal><KodUrzedu>"
             + kodUrzedu
             + "</KodUrzedu></Naglowek>";
   }
 }
  private void najpierwszadeklaracja() {
    if (flaga != 1) {
      try {
        // pobiera liste deklaracji poprzednich
        List<Deklaracjevat> pobranalistadeklaracji = new ArrayList<>();
        pobranalistadeklaracji =
            deklaracjevatDAO.findDeklaracjewszystkie(rok.toString(), mc, podatnik);
        deklaracjakorygowana = pobranalistadeklaracji.get(pobranalistadeklaracji.size() - 1);

      } catch (Exception er) {
        // klient swiezak nie ma zadnej deklaracji
        selected.setCelzlozenia("1");
        nowadeklaracja.setNrkolejny(1);
        Msg.msg("i", "Utworzenie samejpierwszej za dany okres " + rok + "-" + mc, "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:");
  }
 private void podsumujszczegolowe() {
   String rok = wpisView.getRokWpisu().toString();
   String mc = wpisView.getMiesiacWpisu();
   String podatnik = wpisView.getPodatnikWpisu();
   selected.setPozycjeszczegolowe(pozycjeSzczegoloweVAT);
   PozycjeSzczegoloweVAT p =
       pozycjeSzczegoloweVAT; // podsumowanie pol szsczegolowych z pobranych czastkowych
   p.setPoleI45(
       p.getPoleI20()
           + p.getPoleI21()
           + p.getPoleI23()
           + p.getPoleI25()
           + p.getPoleI27()
           + p.getPoleI29()
           + p.getPoleI31()
           + p.getPoleI33()
           + p.getPoleI35()
           + p.getPoleI37()
           + p.getPoleI41());
   p.setPole45(String.valueOf(p.getPoleI45()));
   p.setPoleI46(
       p.getPoleI26()
           + p.getPoleI28()
           + p.getPoleI30()
           + p.getPoleI34()
           + p.getPoleI36()
           + p.getPoleI38()
           + p.getPoleI42()
           + p.getPoleI43()
           + p.getPoleI44());
   p.setPole46(String.valueOf(p.getPoleI46()));
   p.setPoleI55(
       p.getPoleI47()
           + p.getPoleI48()
           + p.getPoleI50()
           + p.getPoleI52()
           + p.getPoleI53()
           + p.getPoleI54());
   p.setPole55(String.valueOf(p.getPoleI55()));
   Integer dozaplaty = p.getPoleI46() - p.getPoleI55();
   // to jets gupie bo kwota na kasy powinna byc jakos inaczej wstawiana to jest caly temat do
   // zrobienia
   //        if(dozaplaty>p.getPoleI56()){
   //            p.setPoleI56(dozaplaty);
   //            p.setPole56(dozaplaty.toString());
   //        } else {
   //            p.setPole56("0");
   //            p.setPoleI56(0);
   //        }
   p.setPole57("0");
   p.setPoleI57(0);
   Integer roznica = p.getPoleI46() - p.getPoleI55() - p.getPoleI56() - p.getPoleI57();
   if (roznica > 0) {
     p.setPoleI58(roznica);
     p.setPole58(roznica.toString());
   } else {
     p.setPole58("0");
     p.setPoleI58(0);
   }
   p.setPole59("0");
   p.setPoleI59(0);
   Integer dozwrotu = p.getPoleI55() - p.getPoleI46();
   roznica = p.getPoleI55() - p.getPoleI46() + p.getPoleI59();
   if (dozwrotu > 0) {
     p.setPoleI60(roznica);
     p.setPole60(roznica.toString());
   } else {
     p.setPole60("0");
     p.setPoleI60(0);
   }
   if (p.getPole61() != "") {
     p.setPoleI61(Integer.parseInt(p.getPole61()));
     if (p.getPoleI61() > p.getPoleI60()) {
       p.setPoleI61(p.getPoleI60());
       p.setPole61(p.getPoleI61().toString());
     }
   } else {
     p.setPole61("0");
     p.setPoleI61(0);
   }
   if (p.getPole62() != "") {
     p.setPoleI62(Integer.parseInt(p.getPole62()));
     if (p.getPoleI62() > p.getPoleI61()) {
       p.setPoleI62(p.getPoleI61());
       p.setPole62(p.getPoleI62().toString());
     }
   }
   if (p.getPole63() != "") {
     p.setPoleI63(Integer.parseInt(p.getPole63()));
     if (p.getPoleI63() > p.getPoleI61()) {
       p.setPoleI63(p.getPoleI61());
       p.setPole63(p.getPoleI63().toString());
     }
   }
   if (p.getPole64() != "") {
     p.setPoleI64(Integer.parseInt(p.getPole64()));
     if (p.getPoleI64() > p.getPoleI61()) {
       p.setPoleI64(p.getPoleI61());
       p.setPole64(p.getPoleI64().toString());
     }
   }
   roznica = p.getPoleI60() - p.getPoleI61();
   p.setPoleI65(roznica);
   p.setPole65(roznica.toString());
   pozycjeSzczegoloweVAT = p;
 }
 private void zbadajpobranadeklarajce() {
   Deklaracjevat badana;
   try {
     deklaracjakorygowana.getDeklaracja();
     badana = deklaracjakorygowana;
     if (badana.getIdentyfikator().equals("")) {
       Msg.msg(
           "e",
           "Wcześniej sporządzona deklaracja dot. bieżacego miesiaca nie jest wyslana. Edytuje deklaracje!",
           "form:msg");
       selected.setCelzlozenia("1");
       nowadeklaracja.setNrkolejny(badana.getNrkolejny());
       setFlaga(2);
     } else {
       if (badana.getStatus().equals("301")
           || badana.getStatus().equals("302")
           || badana.getStatus().equals("")) {
         Msg.msg(
             "e",
             "Wysłałeś już deklarację ale nie pobrałeś UPO. Nie mozna sporządzić nowej deklaracji za miesiąc następny!",
             "form:msg");
         setFlaga(1);
       } else if (badana.getStatus().startsWith("4")) {
         selected.setCelzlozenia("1");
         Msg.msg(
             "i",
             "Utworzono nową deklarację. Wysłanie poprzedniej zakończyło się błędem",
             "form:msg");
         nowadeklaracja.setNrkolejny(badana.getNrkolejny() + 1);
       } else if (badana.getStatus().equals("200")) {
         nowadeklaracja.setNrkolejny(badana.getNrkolejny() + 1);
         selected.setCelzlozenia("2");
         Msg.msg(
             "i",
             "Utworzono korekte poprawnie wyslanej deklaracji za okres  " + rok + "-" + mc,
             "form:msg");
       } else {
         setFlaga(1);
         Msg.msg("i", "Wystąpił dziwny błąd wołaj szefa", "form:msg");
       }
     }
   } catch (Exception e) {
     badana = deklaracjawyslana;
     if (badana.getIdentyfikator().equals("")) {
       Msg.msg(
           "e",
           "Wcześniej sporządzona deklaracja dot. poprzedniego miesiaca nie jest wyslana. Nie można utworzyć nowej!",
           "form:msg");
       setFlaga(1);
     } else {
       if (badana.getStatus().equals("301")
           || badana.getStatus().equals("302")
           || badana.getStatus().equals("")) {
         Msg.msg(
             "e",
             "Wysłałeś już deklarację ale nie pobrałeś UPO. Nie mozna sporządzić nowej deklaracji za miesiąc następny!",
             "form:msg");
         setFlaga(1);
       } else if (badana.getStatus().startsWith("4")) {
         Msg.msg(
             "e",
             "Wysłanie deklaracji w poprzednim miesiącu zakończyło się błędem. Nie można utworzyć nowej deklaracji",
             "form:msg");
         setFlaga(1);
       } else if (badana.getStatus().equals("200")) {
         nowadeklaracja.setNrkolejny(badana.getNrkolejny() + 1);
         selected.setCelzlozenia("1");
         Msg.msg(
             "i",
             "Potwierdzona udana wysyka w miesiącu poprzednim Tworzę nową dekalracje za "
                 + rok
                 + "-"
                 + mc,
             "form:msg");
       } else {
         setFlaga(1);
         Msg.msg("i", "Wystąpił dziwny błąd wołaj szefa", "form:msg");
       }
     }
   }
 }