Szablony wydruku

Edycja oraz tworzenie własnych szablonów

System szablonów wydruku w programie FakturaLight wykorzystuje XHTML i CSS jako podstawowy sposób definiowania struktury oraz wyglądu dokumentów. Do generowania dynamicznych (zmiennych) fragmentów szablonów został wykorzystany silnik inja pantor.

Obsługiwane znaczniki XHTML i CSS

Obsługa XHTML i CSS jest ograniczona do następujących znaczników i właściwości:

XHTML:

  • Podstawowa struktura: <html>, <head>, <body>
  • Elementy blokowe i inline: <div>, <span>, <p>, <br>
  • Listy: <ul>, <ol>, <li>
  • Linki i obrazy: <a href="">, <img src="" alt="">
  • Tabele: <table>, <tr>, <td>, <th>, <thead>, <tbody>
  • Elementy tekstowe: <b>, <i>, <strong>, <em>
  • Elementy strukturalne: <hr>

CSS:

  • Właściwości tekstowe: color, background-color, font-family, font-size, font-weight, font-style, text-decoration, text-align, vertical-align
  • Box model: margin, padding, border (podstawowe style i kolory), width, height
  • Wyświetlanie: display: block, inline, none, float
  • Style list: list-style-type
  • Właściwości tła: background-image, background-repeat, background-size, background-position
  • Właściwości ramek: border-top, border-bottom, border-right, border-collapse
  • Właściwości tekstu: white-space (nowrap, pre)

Ograniczenia:

  • ❌ Brak wsparcia dla skryptów (JavaScript)
  • ❌ Brak zaawansowanych właściwości CSS3 (flexbox, grid, animacje)
  • ❌ Brak pseudo-klas i pseudo-elementów (:hover, :before, :after)
  • ❌ Brak zaawansowanych selektorów CSS (np. selektorów potomków, atrybutów, nth-child)
  • ❌ Brak obsługi elementów takich jak <iframe>, <object>, <embed>
  • ⚠️ Wymagana poprawna, zamknięta składnia XHTML (np. <br /> zamiast <br>)

Budowa szablonów

Szablony składają się z plików HTML oraz CSS z osadzonymi dyrektywami inja, które pozwalają na:

  • Dynamiczne wstawianie danych - {{ zmienna }}
  • Warunkowe wyświetlanie - {% if warunek %}...{% else %}...{% endif %}
  • Pętle - {% for element in lista %}...{% endfor %}
  • Włączanie innych szablonów - {% include "plik.html" %}
  • Manipulacię danymi przez funkcje wbudowane - upper(), lower(), capitalize(), length(), join(), split(), default(), exists(), existsIn(), at(), max(), min(), round(), odd(), even(), divisibleBy(), int(), float()
  • Dziedziczenie szablonów - obsługa {% extends %} i {% block %}

Szczegółowy opis wszystkich dostępnych funkcji i możliwości silnika inja znajdziesz w oficjalnej dokumentacji inja pantor.

Oprócz standardowych funkcji inja, system został rozbudowany o następujące metody:

  • format_date(date, format)

    Formatuje datę według podanego wzorca.

    {{ format_date(invoice.issue_date, "dd.MM.yyyy") }}
  • _(text)

    Tłumaczy tekst na aktualny język. Tłumaczenia można modyfikować w ustawieniach programu.

    {{ _("Data wystawienia") }}
  • if_empty(value, fallback)

    Zwraca fallback jeśli wartość jest pusta.

    {{ if_empty(document.issuer.postal_city, document.issuer.city) }}
  • join(array, separator, key)

    Łączy elementy tablicy z separatorem, używając określonego klucza.

    {{ join(orders, ", ", "number") }}
  • split(string, separator)

    Dzieli string na tablicę.

    {% set numberParts = split(advance.number, " ") %}
  • max(value1, value2)

    Zwraca większą wartość.

    {{ max(default(calculated_widths.summary,0), default(calculated_widths.brutto-value-column,0)) }}

