**Case 1: Faktury — Transcript & Summary | SozAI**
Source: https://sozai.app/transcript/case-1-faktury/

Tutorial tworzenia automatycznego przepływu pracy do przetwarzania faktur w n8n z eksportem danych do Google Sheets.

## Key Takeaways

- Automatyzacja przetwarzania faktur w n8n pozwala na efektywne zarządzanie dokumentami i kontrolę kosztów.
- Integracja z Google Sheets umożliwia przejrzyste raportowanie i podsumowanie danych finansowych.
- Wykorzystanie kodu JavaScript i modelu Gemini usprawnia ekstrakcję i strukturyzację danych z plików PDF.
- Ręczny trigger z definiowaniem zakresu dat daje elastyczność w uruchamianiu przepływu pracy.
- Proces jest dostępny na darmowej platformie i nie wymaga zaawansowanej wiedzy programistycznej.

## What the video covers

- Prezentacja tworzenia workflow do przetwarzania faktur bez użycia modeli językowych na platformie n8n.
- Automatyzacja obejmuje wczytywanie plików PDF, ekstrakcję danych tekstowych oraz zapis wyników w Google Sheets.
- Workflow zawiera trzy zakładki w arkuszu: Sprzedaż, Zakupy oraz Podsumowanie z podsumowaniem VAT.
- Przetwarzanie faktur odbywa się na podstawie zakresu dat zdefiniowanego w triggerze ręcznym.
- Wykorzystanie węzłów takich jak Create spreadsheet, Move file, Edit fields, Download file, Extract from file, Code, If, Merge oraz agregatory sumujące wartości.
- Ekstrakcja danych z faktur PDF realizowana jest przez konwersję do tekstu i przetwarzanie kodem JavaScript wygenerowanym z pomocą modelu Gemini.
- Filtrowanie faktur według daty oraz rozdzielenie na faktury sprzedażowe i zakupowe.
- Wprowadzenie nagłówków i usuwanie pustych wierszy w arkuszach Google Sheets.
- Podsumowanie wartości netto, VAT i brutto oraz wyliczenie różnicy podatku VAT w zakładce Podsumowanie.
- Przykład bazuje na 200 fakturach zgromadzonych na Google Drive i pokazuje pełny proces automatyzacji księgowej.

Answers

## Questions about this video

Jakie narzędzia są używane do ekstrakcji danych z faktur PDF w tym workflow?

Do ekstrakcji danych z faktur PDF wykorzystuje się węzeł 'Extract from file' w n8n, który konwertuje pliki PDF na tekst, a następnie kod JavaScript wygenerowany z pomocą modelu Gemini przetwarza ten tekst na ustrukturyzowane dane.

W jaki sposób można filtrować faktury według daty w tym przepływie pracy?

Filtrowanie faktur według daty odbywa się poprzez zdefiniowanie zakresu dat w ręcznym triggerze, a następnie w kodzie JavaScript sprawdzane jest, czy data wystawienia faktury mieści się w tym zakresie, co pozwala na selekcję odpowiednich dokumentów.

Jakie są główne zakładki w arkuszu Google Sheets tworzonym przez workflow?

Workflow tworzy arkusz Google Sheets z trzema zakładkami: 'Sprzedaż' zawierającą faktury sprzedażowe, 'Zakupy' z fakturami kosztowymi oraz 'Podsumowanie', które zawiera sumy wartości netto, VAT, brutto oraz różnicę podatku VAT.

## Full Transcript — Download SRT & Markdown

00:06

Speaker A

Na start pokażę ci, jak stworzyć przepływ prac do przetwarzania faktur, krok po kroku, bez używania modeli językowych, ale w pełni działający na darmowej platformie n8n. To świetna baza, by zobaczyć, w jaki sposób działa cały mechanizm, od wczytywania plików,

00:21

Speaker A

przez przetwarzanie danych, aż po zapis wyników w Google Sheets. Workflow, który stworzymy, jest automatyzacją dla osób prowadzących własną działalność, które chcą mieć pełną kontrolę nad kosztami, fakturami rozliczeniowymi oraz podatkiem VAT.

00:34

Speaker A

Na koniec działania workflow otrzymasz gotowy arkusz Google Sheets z trzema zakładkami: zakładka Sprzedaż, tutaj znajdziesz wszystkie faktury sprzedażowe z wybranego okresu, zakładka Zakupy, ta zakładka zawiera faktury kosztowe, tak samo jak wcześniej masz tu komplet danych potrzebnych do rozliczeń, oraz zakładka Podsumowanie,

00:54

Speaker A

to jest zakładka, która zawiera podliczenie, zarówno faktur sprzedażowych, jak i kosztowych, i tutaj będzie pokazana różnica podatku VAT.

01:04

Speaker A

