Haiku.lt

Programowanie dodatkowych informacji

2024-06-16
Ten artykuł został przetłumaczony przez AI

To zaawansowana funkcja, która pozwala zmieniać pole z dodatkowymi informacjami na fakturze w zależności od tego, co jest wprowadzone w innych polach. Jeśli nie jesteś programistą, sugeruję po prostu przejrzenie poniższych przykładów, wybór tego, który odpowiada Twoim potrzebom i odpowiednie dostosowanie.

Przykłady

Tutaj znajdziesz różne przykłady, których możesz użyć w sekcji “Program dodatkowych informacji” na stronie Ustawień.

Określ termin płatności na podstawie daty faktury

const daysUntilDue = 10;
date.setDate(date.getDate() + daysUntilDue);
globalThis.result = `Proszę zapłacić do ${formatDate(date)}`;

Podczas tworzenia faktury pojawi się przycisk “Uruchom program dodatkowych informacji” obok pola “Dodatkowe informacje”. Po kliknięciu wypełni pole tekstem takim jak “Proszę zapłacić do 2024-06-26”.

Automatyczne określanie terminu płatności

// AUTO
const daysUntilDue = 10;
date.setDate(date.getDate() + daysUntilDue);
globalThis.result = `Proszę zapłacić do ${formatDate(date)}`;

Gdy zmienisz datę faktury lub jakiekolwiek inne pole, pole z dodatkowymi informacjami zaktualizuje się automatycznie. Pamiętaj, że to pole będzie automatycznie nadpisywane, więc Twoje ręczne zmiany mogą zostać utracone. Dlatego używaj automatycznego wariantu (pierwsza linia // AUTO) tylko wtedy, gdy chcesz, aby dodatkowe informacje zawsze wyglądały tak samo.

Określ termin płatności na podstawie daty faktury i języka (automatycznie)

// AUTO
const daysUntilDue = 10;
date.setDate(date.getDate() + daysUntilDue);
if (language == 'lt') {
  globalThis.result = `Prašome apmokėti sąskaitą iki ${formatDate(date)}`;
} else if (language === 'en') {
  globalThis.result = `Please pay by ${formatDate(date)}`;
} else if (language === 'pl') {
  globalThis.result = `Proszę zapłacić do ${formatDate(date)}`;
}

Określ metodę płatności na podstawie kupującego lub kwoty

let result = 'Proszę zapłacić';
if (buyer.includes('Sp. z o.o.') || buyer.includes('S.A.') || price > 50000) {
  result += ' PRZELEWEM';
} else {
  result += ' GOTÓWKĄ';
}
globalThis.result = result;

W tym przykładzie, jeśli pole kupującego zawiera “Sp. z o.o.” lub “S.A.” lub kwota faktury jest większa niż 500 (kwoty są przekazywane do programu w groszach, więc podano 50000), wtedy żądamy płatności przelewem. W przeciwnym razie żądamy płatności gotówką.

Łączenie informacji

Możesz połączyć te informacje, jeśli chcesz określić zarówno datę płatności, jak i metodę płatności.

const daysUntilDue = 10;
date.setDate(date.getDate() + daysUntilDue);
let result = `Proszę zapłacić do ${formatDate(date)}\n`;

result += 'Metoda płatności: ';
if (buyer.includes('Sp. z o.o.') || buyer.includes('S.A.') || price > 50000) {
  result += 'PRZELEW';
} else {
  result += 'GOTÓWKA';
}
globalThis.result = result;

Informacje dla programistów

Program dodatkowych informacji jest napisany w języku programowania JavaScript.

Program otrzymuje następujące informacje:

  • invoiceType - Typ faktury. Może być standard, proforma lub credit.
  • seriesName - nazwa serii
  • seriesId - numer serii
  • date - data faktury
  • language - język
  • seller - informacje o sprzedawcy
  • buyer - informacje o kupującym
  • issuer - osoba, która utworzyła fakturę
  • items - tablica usług lub produktów
  • price - suma pozycji faktury lub usług w groszach

Przykładowe dane przekazane do programu:

const invoiceType = 'standard';
const seriesName = 'INV';
const seriesId = 47;
const date = new Date(1718540924628);
const language = 'pl';
const seller = 'Kupujący';
const buyer = 'Sprzedawca';
const email = '';
const issuer = 'Jan Kowalski';
const items = [{ id: 0, name: '', unit: 'H87', amount: 1, price: 0 }];
const price = 0;

Jeśli pierwsza linia programu to komentarz // AUTO, program będzie wykonywany za każdym razem, gdy zmienią się pola.

// AUTO

Programy oznaczone // AUTO będą również wykonywane podczas wsadowej edycji wielu faktur.

formatDate to funkcja pomocnicza, która formatuje daty w formacie RRRR-MM-DD, np. 2024-06-26