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
Funkcja dostępna w Menu/JPK/API.
Należy dodać nowy projekt do listy i wybrać przycisk [Projektuj].
Program posiada wbudowane środowisko programisty z możliwością projektowania nowych form i programowania za pomocą składni C#.
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()
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.