Przykład, który przygotowałem, bazuje na bazie 200 faktur, które nasza firma zgromadziła. Są to zarówno faktury sprzedażowe, jak i zakupowe. Umieściłem wszystkie faktury na Google Drive. Otwieram nowy workflow, klikam "Create workflow" i otwieram edytor.

01:21

Speaker A

Do uruchomienia tego workflow wykorzystam najprostszy sposób uruchomienia, to jest ręczny trigger. Możemy ten przepływ uruchamiać ręcznie wtedy, kiedy chcemy przetworzyć faktury, na przykład na koniec miesiąca. W triggerze zdefiniuję dwa pola, to jest datę początkową i końcową.

01:39

Speaker A

Workflow będzie przetwarzał tylko faktury wystawione w tym zakresie. Okej, kolejnym krokiem jest przygotowanie arkusza wynikowego.

01:47

Speaker A

Wykorzystano do tego następujące node'y: "Create spreadsheet", ten node utworzy arkusz Google Sheets z trzema zakładkami. Nazwę go "Faktury za okres", od daty początkowej do daty końcowej, oraz dodaję zakładki, trzy zakładki: Sprzedaż, Zakupy, Podsumowanie.

02:38

Speaker A

Nowo utworzony plik utworzył się w domyślnej lokalizacji i zawiera faktycznie trzy zakładki. Tu jest lista wszystkich faktur, wszystkich dwustu faktur.

03:05

Speaker A

Chciałbym przenieść ten plik teraz do zakładki, do folderu "Podsumowanie faktur". Wykorzystam do tego węzeł "Move file".

03:18

Speaker A

Wybieram plik po ID pliku oraz wybieram docelową lokalizację. Plik został już przeniesiony. Utworzony plik nie ma żadnych nagłówków i teraz utworzę je node'em "Edit fields".

03:56

Speaker A

Dodaję kilka pól i na przykład numer faktury, data dokumentu, kto jest sprzedawcą, kto jest nabywcą, kwota netto, kwota VAT oraz kwota brutto.

04:51

Speaker A

Zmieniam typ zmiennych kwot na zmienne numeryczne. Uruchamiam przepływ i te pola, te nagłówki wprowadzam teraz do arkusza.

05:14

Speaker A

Wybieram arkusz po jego ID i te pola wprowadzam do zakładki Sprzedaż. Warto zwrócić uwagę, że domyślne działanie funkcji "Append row" jest takie, że tworzy również pierwszy wiersz pusty.

05:56

Speaker A

Należy go usunąć ręcznie node'em "Delete rows or columns". Zwróć uwagę, że w arkuszu, który utworzyliśmy, w zakładce Sprzedaż znajdują się już nagłówki.

06:23

Speaker A

Mamy trzy zakładki, a więc tę procedurę trzeba jeszcze powtórzyć dwa razy, odpowiednio dla dwóch pozostałych zakładek.

06:41

Speaker A

Łączę wszystko w jeden przepływ i konfiguruję odpowiednie węzły: Zakupy. Ponownie Zakup oraz trochę inny zestaw pól dla zakładki z Podsumowaniem, na przykład typ faktury, kwota netto, to jest wartość numeryczna, kwota VAT i ostatnia to jest wartość brutto.

08:10

Speaker A

Tutaj zmieniamy nazwę zakładki na "Podsumowanie" i też usuwamy pierwszy wiersz z pustymi danymi. Nasz arkusz teraz zawiera nagłówki, trzy zakładki, w każdej zakładce są odpowiednie nagłówki.

08:43

Speaker A

Okej, kolejnym krokiem jest sprawdzenie, ile mamy w poszczególnej, w konkretnej lokalizacji faktur. Chcemy zwrócić wszystkie dokumenty i wybieramy folder "Faktury".

09:08

Speaker A

Klikając "Execute step", uzyskuję 200 dokumentów. W tym momencie te dokumenty jeszcze nie są załadowane do pamięci, na razie tylko je widzę.

09:23

Speaker A

Żebym miał je dostępne, muszę je wszystkie pobrać i do tego wykorzystuję węzeł "Download file", ID tego, co znaleźliśmy.

09:43

Speaker A

W tym momencie ładujemy 200 dokumentów, 200 dokumentów PDF do pamięci. Ten etap może zająć dłuższą chwilę, nawet 5 minut. Wszystkie dokumenty się pobrały i teraz, jak widzisz, mam pobranych 200 dokumentów typu PDF do pamięci.

10:06

Speaker A

Zwróć uwagę, że są to dokumenty PDF, potrzebujemy z nich wyciągnąć dane tekstowe. Wykorzystam do tego węzeł "Extract from file", to jest węzeł, który przekształci plik PDF na dane tekstowe.

10:23

Speaker A