Rozszerzona została także obsługa HTML o specjalne atrybuty pozwalające na kontrolę drukowania tła oraz reset licznika stron:

  • data-bg-first-page-only

    Kontroluje czy tło ma być drukowane tylko na pierwszej stronie:

    <div data-bg-first-page-only="true">
            <!-- Tło będzie widoczne tylko na pierwszej stronie -->
        </div>
  • data-stick-bg-to-page-side

    Rozciąga krawędzie tła do brzegu strony (z pominięciem marginesów):

    <div data-stick-bg-to-page-side="left top right">
            <!-- Tło rozciągnięte do lewej, górnerj i prawej krawędzi strony -->
        </div>
    
        <div data-stick-bg-to-page-side="bottom">
            <!-- Tło rozciągnięte do dolnej krawędzi strony -->
        </div>
  • data-reset-page-count

    Resetuje licznik stron - numery stron będą liczone od nowa:

    <div data-reset-page-count="true">
              <!-- Od tego miejsca strony będą numerowane od 1 -->
          </div>

Struktura plików

Pliki z szablonami dla wszystkich typów dokumentów muszą znajdować się we wspólnym folderze. Program ładuje odpowiednie pliki HTML w zależności od rodzaju drukowanego dokumentu. Lista plików wykorzystywana przez parser z podziałem na typ drukowanego dokumentu przedstawia się następująco:

Pliki szablonu faktury:

  • invoice.html - główny plik szablonu
  • invoice_body.html - zawartość faktury
  • invoice_top.html - nagłówek z logo i danymi faktury
  • invoice_contractors.html - sekcja kontrahentów
  • invoice_items_table.html - tabela pozycji faktury
  • invoice_items_summary_table.html - podsumowanie według stawek VAT
  • invoice_bottom.html - podsumowanie i miejsca na podpisy
  • invoice_signatures.html - podpisy
  • invoice_styles.css - style CSS

Pliki szablonu zamówienia:

  • order.html - główny plik szablonu
  • order_body.html - zawartość zamówienia
  • order_top.html - nagłówek z logo i danymi zamówienia
  • order_contractors.html - sekcja kontrahentów
  • order_items_table.html - tabela pozycji zamówienia
  • order_items_summary_table.html - podsumowanie według stawek VAT
  • order_bottom.html - podsumowanie i miejsca na podpisy
  • order_styles.css - style CSS

Pliki szablonu zestawień:

  • sheet.html - główny plik szablonu
  • sheet_footer.html - stopka zestawienia
  • sheet_styles.css - style CSS

Pliki szablonu dokumentów magazynowych:

  • stock_document.html - główny plik szablonu
  • stock_document_body.html - zawartość dokumentu magazynowego
  • stock_document_top.html - nagłówek z logo i danymi dokumentu
  • stock_document_contractors.html - sekcja kontrahentów
  • stock_document_items_table.html - tabela pozycji dokumentu
  • stock_document_items_summary_table.html - podsumowanie według stawek VAT
  • stock_document_bottom.html - podsumowanie i miejsca na podpisy
  • stock_document_signatures.html - podpisy
  • stock_document_styles.css - style CSS

Pliki szablonu raportów kasowych:

  • cash_report.html - główny plik szablonu
  • cash_report_body.html - zawartość raportu kasowego
  • cash_report_top.html - nagłówek z logo i danymi raportu
  • cash_report_items_table.html - tabela pozycji raportu
  • cash_report_summary_table.html - podsumowanie raportu
  • cash_report_footer.html - stopka raportu
  • cash_report_signatures.html - podpisy
  • cash_report_styles.css - style CSS

Pliki szablonu not księgowych:

  • accounting_note.html - główny plik szablonu
  • accounting_note_body.html - zawartość noty księgowej
  • accounting_note_top.html - nagłówek z logo i danymi noty
  • accounting_note_contractors.html - sekcja kontrahentów
  • accounting_note_items_table.html - tabela pozycji noty
  • accounting_note_bottom.html - podsumowanie i miejsca na podpisy
  • accounting_note_signatures.html - podpisy
  • accounting_note_styles.css - style CSS

Pliki współdzielone:

  • contractors.html - sekcja z danymi kontrahentów
  • items_table.html - tabela pozycji
  • styles.css - podstawowe style
  • calculated_styles.css - dynamiczne style dla tabeli z podsumowaniem według stawek VAT.

Dostęp do danych w szablonach

Dane umożliwiające wygenerowanie wydruku dostępne są w plikach szablonów jako obiekty JSON. Aby odwołać się do konkretnych informacji, należy użyć notacji kropkowej - na przykład invoice.number oznacza numer faktury, a invoice.contractor.name to nazwa kontrahenta. Obiekty JSON dostępne w poszczególnych szablonach:

Współdzielony obiekt ustawień wydruku, dostępny w każdym pliku

