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 drukuj() throws FileNotFoundException, DocumentException, IOException {
    Document document = new Document();
    PdfWriter.getInstance(
            document,
            new FileOutputStream(
                "C:/Users/Osito/Documents/NetBeansProjects/npkpir_23/build/web/wydruki/vatsuma"
                    + wpisView.getPodatnikWpisu()
                    + ".pdf"))
        .setInitialLeading(16);
    document.addTitle("Zestawienie sum z ewidencji VAT");
    document.addAuthor("Biuro Rachunkowe Taxman Grzegorz Grzelczyk");
    document.addSubject("Wydruk danych z ewidencji VAT");
    document.addKeywords("VAT, PDF");
    document.addCreator("Grzegorz Grzelczyk");
    document.open();
    // Rectangle rect = new Rectangle(0, 832, 136, 800);
    // rect.setBackgroundColor(BaseColor.RED);
    // document.add(rect);
    document.add(new Chunk("Biuro Rachunkowe Taxman"));
    document.add(Chunk.NEWLINE);
    BaseFont helvetica =
        BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1250, BaseFont.EMBEDDED);
    Font font = new Font(helvetica, 12);
    Font fontM = new Font(helvetica, 10);
    Font fontS = new Font(helvetica, 6);
    document.add(Chunk.NEWLINE);
    Date date = Calendar.getInstance().getTime();
    DateFormat formatt = new SimpleDateFormat("dd/MM/yyyy");
    String today = formatt.format(date);
    System.out.println("PdfVATsuma Today : " + today);
    Paragraph miziu =
        new Paragraph(
            new Phrase(
                "Szczecin, dnia "
                    + Data.datapk(wpisView.getRokWpisuSt(), wpisView.getMiesiacWpisu()),
                font));
    miziu.setAlignment(Element.ALIGN_RIGHT);
    miziu.setLeading(50);
    document.add(miziu);
    document.add(new Chunk().NEWLINE);
    Paragraph miziu1 = new Paragraph(new Phrase("Zestawienie ewidencji VAT ", font));
    miziu1.setAlignment(Element.ALIGN_CENTER);
    document.add(miziu1);
    document.add(new Chunk().NEWLINE);
    miziu1 =
        new Paragraph(
            new Phrase(
                "okres rozliczeniony " + wpisView.getMiesiacWpisu() + "/" + wpisView.getRokWpisu(),
                fontM));
    document.add(miziu1);
    document.add(new Chunk().NEWLINE);
    miziu1 = new Paragraph(new Phrase("Firma: " + wpisView.getPodatnikWpisu(), fontM));
    document.add(miziu1);
    Podatnik pod = podatnikDAO.find(wpisView.getPodatnikWpisu());
    miziu1 =
        new Paragraph(
            new Phrase(
                "adres: " + pod.getMiejscowosc() + " " + pod.getUlica() + " " + pod.getNrdomu(),
                fontM));
    document.add(miziu1);
    miziu1 = new Paragraph(new Phrase("NIP: " + pod.getNip(), fontM));
    document.add(miziu1);
    PdfPTable tableSprzedaz = new PdfPTable(5);
    tableSprzedaz.setWidths(new int[] {1, 5, 2, 2, 2});
    PdfPTable tableZakup = new PdfPTable(5);
    tableZakup.setWidths(new int[] {1, 5, 2, 2, 2});
    NumberFormat formatter = NumberFormat.getCurrencyInstance();
    formatter.setMaximumFractionDigits(2);
    formatter.setMinimumFractionDigits(2);
    formatter.setGroupingUsed(true);
    List<EVatwpisSuma> sumaVatSprzedaz = new ArrayList<>();
    List<EVatwpisSuma> sumaVatZakup = new ArrayList<>();
    Ewidencjevat lista;
    try {
      lista =
          ewidencjeVatDAO.find(
              wpisView.getRokWpisu().toString(),
              wpisView.getMiesiacWpisu(),
              wpisView.getPodatnikWpisu());
    } catch (Exception e) {
      Integer kwartal =
          Integer.parseInt(
              Kwartaly.getMapanrkw().get(Integer.parseInt(wpisView.getMiesiacWpisu())));
      List<String> miesiacewkwartale = Kwartaly.getMapakwnr().get(kwartal);
      lista =
          ewidencjeVatDAO.find(
              wpisView.getRokWpisu().toString(),
              miesiacewkwartale.get(2),
              wpisView.getPodatnikWpisu());
    }
    for (EVatwpisSuma ew : lista.getSumaewidencji().values()) {
      String typeewidencji = ew.getEwidencja().getTypewidencji();
      switch (typeewidencji) {
        case "s":
          sumaVatSprzedaz.add(ew);
          break;
        case "z":
          sumaVatZakup.add(ew);
          break;
        case "sz":
          sumaVatSprzedaz.add(ew);
          sumaVatZakup.add(ew);
          break;
      }
    }
    // tu robimy wykaz ewidencji sprzedazy
    document.add(Chunk.NEWLINE);
    miziu1 = new Paragraph(new Phrase("zestawienie ewidencji sprzedaży", fontM));
    document.add(miziu1);
    try {
      tableSprzedaz.addCell(ustawfrazebez("lp", "center", 10));
      tableSprzedaz.addCell(ustawfrazebez("ewidencja", "center", 10));
      tableSprzedaz.addCell(ustawfrazebez("netto", "center", 10));
      tableSprzedaz.addCell(ustawfrazebez("vat", "center", 10));
      tableSprzedaz.addCell(ustawfrazebez("brutto", "center", 10));
      tableSprzedaz.setHeaderRows(1);
      int i = 1;
      for (EVatwpisSuma p : sumaVatSprzedaz) {
        tableSprzedaz.addCell(ustawfrazebez(String.valueOf(i), "center", 10));
        tableSprzedaz.addCell(ustawfrazebez(p.getEwidencja().getNazwa(), "left", 10));
        tableSprzedaz.addCell(
            ustawfrazebez(String.valueOf(formatter.format(p.getNetto())), "right", 10));
        tableSprzedaz.addCell(
            ustawfrazebez(String.valueOf(formatter.format(p.getVat())), "right", 10));
        try {
          tableSprzedaz.addCell(
              ustawfrazebez(
                  String.valueOf(formatter.format(p.getVat().add(p.getNetto()))), "right", 10));
        } catch (Exception e) {
          tableSprzedaz.addCell(ustawfrazebez("", "right", 10));
        }
        i++;
      }
    } catch (DocumentException | IOException e) {

    }
    document.add(Chunk.NEWLINE);
    document.add(tableSprzedaz);
    document.add(Chunk.NEWLINE);
    // tu robimy wykaz ewidencji zakupu
    miziu1 = new Paragraph(new Phrase("zestawienie ewidencji zakupu", fontM));
    document.add(miziu1);
    try {
      tableZakup.addCell(ustawfrazebez("lp", "center", 10));
      tableZakup.addCell(ustawfrazebez("ewidencja", "center", 10));
      tableZakup.addCell(ustawfrazebez("netto", "center", 10));
      tableZakup.addCell(ustawfrazebez("vat", "center", 10));
      tableZakup.addCell(ustawfrazebez("brutto", "center", 10));
      tableZakup.setHeaderRows(1);
      int i = 1;
      for (EVatwpisSuma p : sumaVatZakup) {
        tableZakup.addCell(ustawfrazebez(String.valueOf(i), "center", 10));
        tableZakup.addCell(ustawfrazebez(p.getEwidencja().getNazwa(), "left", 10));
        tableZakup.addCell(
            ustawfrazebez(String.valueOf(formatter.format(p.getNetto())), "right", 10));
        tableZakup.addCell(
            ustawfrazebez(String.valueOf(formatter.format(p.getVat())), "right", 10));
        try {
          tableZakup.addCell(
              ustawfrazebez(
                  String.valueOf(formatter.format(p.getVat().add(p.getNetto()))), "right", 10));
        } catch (Exception e) {
          tableZakup.addCell(ustawfrazebez("", "right", 10));
        }
        i++;
      }
    } catch (DocumentException | IOException e) {

    }
    document.add(Chunk.NEWLINE);
    document.add(tableZakup);
    document.add(Chunk.NEWLINE);
    Uz uz = wpisView.getWprowadzil();
    document.add(new Paragraph(String.valueOf(uz.getImie() + " " + uz.getNazw()), fontM));
    document.add(new Paragraph("___________________________", fontM));
    document.add(new Paragraph("sporządził", fontM));
    document.close();
    // Msg.msg("i", "Wydrukowano sume ewidencji VAT", "form:messages");
  }
  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:");
  }