Aktualna wersja: 20.04.30


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

Generowanie pliku JPK_FA z danych ERP za pomocą Plugin C#
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