{
  "print_options": {
    "logo": "data:image/png;base64,...",              // Logo firmy w formacie base64
    "print_footer": true,                             // Czy drukować stopkę
    "print_vat_always": true,                         // Czy zawsze drukować VAT (nawet dla zwolnionych)
    "print_pkwiu": true,                              // Czy drukować kody PKWiU/CN
    "print_extra_decimlas_in_count": true,            // Czy drukować dodatkowe miejsca dziesiętne w ilości
    "print_order_number_in_invoices": true,           // Czy drukować numer zamówienia w fakturach
    "print_exchange_rate": true,                      // Czy drukować kurs waluty
    "print_discount": true,                           // Czy drukować rabaty
    "print_percent_discount": true,                   // Czy drukować rabaty procentowe
    "print_volume_discount": true,                    // Czy drukować rabaty kwotowe
    "print_contractor_phone_number": true,            // Czy drukować telefon kontrahenta
    "print_recipient_nip": true,                      // Czy drukować NIP odbiorcy
    "print_payment_qr_code": true,                    // Czy drukować kod QR do płatności
    "print_unit": true,                               // Czy drukować jednostki miary
    "print_count": true,                              // Czy drukować ilość dla danej pozycji
    "print_brutto_price": true,                       // Czy drukować ceny brutto
    "print_netto_price": true,                        // Czy drukować ceny netto
    "print_payment_date": true,                       // Czy drukować termin zapłaty
    "print_payment_date_paid": true,                  // Czy drukować informację o tym czy faktura jest opłacona
    "print_paid_and_remaining_amount": true,          // Czy drukować kwoty zapłacono i pozostało do zapłaty
    "print_transaction_date_on_advances": false,      // Czy drukować datę transakcji na zaliczkach
    "print_transaction_date": true,                   // Czy drukować datę transakcji
    "print_price_on_stock_document": true,            // Czy drukować ceny na dokumentach magazynowych
    "print_jpk_flags": true,                          // Czy drukować oznaczenia JPK
    "print_payment_demand_signature": true,           // Czy drukować miejsce na podpis wierzyciela na wezwaniu do zapłaty
    "signature_type": "SignatureType_PrintAllIfOneNotEmpty",  // Typ wyświetlania podpisów, dostępe wartości: Signature_PrintAllIfOneNotEmpty lub Signature_PrintOnlyNotEmpty
    "stock_document_wz_type": "SellBrutto",           // Jaki typ cen drukować na dokumencie WZ. Dostępne wartości: SellBrutto, SellNetto, PurchaseNetto
    "footer": {                                       // Stopka ze zdefiniowanymi krawędziami
      "top_left": "Nazwa firmy",                      // Lewy górny róg
      "top_right": "NIP: 1234567890",                 // Prawy górny róg
      "bottom_left": "Tel.: +48 123 456 789",         // Lewy dolny róg
      "bottom_right": "Strona {{ current_page }} z {{ pages_total }}" // Prawy dolny róg
    }
  }
}

Obiekt dostępny w szablonie faktury

