Generator JPK_FA za pomocą API
Zapoznaj się z opisem pliku JPK_FA w zakresie analizy, weryfikacji, generowania z tabel Excel.
Program-JPK udostępnia API do generowania dokumentów JPK na podstawie zewnętrznych danych, które mogą być pobierane z rzeczywistych baz danych użytkowanych programów księgowych ERP.
Dodawanie własnych rozszerzeń wykonujemy w oknie Menu/JPK/API.

Lista własnych skryptów rozszerzających podstawowe funkcje programu.
Środowisko projektowania otwieramy za pomocą przycisku [Projektuj]. Utworzony i zapisany projekt uruchamiamy przyciskiem [Wykonaj].

Okno edytora kodu C#. W programie dostępny jest system podpowiedzi i automatycznego uzupełniania kodu „IntelliSense”

Po wykonaniu skryptu możemy wygenerować żądany plik XML z podglądem za pomocą wbudowanego edytora.
Wygenerowany JPK.XML można zapisać do pliku lub otworzyć do analizy i testowania. Z drugiej możliwości zalecamy korzystać podczas projektowania skryptu przez programistę.
- Zapis: jpk.SaveFile(@"c:\TMP\test_jpk_fa3.xml");
- Podgląd w oknie analizy: jpk.ShowJpkDialog();
- Podgląd samego XML: jpk.ShowXmlDialog();
Poniżej prezentujemy cały kod C# przykładu do generowania JPK_FA. Wykaz nazw użytych do wypełniania danych opisany jest w tabeli.
namespace Szark
{
using System;
using TGSoft.JPK;
using TGSoft.JPK.FA.Ver3;
public partial class Form1 : DevExpress.XtraEditors.XtraForm
{
private Xml jpk;
public Form1(object sender)
{
this.InitializeComponent();
}
public void Main()
{
JPK_FA();
}
private void JPK_FA()
{
jpk = new Xml();
jpk.NaglowekFirmy();
jpk.DataOd = new DateTime(2019, 11, 1);
jpk.DataDo = new DateTime(2019, 11, 30);
Faktura1();
Faktura2();
Korekta1();
Zaliczka1();
Zaliczka2();
//jpk.SaveFile(@"c:\TMP\test_jpk_fa3.xml");
jpk.ShowJpkDialog();
}
private void Faktura1()
{
var f = new Faktura();
f.DaneSprzedawcy(jpk);
f.NIPNabywcy = "8888888888";
f.NazwaNabywcy = "Firma Handlowa Skowronek";
f.AdresNabywcy = "00-001 Warszawa, Ul.Kościuszki 12";
f.NumerFaktury = "FV/123/2019";
f.KodWaluty = TGSoft.JPK.currCode_Type.EUR;
f.DataWystawienia = new DateTime(2019, 11, 1);
f.FakturaMPP = true;
var fw = new FakturaWiersz();
fw.NazwaTowaruUslugi = "Monitor";
fw.JednostkaMiary = "SZT";
fw.Ilosc = 5;
fw.CenaJednostkowaNetto = 1500;
fw.WartosciPozycji();
f.Add(fw);
fw = new FakturaWiersz();
fw.NazwaTowaruUslugi = "Komputer";
fw.JednostkaMiary = "SZT";
fw.Ilosc = 2;
fw.StawkaVat = TStawkaVAT.Vat23;
fw.CenaJednostkowaNetto = 5000;
f.Add(fw, true);
fw = new FakturaWiersz();
fw.NazwaTowaruUslugi = "Nazwa stawka-8";
fw.JednostkaMiary = "SZT";
fw.Ilosc = 3;
fw.StawkaVat = TStawkaVAT.Vat8;
fw.CenaJednostkowaNetto = 100;
f.Add(fw, true);
f.WartosciFaktury();
jpk.Add(f);
}
private void Faktura2()
{
var f = new Faktura();
f.DaneSprzedawcy(jpk);
f.NIPNabywcy = "2222222222";
f.NazwaNabywcy = "DWA Sp. z o.o.";
f.AdresNabywcy = "34-400 Nowy Targ, Szaflarska 1";
f.NumerFaktury = "FV/222/2019";
f.DataWystawienia = new DateTime(2019, 11, 3);
f.AddFw("Towar 23", "szt", 10, TStawkaVAT.Vat23, 100, 1000, 123, 1230, 0);
f.AddFw("Towar 8", "kg", 12, TStawkaVAT.Vat8, 200, 2400, 216, 2592, 0);
f.AddFw("Towar 5", "opk", 14, TStawkaVAT.Vat5, 11, 0);
f.AddFw("Towar 0", "szt", 1, TStawkaVAT.Vat0, 10, 0);
f.AddFw("Towar zw", "szt", 2, TStawkaVAT.VatZw, 20, 0);
f.AddFw("Towar np", "szt", 3, TStawkaVAT.VatNp, 30, 0);
jpk.Add(f, true);
}
private void Korekta1()
{
var f = new Faktura();
f.DaneSprzedawcy(jpk);
f.NIPNabywcy = "2222222222";
f.NazwaNabywcy = "DWA Sp. z o.o.";
f.AdresNabywcy = "34-400 Nowy Targ, Szaflarska 1";
f.NumerFaktury = "FK/1/2019";
f.DataWystawienia = new DateTime(2019, 11, 5);
f.DataDostawy = new DateTime(2019, 11, 3);
f.RodzajFaktury = JPKFakturaRodzajFaktury.KOREKTA;
f.NumerFakturyKorygowanej = "FV/222/2019";
f.PrzyczynaKorekty = "Zwrot towaru";
f.OkresFakturyKorygowanej = "Listopad 2019";
f.AddFw("Towar 23 - ZWROT", "szt", -10, TStawkaVAT.Vat23, 100, -1000, 123, -1230, 0);
jpk.Add(f, true);
}
private void Zaliczka1()
{
var f = new Faktura();
f.DaneSprzedawcy(jpk);
f.NIPNabywcy = "3333333333";
f.NazwaNabywcy = "TRZY Sp. z o.o.";
f.AdresNabywcy = "30-389 Kraków, Zawiła 1";
f.NumerFaktury = "FV/333/2019";
f.DataWystawienia = new DateTime(2019, 11, 10);
f.RodzajFaktury = JPKFakturaRodzajFaktury.ZAL;
f.AddFw("Zaliczka", "szt", 1, TStawkaVAT.Vat23, 1000, 0);
f.AddZw("Towar zamówiony 1", "szt", 2, TStawkaVAT.Vat23, 300, 600, 138);
f.AddZw("Towar zamówiony 2", "szt", 10, TStawkaVAT.Vat23, 500, 5000, 1150);
jpk.Add(f, true);
}
private void Zaliczka2()
{
var f = new Faktura();
f.DaneSprzedawcy(jpk);
f.NIPNabywcy = "3333333333";
f.NazwaNabywcy = "TRZY Sp. z o.o.";
f.AdresNabywcy = "30-389 Kraków, Zawiła 1";
f.NumerFaktury = "FV/340/2019";
f.DataWystawienia = new DateTime(2019, 11, 20);
f.RodzajFaktury = JPKFakturaRodzajFaktury.ZAL;
f.NrFaZaliczkowej = "FV/333/2019";
f.AddFw("Zaliczka dopłata", "szt", 1, TStawkaVAT.Vat23, 2000, 0);
var zw = new ZamowienieWiersz();
zw.NazwaTowaruUslugi = "Towar zamówiony 1";
zw.JednostkaMiary = "szt";
zw.Ilosc = 2;
zw.CenaJednostkowaNetto = 300;
f.Add(zw, true);
zw = new ZamowienieWiersz();
zw.NazwaTowaruUslugi = "Towar zamówiony 2";
zw.JednostkaMiary = "szt";
zw.Ilosc = 10;
zw.CenaJednostkowaNetto = 500;
f.Add(zw, true);
jpk.Add(f, true);
}
}
}