Uzyskujemy wynik, to jest tekst, który jest wyciągnięty z każdej z dwustu faktur. Na tym etapie potrzebujemy przetworzyć te dane tekstowe w ustrukturyzowaną formę, to znaczy musimy wybrać informacje o wartościach, kwotach, sprzedawcy, nabywcy.

10:45

Speaker A

Wykorzystuję do tego węzeł "Code". Uwaga, nie jestem programistą, natomiast wykorzystamy narzędzie Gemini do przygotowania kodu JavaScript. Wprowadzam prompt, który przygotowałem chwilę wcześniej i tutaj już definiuję cele, dane wejściowe oraz informacje o strukturze.

11:16

Speaker A

Żeby ułatwić zadanie modelowi językowemu, wybieram jedną z przykładowych faktur: faktura o numerze 276. Dodatkowo dodam jeszcze tekst, który udało mi się wyciągnąć z modelu n8n.

11:41

Speaker A

To jest ten cały tekst, który udało mi się wyekstrahować. Używamy Gemini do tego, uzyskujemy kod w JavaScript.

12:02

Speaker A

Wklejam tutaj uzyskany kod. Jeszcze wcześniej wkleję cały zakres parametrów, który przyjmuje n8n. Przekopiuję cały ten kod, wklejam w "Code in JavaScript" oraz "Execute step".

12:53

Speaker A

To jest ta nasza przykładowa faktura. Teraz chciałbym filtrować faktury po dacie wystawienia, to znaczy na początku zdefiniowaliśmy zakres od - do, teraz chcemy sprawdzić, czy konkretna faktura mieści się w tym zakresie.

13:14

Speaker A

Wyciągam daty, które zostały odczytane przez nasz parser danych oraz datę początkową, którą na samym początku zdefiniowaliśmy w triggerze.

13:37

Speaker A

Odpowiedni zakres. Zwróć uwagę, że tylko kilka faktur zostało wybranych, to znaczy tylko te faktury mieszczą się w naszym zakresie.

13:52

Speaker A

Teraz będę chciał rozdzielić faktury sprzedażowe i zakupowe. Bardzo podobnie wykorzystuję węzeł "If" i tutaj warunek, czy dana faktura jest sprzedażowa.

14:21

Speaker A

Następnie faktury sprzedażowe wprowadzam do wcześniej utworzonego arkusza Google Sheets, tutaj w zakładkę Sprzedaż, odpowiednio mapując pola: numer faktury, data, sprzedawca, nabywca, kwota netto, kwota brutto i kwota VAT.

15:12

Speaker A

Informacje o tych fakturach zostały już przeniesione. Następnie mogę zrobić podsumowanie, sumę. I tutaj będę wybierał agregator właśnie sumy.

15:31

Speaker A

Ponownie kwota netto, kwota VAT, kwota brutto. Wykorzystuję węzeł "Edit fields" i nadaję znowu nagłówki: typ faktury, suma netto, suma brutto, suma VAT.

16:20

Speaker A

Przypisuję odpowiednie wartości i te same działania, tu już skopiuję, powtarzamy dla faktur zakupowych. Tu Zakup, podpinam odpowiednie wartości.

17:36

Speaker A

Ostatnim krokiem w tym przykładzie będzie połączenie wszystkich danych i wyeksportowanie tych informacji do trzeciej zakładki, Podsumowanie.

17:46

Speaker A

Wykorzystam do tego węzeł "Merge". Ponownie "Append row", ten arkusz, który utworzyliśmy na samym początku, zakładka Podsumowanie, podpinam odpowiednie wartości, klikam "Execute step".

18:41

Speaker A

Dodaję bardzo krótki kod, który będzie liczył różnicę pomiędzy tymi wartościami. Ponownie wykorzystam do tego model językowy, wskażę mu informacje, które mam dostępne.

19:26

Speaker A

Uzyskaliśmy kod w JavaScript, uruchamiamy ten przepływ, uzyskujemy podsumowanie i wprowadzamy je na koniec do zakładki z Podsumowaniem.

19:53

Speaker A

Podsumowanie. Mapuję pola, uruchamiamy przepływ. Zwróć uwagę, że uzyskaliśmy arkusz, który zawiera podsumowanie kwot oraz różnicę podatku VAT, to jest trzecia zakładka, Podsumowanie.

20:31

Speaker A

W zakładce Zakupy mamy wszystkie faktury, w których nasza firma była nabywcą, oraz wszystkie faktury, w których nasza firma była sprzedawcą.

Topics: automatyzacja faktur n8n Google Sheets przetwarzanie faktur workflow JavaScript ekstrakcja danych PDF podsumowanie VAT Gemini AI


---
This is the markdown twin of https://sozai.app/transcript/case-1-faktury/ — the same content, without the markup.
Published by SozAI (https://sozai.app). Reuse and quotation are allowed with attribution and a link back.
Machine-readable index: https://sozai.app/llms.txt · data API: https://sozai.app/api/