{
  "invoice": {
    "type": "vat",                                    // Typ faktury (vat, pro forma, zaliczkowa, itp.)
    "type_name": "Faktura",                           // Nazwa typu faktury do wyświetlenia
    "sale_type": "wdt",                               // Typ sprzedaży (krajowa, WDT, exportowa, OSS itp.) 
    "number": "FV/2024/001",                          // Numer faktury
    "issue_place": "Warszawa",                        // Miejsce wystawienia faktury
    "issue_date": "2024-01-15",                       // Data wystawienia faktury
    "transaction_date": "2024-01-15",                 // Data zakończenia dostawy/usługi
    "transaction_date_as_month": "styczeń 2024",      // Data transakcji jako miesiąc (dla faktur miesięcznych)
    "payment_date": "2024-02-15",                     // Termin zapłaty
    "payment_date_days": 7,                           // Liczba dni do zapłaty
    "payment_method": "przelew",                      // Sposób zapłaty (przelew, gotówka, karta)
    "custom_related_document_name": "umowa",          // Nazwa powiązanego dokumentu (np. umowa nr 5/2026)
    "payment_received_date": "2024-01-20",            // Data otrzymania płatności
    "advance_received_date": "2024-01-20",            // Data otrzymania zaliczki
    "fiscalization_time": "2024-01-15 10:30:00",      // Czas fiskalizacji
    "fiscalization_header_number": "123456",          // Numer nagłówka fiskalnego nadawany przez drukarkę fiskalną
    "currency": "PLN",                                // Waluta faktury
    "currency_rate": "4,2600",                        // Kurs waluty
    "currency_rate_date": "2024-01-15",               // Data kursu waluty
    "margin_type": "procedura marży dla biur podróży",// Typ marży (dla faktur marża)
    "reverse_charge": false,                          // Czy zastosowano odwrotne obciążenie VAT
    "split_payment": false,                           // Czy zastosowano mechanizm podzielonej płatności
    "is_payment_date_paid": false,                    // Czy faktura została opłacona
    "vat_exemption": false,                           // Czy faktura jest zwolniona z VAT
    "vat_exemption_reason": "",                       // Podstawa zwolnienia z VAT
    "has_items_from_order": false,                    // Czy faktura zaliczkowa zawiera pozycje z zamówienia
    "has_discount": false,                            // Czy faktura ma rabaty
    "correction_reason": "zwrot",                     // Przyczyna korekty (dla faktur korygujących)
    "brutto_value_in_words": "jeden tysiąc złotych",  // Wartość brutto słownie
    "is_refund": false,                               // Czy to faktura dotycząca zwrotu (ujemna wartość faktury)
    "signature_issuer": "Jan Kowalski",               // Podpis wystawcy faktury
    "signature_recipient": "Anna Nowak",              // Podpis odbiorcy faktury
    "jpk_flags": "GTU_01, GTU_02, FP...",             // Oznaczenia JPK (Jednolity Plik Kontrolny)
    "notes": "Uwagi do faktury",                      // Uwagi do faktury
    "bdo": "000123456",                               // Numer BDO (Baza Danych Odpadowych)
    "ksef_gate": "test",                              // Brama KSeF (test, prod)
    "ksef_number": "2024/01/15/0001/123456789",       // Numer KSeF
    "ksef_session_number": "2024-01-15T10:30:00",     // Numer sesji KSeF
    "ksef_upload_date": "2024-01-15 10:30:00",        // Data wysłania do KSeF
    "ksef_approval_date": "2024-01-15 10:31:00",      // Data zatwierdzenia przez KSeF
    "ksef_hash": "abc123def456",                      // Hash dokumentu KSeF
    "ksef_url": "https://ksef.gov.pl/web/verify/...", // URL weryfikacji KSeF
    "ksef_qr_code": "data:image/svg+xml;base64,...",  // Kod QR KSeF

    // Rachunek bankowy
    "account": {                                      // Dane rachunku bankowego
      "number": "12 1234 5678 9012 3456 7890 1234",   // Numer rachunku bankowego
      "bank": "PKO Bank Polski",                      // Nazwa banku
      "swift": "BPKOPLPW",                            // Kod SWIFT
      "bank_with_swift": "PKO Bank Polski (BPKOPLPW)" // Nazwa banku z kodem SWIFT
    },
    "vat_account": {...},                             // Dane rachunku do VAT (struktura jak account)

    // Dane nabywcy
    "contractor": {                                   
      "name": "Firma XYZ Sp. z o.o.",                 // Nazwa wyświetlana (nazwa firmy lub jeśli pusta to imię i nazwisko)
      "company_name": "Firma XYZ Sp. z o.o.",         // Nazwa firmy
      "address": "ul. Przykładowa 123",               // Adres (ulica i numer)
      "postal_code": "00-001",                        // Kod pocztowy
      "postal_city": "Warszawa",                      // Miasto pocztowe
      "city": "Warszawa",                             // Miasto
      "country": "Polska",                            // Nazwa kraju
      "country_code": "PL",                           // Kod kraju (ISO)
      "nip": "1234567890",                            // Numer NIP
      "regon": "123456789",                           // Numer REGON
      "pesel": "",                                    // Numer PESEL (dla osób fizycznych)
      "passport": "",                                 // Numer paszportu (dla cudzoziemców)
      "eori": "",                                     // Numer EORI (dla handlu UE)
      "extra_number_type": "regon",                   // Typ dodatkowego numeru (regon, pesel, passport, eori)
      "phone_number": "+48 123 456 789",              // Numer telefonu
      "email": "kontakt@firma.pl",                    // Adres email
      "legal_entity": true,                           // Czy podmiot prawny (true) czy osoba fizyczna (false)
      "first_name": "",                               // Imię (dla osób fizycznych)
      "surname": "",                                  // Nazwisko (dla osób fizycznych)
      "house_number": "123",                          // Numer domu
      "apartment_number": "45",                       // Numer mieszkania
      "street": "ul. Przykładowa",                    // Nazwa ulicy
      "gln": "1234567890123",                         // Numer GLN (Global Location Number)
      "voivodeship": "Mazowieckie",                   // Województwo
      "county": "Warszawa",                           // Powiat
      "community": "Warszawa",                        // Gmina
      "role": "contractor"                            // Rola w dokumencie (contractor, recipient, issuer, factor, payer, jst_issuer, jst_recipient, vat_group_issuer, vat_group_recipient)
    },
    "issuer": {...},                                  // Dane wystawcy faktury (struktura jak contractor)
    "recipient": {...},                               // Dane odbiorcy (struktura jak contractor)

    // Pozycje faktury
    "items": [                                        // Pozycje faktury (tablica)
      {
        "name": "Produkt A",                          // Nazwa towaru lub usługi
        "count": "10,00",                             // Ilość
        "unit": "szt.",                               // Jednostka miary
        "pkwiu": "25.62.1",                           // Kod PKWiU/CN
        "netto_price": "100,00",                      // Cena jednostkowa netto
        "brutto_price": "123,00",                     // Cena jednostkowa brutto
        "percent_discount": "10,00",                  // Rabat procentowy
        "netto_discount": "10,00",                    // Rabat kwotowy netto
        "brutto_discount": "12,30",                   // Rabat kwotowy brutto
        "netto_value": "900,00",                      // Wartość netto pozycji
        "tax_rate": "23%",                            // Nazwa stawki VAT
        "tax_value": "207,00",                        // Kwota VAT
        "brutto_value": "1107,00",                    // Wartość brutto pozycji
        "code": "PROD001",                            // Kod produktu
        "barcode": "1234567890123",                   // Kod kreskowy
        "catalog_number": "CAT001",                   // Numer katalogowy
        "producer": "Producent XYZ",                  // Nazwa producenta
        "fiscal_name": "Nazwa fiskalna",              // Nazwa fiskalna
        "description": "Opis produktu",               // Opis produktu
        "netto_weight": "1,50000",                    // Waga netto
        "brutto_weight": "2,00000",                   // Waga brutto
        "netto_value_before_discount": "1000,00",     // Wartość netto przed rabatem
        "brutto_value_before_discount": "1230,00",    // Wartość brutto przed rabatem
        "netto_discount_value": "100,00",             // Wartość rabatu netto
        "brutto_discount_value": "123,00",            // Wartość rabatu brutto
        "purchase_netto_price": "80,00",              // Cena zakupu netto
        "purchase_brutto_price": "98,40",             // Cena zakupu brutto
        "purchase_netto_value": "800,00",             // Wartość zakupu netto
        "purchase_brutto_value": "984,00",            // Wartość zakupu brutto
        "gtu": "GTU_01",                              // Oznaczenie GTU (Grupa Towarów i Usług)
        "jpk_procedure": "WSTO_EE",                   // Procedura JPK
        "pkob": "PKOB_01",                            // Kod PKOB
        "attachment_15": false,                       // Procedura z załącznika 15 ustawy o VAT (mechanizm podzielonej płatności)
        "excise_value": "0,00",                       // Wartość akcyzy
        "user_field_1": "Pole użytkownika 1",         // Pole użytkownika 1
        "user_field_2": "Pole użytkownika 2",         // Pole użytkownika 2
        "user_field_3": "Pole użytkownika 3",         // Pole użytkownika 3
        "user_field_4": "Pole użytkownika 4",         // Pole użytkownika 4
        "user_field_5": "Pole użytkownika 5",         // Pole użytkownika 5
        "user_field_6": "Pole użytkownika 6",         // Pole użytkownika 6
        "user_field_7": "Pole użytkownika 7",         // Pole użytkownika 7
        "user_field_8": "Pole użytkownika 8",         // Pole użytkownika 8
        "user_field_9": "Pole użytkownika 9",         // Pole użytkownika 9
        "user_field_10": "Pole użytkownika 10",       // Pole użytkownika 10
        "user_field_11": "Pole użytkownika 11",       // Pole użytkownika 11
        "user_field_12": "Pole użytkownika 12",       // Pole użytkownika 12
        "user_field_13": "Pole użytkownika 13",       // Pole użytkownika 13
        "user_field_14": "Pole użytkownika 14",       // Pole użytkownika 14
        "user_field_15": "Pole użytkownika 15",       // Pole użytkownika 15
        "images": ["data:image/jpg;hash,abc123"]      // Zdjęcia produktu
      }
    ],

    // Podsumowanie
    "summary": {                                      // Podsumowanie według stawek VAT
      "tax_rates": [                                  // Podsumowanie według stawek VAT w walucie faktury
        { 
          "netto_value": "900,00",                    // Wartość netto dla stawki
          "tax_value": "207,00",                      // Kwota VAT dla stawki
          "brutto_value": "1107,00",                  // Wartość brutto dla stawki
          "tax_rate": "23%"                           // Nazwa stawki VAT
        } 
      ],  
      "tax_rates_pln": [                              // Podsumowanie według stawek VAT w PLN
        { 
          "netto_value": "900,00",                    // Wartość netto w PLN
          "tax_value": "207,00",                      // Kwota VAT w PLN
          "brutto_value": "1107,00",                  // Wartość brutto w PLN
          "tax_rate": "23%"                           // Stawka VAT
        } 
      ],
      "total_netto_value": "900,00",                  // Suma wartości netto w walucie faktury
      "total_netto_value_pln": "900,00",              // Suma wartości netto w PLN
      "total_tax_value": "207,00",                    // Suma kwot VAT w walucie faktury
      "total_tax_value_pln": "207,00",                // Suma kwot VAT w PLN
      "total_brutto_value": "1107,00",                // Suma wartości brutto w walucie faktury
      "total_brutto_value_pln": "1107,00"             // Suma wartości brutto w PLN
    },  

    // Płatność
    "paid_value": {                                   // Wartość zapłacona
      "value": "500,00",                              // Wartość z uwzględnieniem znaku
      "value_abs": "500,00",                          // Wartość bezwzględna
      "currency": "PLN",                              // Waluta
      "value_pln": "500,00",                          // Wartość w PLN
      "value_pln_abs": "500,00"                       // Wartość bezwzględna w PLN
    },
    
    // Pozostała płatność
    "remaining_value": {                              // Wartość pozostała do zapłaty
      "value": "607,00",                              // Wartość z uwzględnieniem znaku
      "value_abs": "607,00",                          // Wartość bezwzględna
      "currency": "PLN",                              // Waluta
      "value_pln": "607,00",                          // Wartość w PLN
      "value_pln_abs": "607,00"                       // Wartość bezwzględna w PLN
    },

    // Poprzednie zaliczki (tablica)
    "previous_advances": [
      {
        "number": "FV/2024/001",                      // Numer faktury zaliczkowej
        "issue_date": "2024-01-10",                   // Data wystawienia zaliczki
        "brutto_value": {                             // Wartość brutto zaliczki
          "value": "500,00",                          // Wartość z uwzględnieniem znaku
          "value_abs": "500,00",                      // Wartość bezwzględna
          "currency": "PLN",                          // Waluta
          "value_pln": "500,00",                      // Wartość w PLN
          "value_pln_abs": "500,00"                   // Wartość bezwzględna w PLN
        }
      }
    ],
    "additional_descriptions": [                      // Dodatkowe opisy (tablica)
      { 
        "key": "Opis dodatkowy",                      // Klucz opisu
        "value": "Wartość dodatkowego opisu"          // Wartość opisu
      }
    ]
  },

  "annotation": "Annotation_Original",                // Adnotacja dokumentu (Annotation_Original, Annotation_Copy, Annotation_Duplicate, Annotation_OriginalAndCopy)
  "language": "pl",                                   // Język dokumentu (pl, en, cs, fi, fr, es, nl, de, ru, sv, uk, it i wszystkie pary języków pl_*)
  "duplicate_date": "2024-01-20",                     // Data duplikatu (jęzeli zaznaczona opcja w podglądzie wydruku)
  "corrected_invoice": {                              // Korygowana
    "number": "FV/2024/001",                          // Numer korygowanej faktury
    "issue_date": "2024-01-15",                       // Data wystawienia korygowanej faktury
    "items": [...]                                    // Pozycje korygowanej faktury (struktura jak invoice.items)
  },
  "original_corrected_invoice": {                     // Pierwotna faktura korygowana
    // Struktura jak corrected_invoice (ma znaczenie w przypadku kilku korekt)
  },
  "previous_correction_invoices": [                   // Poprzednie faktury korygujące
    // Tablica obiektów o strukturze jak invoice
  ],
  "orders": [                                         // Tablica powiązanych zamówień
    // Tablica obiektów o strukturze jak order
  ],
  "stock_documents": [                                // Tablica powiązanych dokumentów magazynowych
    // Tablica obiektów o strukturze jak stock_document
  ],
},

