Aktualna wersja: 17.11.29


Generator JPK_VAT za pomocą API

W poprzednim dokumencie opisano metodę generowania dokumentu JPK za pomocą kreatora importu z tabel DBF. Metoda wygodna dla użytkownika, ale bezużyteczna bez programisty, który przygotuje nową funkcję w programie księgowym lub wykona dodatkowy program generujący wymagane tabele DBF z odpowiednimi danymi.

Jeżeli programista jest potrzebny, to proponujemy skorzystanie z naszego API, które jest wbudowane bezpośrednio w Program-JPK. Dzięki tej metodzie nie ma potrzeby tworzenia i wypełniania pośredniczących tabel DBF.

Do utworzenia dokumentu JPK_VAT potrzebujemy listę faktur z rejestru VAT, którą uzyskamy za pomocą odpowiedniego zapytania SQL bezpośrednio z bazy danych programu księgowego.

Program posiada wbudowane mechanizmy do obsługi baz danych:

  • MS SQL Server
  • MySQL
  • Firebird SQL
  • Tabele DBF, ADT
  • Sterowniki OLE DB
  • Sterowniki ODBC


Generowanie plików JPK za pomocą API

Funkcja dostępna w Menu/JPK/API.

Należy dodać nowy projekt do listy i wybrać przycisk [Projektuj].



Generowanie plików JPK za pomocą API

Program posiada wbudowane środowisko programisty z możliwością projektowania nowych form i programowania za pomocą składni C#.



Generowanie plików JPK za pomocą API

W naszym przykładzie nie potrzebujemy komponentów na formie. Całość będzie wykonana za pomocą kodu C#.

Kilka wyjaśnień do załączonego przykładu:

  • Klasa ADS umożliwia dostęp do danych w tabelach DBF i ADT. Typ tabeli określamy za pomocą pola TableType. Drugi parametr konstruktora zawiera katalog z tabelami DBF.
  • Metoda GetSQLTable zwraca klasę System.Data.DataTable z listą rekordów rejestru VAT. W tym celu należy zdefiniować odpowiednie zapytanie SQL, w którym można stosować złączenia różnych tabel.
  • W pętli odczytujemy kolejne rekordy tabeli i dodajemy wiersze do klasy TGSoft.JPK.VAT.Ver1.Xml. Należy tylko zadbać o odpowiednie przyporządkowanie pól tabeli SQL do pól klas: JPKSprzedazWiersz oraz JPKZakupWiersz
  • W przykładzie otwieramy utworzony plik XML w oknie dialogowym, które dodatkowo zawiera mechanizmy kontroli struktury ze schematem XSD. W rzeczywistych warunkach, zamiast przeglądania pliku XML potrzebujemy wykonać import i zapis do bazy. Służy do tego metoda: jpk.SaveDB()


Generowanie plików JPK za pomocą API

Widok wygenerowanego dokumentu JPK_VAT. Za pomocą przycisku [Sprawdź] można wykonać kontrolę struktury ze schematem XSD.


Tak zaawansowane mechanizmy rozbudowy programu dostępne są tylko w systemach klasy Enterprise przy odpowiednio wysokim budżecie. Zachęcamy do poznania i wykorzystania naszego narzędzia.


Poniżej cały kod C# przykładu dla JPK_VAT (2):

namespace Szark
{
    using System;
    using System.Data;
    using System.Windows.Forms;
    using TGSoft.DB;
    using TGSoft.JPK.VAT.Ver2;
    using TGSoft.Utils;

    public partial class Form1 : DevExpress.XtraEditors.XtraForm
    {
        private ADS dbf;
        private Xml jpk;
        
        public Form1(object sender)
        {
            this.InitializeComponent();
        }

        public void Main()
        {
            ImportDBF();
        }
        
        private void ImportDBF()
        {
            dbf = new ADS("", @".\Import", "", "") { TableType = ADS.AdsTableType.DBF_NTX };
            jpk = new Xml();
            
            Naglowek();
            Sprzedaz();
            Zakupy();
            
            //jpk.SaveDB();
            //jpk.SaveFile(@"C:\TMP\JPK_VAT_TEST.XML");
            jpk.ShowXmlDialog();
        }
        
        private void Naglowek()
        {
            jpk.PelnaNazwa = "Firma Testowa FHU";
            jpk.NIP = "1111111111";
            jpk.DataOd = new DateTime(2017, 1, 1);
            jpk.DataDo = new DateTime(2017, 1, 31);
            jpk.KodUS = "1212";
            
            jpk.KodPocztowy = "30-389";
            jpk.Miejscowosc = "Kraków";
            jpk.Ulica = "Pod Dębami";
            jpk.NrDomu = "3";
        }
            
        private void Sprzedaz()
        {
            var dt = dbf.GetSQLTable("SELECT * FROM jpk_vat WHERE sz='S'");
            foreach (DataRow row in dt.Rows)
            {
                var sw = new JPKSprzedazWiersz();
                sw.NrKontrahenta = row["nip"].ToStr();
                sw.NazwaKontrahenta = row["nazwa"].ToStr();
                sw.AdresKontrahenta = row["adres"].ToStr();
                sw.DataWystawienia = row["dataww"].ToDateTime();
                sw.DataSprzedazy = row["datasz"].ToDateTime();
                sw.DowodSprzedazy = row["nrfaktury"].ToStr();
                sw.K_10 = row["k_10"].ToDecimal();
                sw.K_17 = row["k_17"].ToDecimal();
                sw.K_18 = row["k_18"].ToDecimal();
                sw.K_19 = row["k_19"].ToDecimal();
                sw.K_20 = row["k_20"].ToDecimal();
                jpk.Add(sw);
            }
        }
        
        private void Zakupy()
        {
            var dt = dbf.GetSQLTable("SELECT * FROM jpk_vat WHERE sz='Z'");
            foreach (DataRow row in dt.Rows)
            {
                var zw = new JPKZakupWiersz();
                zw.NrDostawcy = row["nip"].ToStr();
                zw.NazwaDostawcy = row["nazwa"].ToStr();
                zw.AdresDostawcy = row["adres"].ToStr();
                zw.DataWplywu = row["dataww"].ToDateTime();
                zw.DataZakupu = row["datasz"].ToDateTime();
                zw.DowodZakupu = row["nrfaktury"].ToStr();
                zw.K_43 = row["k_43"].ToDecimal();
                zw.K_44 = row["k_44"].ToDecimal();
                zw.K_45 = row["k_45"].ToDecimal();
                zw.K_46 = row["k_46"].ToDecimal();
                jpk.Add(zw);
            }
        }
    }
}
        


Zapoznaj się z następnym dokumentem Generator JPK_FA za pomocą API.