JPK_FA - Import danych z własnego systemu ERP za pomocą Plugin

Funkcja znajduje się w Menu/JPK/Import API
Opis w przygotowaniu…
Przykładowy kod do tworzenia pliku JPK_FA.
using System;
using System.Collections.Generic;
using System.Data;
namespace TGSoft.JpkPlugin
{
public class JpkFa : JpkBase
{
//Input fields
public DateTime Date1 { get; set; }
public DateTime Date2 { get; set; }
// Output fields
public List<JpkFaItem> FaItems { get; set; }
public JpkFa()
{
FaItems = new List<JpkFaItem>();
}
public void Execute()
{
FillFaTable();
}
#region User Code
protected override string OdbcConnectionString()
{
return @"Driver={SQL Server};Server=localhost\SQLExpress;Database=tgsoft1;Trusted_Connection=Yes;";
}
private void FillFaTable()
{
Client = new Odbc(OdbcConnectionString());
var dt = Client.GetSQLTable(
string.Format("SELECT F.*, K.nip, K.nazwa1, K.ulica FROM gm_faktury F LEFT JOIN kontrahenci K ON (F.id_kontrahenci=K.id) WHERE F.data BETWEEN '{0:yyyy-MM-dd}' AND '{1:yyyy-MM-dd}'", Date1, Date2));
if (dt == null) return;
foreach (DataRow row in dt.Rows)
{
FaItems.Add(new JpkFaItem()
{
DataWystawienia = Tools.ToDateTime(row["data"]),
NumerFaktury = Tools.ToStr(row["nrfaktury"]),
NIPNabywcy = Tools.ToStr(row["nip"]),
NazwaNabywcy = Tools.ToStr(row["nazwa1"]),
AdresNabywcy = Tools.ToStr(row["ulica"]),
NIPSprzedawcy = CompanyNip,
NazwaSprzedawcy = CompanyName,
AdresSprzedawcy = CompanyAddress,
KodWaluty = "PLN",
NettoStawkaPodstawowa = Tools.ToDecimal(row["netto"]),
VATStawkaPodstawowa = Tools.ToDecimal(row["vat"]),
KwotaNaleznosci = Tools.ToDecimal(row["brutto"]),
FaRows = GetFaRows(Tools.ToInt(row["id"])),
ZaRows = GetZaRows(Tools.ToInt(row["id"])),
});
}
}
private JpkFaRowItem[] GetFaRows(int id)
{
var dtr = Client.GetSQLTable(string.Format("SELECT K.*, M.nazwa1, M.jm FROM gm_karty K LEFT JOIN gm_mater M ON (K.id_gm_mater=M.id) WHERE K.id_gm_faktury={0}", id));
if (dtr == null) return null;
decimal ilosc, cenaNetto;
List faRows = new List();
foreach (DataRow row in dtr.Rows)
{
ilosc = Tools.ToDecimal(row["ilosc"]);
cenaNetto = Tools.ToDecimal(row["cenanetto"]);
faRows.Add(new JpkFaRowItem()
{
NazwaTowaruUslugi = Tools.ToStr(row["nazwa1"]),
JednostkaMiary = Tools.ToStr(row["jm"]),
Ilosc = ilosc,
CenaJednostkowaNetto = cenaNetto,
WartoscNetto = Math.Round(ilosc * cenaNetto, 2, MidpointRounding.AwayFromZero),
StawkaVat = TStawkaVAT.Vat23,
});
}
return faRows.ToArray();
}
private JpkZaRowItem[] GetZaRows(int id)
{
return null;
}
#endregion
}
}
Pełny kod źródłowy biblioteki do pobrania ze strony: https://tgsoft.pl/programy/TGSoft.JpkPlugin.zip