Obiekt dostępny w szablonie zamówienia

{
  "order": {
    "type": "OrderType_Order",                      // Typ dokumentu (OrderType_Order, OrderType_Offer, OrderType_SupplierOrder)
    "type_name": "Zamówienie",                      // Nazwa typu dokumentu (Zamówienie, Oferta, Zamowienie do dostawcy)
    "sale_type": "Export",                          // Typ sprzedaży (krajowa, WDT, exportowa, OSS itp.) 
    "number": "Z/2024/001",                         // Numer zamówienia
    "issue_date": "2024-01-10",                     // Data wystawienia
    "transaction_date": "2024-01-15",               // Termin realizacji
    "transaction_date_days": 5,                     // Termin realizacji jako liczba dni
    "currency": "PLN",                              // Waluta
    "currency_rate": "1,0000",                      // Kurs waluty
    "currency_rate_date": "2024-01-10",             // Data kursu waluty
    "has_discount": false,                          // Czy ma rabaty
    "account": {...},                               // Rachunek bankowy (struktura jak invoice.account)
    "vat_account": {...},                           // Rachunek VAT (struktura jak invoice.vat_account)
    "notes": "Uwagi do zamówienia",                 // Uwagi
    "recipient": {...},                             // Odbiorca (struktura jak invoice.contractor)
    "contractor": {...},                            // Kontrahent (struktura jak invoice.contractor)
    "issuer": {...},                                // Wystawca (struktura jak invoice.contractor)
    "bdo": "000123456",                            // Numer BDO
    "items": [...],                                 // Pozycje zamówienia (struktura jak invoice.items)
    "paid_value": {...},                            // Wartość zapłacona (struktura jak invoice.brutto_value)
    "remaining_value": {...},                        // Wartość pozostała do zapłaty (struktura jak invoice.brutto_value)
    "summary": {...}                                // Podsumowanie według stawek VAT (struktura jak invoice.summary)
  }
}