Drugi przykład prezentuje API do generowania JPK_FA z demonstracyjnych tabel DBF, które używane są w kreatorze importu DBF.
namespace Szark
{
using System;
using System.Data;
using TGSoft.DB;
using TGSoft.JPK;
using TGSoft.JPK.FA.Ver3;
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()
{
dbf = new ADS("", @"C:\Program-JPK\Import", "", "") { TableType = ADS.AdsTableType.DBF_NTX };
JPK_FA();
}
private void JPK_FA()
{
jpk = new Xml();
jpk.NaglowekFirmy();
jpk.DataOd = new DateTime(2019, 11, 1);
jpk.DataDo = new DateTime(2019, 11, 30);
Faktury();
jpk.ShowJpkDialog();
}
private void Faktury()
{
var dtFa = dbf.GetSQLTable("SELECT * FROM jpk_fa");
foreach (DataRow row in dtFa.Rows)
{
var f = new Faktura();
f.DaneSprzedawcy(jpk);
f.NazwaNabywcy = row["NazwaNab"].ToStr();
f.AdresNabywcy = row["AdresNab"].ToStr();
f.NumerFaktury = row["NumerFak"].ToStr();
f.DataWystawienia = row["DataWys"].ToDateTime();
WierszeFaktury(f, row["ID_FA"].ToInt());
f.WartosciFaktury();
jpk.Add(f);
}
}
private void WierszeFaktury(Faktura f, int id)
{
var dtFaw = dbf.GetSQLTable("SELECT * FROM jpk_faw WHERE id_fa=" + id.ToStr());
foreach (DataRow row in dtFaw.Rows)
{
var fw = new FakturaWiersz();
fw.NazwaTowaruUslugi = row["Nazwa"].ToStr();
fw.JednostkaMiary = row["JM"].ToStr();
fw.Ilosc = row["ILOSC"].ToDecimal();
fw.StawkaVat = TStawkaVAT.Vat23;
fw.CenaJednostkowaNetto = row["CenaNetto"].ToDecimal();
fw.WartosciPozycji();
f.Add(fw);
}
}
}
}
Zapoznaj się z następnym dokumentem Odczyt danych z bazy MS SQL SERVER EXPRESS.