Obiekt dostępny w szablonie dokumentu magazynowego

{
  "stock_document": {
    "type": "StockDocumentType_WZ",                 // Typ dokumentu (StockDocumentType_PZ, StockDocumentType_WZ, StockDocumentType_MM, StockDocumentType_PW, StockDocumentType_RW)
    "type_name": "Wydanie magazynowe",              // Nazwa typu dokumentu
    "number": "WZ/2024/001",                        // Numer dokumentu magazynowego
    "issue_place": "Warszawa",                      // Miejsce wystawienia
    "issue_date": "2024-01-15",                     // Data wystawienia
    "transaction_date": "2024-01-15",               // Data transakcji
    "currency": "PLN",                              // Waluta
    "currency_rate": "1,0000",                      // Kurs waluty
    "currency_rate_date": "2024-01-15",             // Data kursu waluty
    "brutto_value_in_words": "jeden tysiąc złotych",// Wartość brutto słownie
    "notes": "Uwagi do dokumentu",                  // Uwagi
    "bdo": "",                                      // Numer BDO
    "recipient": {...},                             // Odbiorca (struktura jak invoice.contractor)
    "contractor": {...},                            // Kontrahent (struktura jak invoice.contractor)
    "issuer": {...},                                // Wystawca (struktura jak invoice.contractor)
    "items": [...],                                 // Pozycje dokumentu (struktura jak invoice.items)
    "is_correction": false,                         // Czy to korekta
    "stock_name": "Magazyn główny",                 // Nazwa magazynu
    "source_stock_name": "Magazyn źródłowy",        // Nazwa magazynu źródłowego (dla MM)
    "signature_issuer": "Jan Kowalski",             // Podpis wystawcy
    "signature_recipient": "Anna Nowak",            // Podpis odbiorcy
    "invoice_number": "FV/2024/001",                // Numer powiązanej faktury
    "summary": {                                    // Podsumowanie
      "total_netto_value": "900,00",                // Suma wartości netto sprzedaży
      "total_brutto_value": "1107,00",              // Suma wartości brutto sprzedaży
      "total_purchase_netto_value": "800,00",       // Suma wartości netto zakupu
      "total_purchase_brutto_value": "984,00",      // Suma wartości brutto zakupu
      "total_count": "10,00"                        // Suma ilości
    }
  }
}

Obiekt dostępny w szablonie raportu kasowego

{
  "cash_report": {
    "date": "2024-01-15",                           // Data raportu
    "count_in": 5,                                  // Liczba wpłat
    "count_out": 3,                                 // Liczba wypłat
    "type": "CashReportType_Daily",                 // Typ raportu
    "number": "RK/2024/001",                        // Numer raportu
    "begin_date": "2024-01-15",                     // Data początkowa
    "end_date": "2024-01-15",                       // Data końcowa
    "total_in": "1500,00",                          // Suma wpłat
    "total_out": "800,00",                          // Suma wypłat
    "begin_balance": "1000,00",                     // Saldo początkowe
    "end_balance": "1700,00",                       // Saldo końcowe
    "items": [                                      // Pozycje raportu
      {
        "date": "2024-01-15",                       // Data operacji
        "number": "OP/2024/001",                    // Numer operacji
        "description": "Wpłata gotówkowa",          // Opis operacji
        "value_in": "500,00",                       // Wartość wpłaty
        "value_out": "0,00"                         // Wartość wypłaty
      }
    ]
  },
  "company_info": {...},                            // Informacje o firmie (struktura jak invoice.contractor)
  "print_company_info": true                        // Czy drukować informacje o firmie
}

Obiekt JSON dostępny w szablonie noty księgowej

{
  "accounting_note": {
    "number": "NK/2024/001",                         // Numer noty księgowej
    "issue_date": "2024-01-15",                      // Data wystawienia
    "payment_date": "2024-01-15",                    // Termin płatności
    "payment_method": "przelew",                     // Sposób płatności
    "currency": "PLN",                               // Waluta
    "account": {...},                                // Rachunek bankowy (struktura jak invoice.account)
    "signature_issuer": "Jan Kowalski",              // Podpis wystawcy
    "signature_recipient": "Anna Nowak",             // Podpis odbiorcy
    "notes": "Uwagi do noty księgowej",              // Uwagi
    "contractor": {...},                             // Kontrahent (struktura jak invoice.contractor)
    "issuer": {...},                                 // Wystawca (struktura jak invoice.contractor)
    "total_credit": "1107,00",                       // Suma uznania
    "total_debit": "1107,00",                        // Suma obciążenia
    "bdo": "",                                       // Numer BDO
    "items": [                                       // Pozycje noty księgowej
      {
        "name": "Sprzedaż towarów",                  // Nazwa pozycji
        "credit": "1107,00",                         // Wartość uznania
        "debit": "0,00"                              // Wartość obciążenia
      }
    ]
  }
}

Uniwersalny obiekt dostępny w szablonach zestawień, stanów magazynowych i inwentaryzacji.

{
  "title": "Stany magazynowe na dzień: 15.01.2024",   // Tytuł raportu/zestawienia
  "date": "2024-01-15",                               // Data raportu/zestawienia
  "all_stocks": true,                                 // Czy wszystkie magazyny
  "from_nature_list": false,                          // Czy spis z natury
  "stocks": ["Magazyn główny", "Magazyn pomocniczy"], // Lista magazynów, których dotyczy wydruk
  "header": [                                         // Nagłówek tabeli
    {
      "name": "Nazwa",                                // Nazwa kolumny
      "type": "text",                                 // Typ kolumny (text, number)
      "total": ""                                     // Suma wartości dla kolumny, jeżeli jest typu number
    },
    {
      "name": "Cena",                                
      "type": "number",                              
      "total": "100,00"                             
    }
  ],
  "rows": [                                         // Wiersze tabeli
    ["Produkt A", "100,00"]
  ],
  "company_info": {...},                            // Informacje o firmie (struktura jak invoice.contractor)
  "print_company_info": false                       // Czy drukować informacje o firmie
}

Tworzenie własnych szablonów

Tworzenie własnych szablonów najlepiej rozpocząć od eksportu jednego z szablonów wbudowanych i późniejszej jego modyfikacji. W tym celu należy kliknąć Ustawienia -> Ustawienia programu, następnie Ustawienia wydruku, zaznaczyć wybrany szablon i kliknąć Eksportuj.

Aby skorzystać utworzonego szablonu, należy go zaimportować klikając przycisk Importuj -> Z katalogu i wybierając folder z szablonem.

Szablony wydruku