Przejdź do treści

Wystawiaj i wysyłaj faktury jednym przyciskiem myszy — Make + Notion + Infakt API

Opublikowano:7 min

I oto nastał ten czas… Właśnie dzwon wybił po raz trzydziesty. Nieduże stado kruków, z nieznośnym skrzekiem wzbiło się w powietrze, kierując się w stronę ledwo już widocznego zza horyzontu słońca. Okoliczni mieszkańcy pospiesznie chowają się do swoich domostw, skrupulatnie ryglując drzwi i okna. W powietrzu czuć nieprzyjemny zapach potu…

Stało się – nadszedł koniec miesiąca.

Pora przywdziać ciężką, antracytową togę, zarzucić ogromny kaptur, zapalić dwie ceremonialne świecie i rozpocząć przerażający rytuał buchalterii.


Ach biurokracja, ach faktury! Ulubiony temat każdego freelancera, od którego na samą myśl usta i ręce same składają się do ekstatycznego WOOHOO! 🎉

Ross się cieszy, bo będzie wystawiać faktury
Ty, kiedy wiesz, że dzisiaj wieczorem musisz wystawić 17 faktur i wysłać je wszystkie, ładnie do klientów.

Tak naprawdę, to nie. Koniec miesiąca ssie.


Spis treści

Otwórz spis treści

Problem

Być może tak jak i ja, miesiąc w miesiąc wystawiasz ręcznie takie same lub bardzo podobne faktury. Powiedzmy, że dla klientów, z którymi wiąże Cię dłuższa współpraca. I być może, podobnie jak ja, myślisz sobie “Na bank jest jakiś lepszy, sprytniejszy sposób, żeby to ogarnąć”. I mimo tego, że ta myśl jest całkiem realna, to momentalnie dominowana jest przez drugą myśl typu: “No dobra, przecież to tylko chwila, wymyślenie rozwiązania zajmie mi 5 razy tyle”.

I tak co miesiąc, w koło Macieju.

No more! Bo, cały na biało (a raczej fioletowo), pojawia się Make.

Rozwiązanie

Make to cudowny wynalazek. Wciąż odkrywam pełne możliwości tego narzędzia, natomiast już teraz z sukcesem wykorzystuję tę platformę do kilku regularnych czynności, które zaliczam do kategorii nie chcem, ale muszem. Jedną z takich czynności jest niewątpliwie wystawianie i wysyłanie faktur, i to właśnie tego byka spróbuję złapać za rogi.


Tworzenie scenariusza

Mięsem Make są Scenarios, czyli sekwencje następujący po sobie (a czasem i równolegle) zdarzeń. Czym są scenariusze i jak działają przeczytasz nieco szerzej tutaj.

Przykładowy scenariusz w Make.com
Przykładowy scenariusz w Make.com

Zatem do dzieła! 🙌

1. Moduł Notion i Search Objects

Triggerem, czyli zdarzeniem wywołującym całą sekwencję będzie czynność wykonana w Notion. Konkretnie mówiąc, będzie to po prostu kliknięcie checkboxa (a raczej dwóch).

Lecimy:

  1. Przechodzę do Make i wybieram z lewego sidebara Scenarios i + Create a new scenario
  2. Klikam w pustą jeszcze planszę prawym przyciskiem myszy, wybieram Add module i odnajduję Notion (pomaga mi w tym charakterystyczny logotyp).
  3. Następnie, już w obrębie modułu Notion, odnajduję Search Objects. Wewnątrz tego modułu wskazuję, który element ma zostać odnaleziony.

Przekazanie danych z Notion do Make

Wracam do modułu Search Objects i uzupełniam kolejno:

  1. Connection - jeśli jeszcze nie połączyłeś Make z Notion, to należy to teraz wykonać. Jak nie chcesz bawić się w udostępnianie tylko konkretnych miejsc w Notion, wybierz Notion Public. Ja wybieram właśnie ten rodzaj.
  2. Search Objects - podaję Database Items
  3. Database ID - ID strony Notion, na której znajdują się dane. Pobieram je bezpośrednio z adresu URL: notion.so/id
  1. Filter - miejsce, które zarządza całym scenariuszem. Tutaj w ruch idą wspomniane wyżej checkboxy. W momencie kiedy zadanie jest zrealizowane, zaznaczam Run scripts co jest sygnałem dla Make, że podczas wywołania scenariusza, do tego zadania może zostać wystawiona faktura.

    Drugim, równie istotnym checkbox’em jest Autogenerated invoice via Make, który z kolei zapobiega dublom. Podczas startu scenariusza jest on pusty, a dopiero w momencie zakończenia sekwencji, automatycznie zostaje odfajkowany. Ponieważ chcę, żeby Make brał pod uwagę zadania z aktywnym Run scripts i z nieaktywnym Autogenerated invoice via Make. Zatem mój warunek wygląda tak:

Filtr w module Notion: Search Object
Filtr w module Notion: Search Object

⌘+S (Ctrl+S) i zapisuję zmiany.


2. Moduł HTTP i wykorzystanie API Infaktu

Nawet jeśli aplikacja/platforma nie ma bezpośredniej integracji z Make (tak jest np. w przypadku Notion), to jeśli tylko miejsce, z którym chcę się połączyć udostępnia interfejs API, cały cyfrowy świat stoi przede mną otworem.

Na szczęście Infakt to porządna firma i takimże API dysponuje.

Do komputra!

Wystawienie faktury

Prawy klik i odszukuję moduł HTTP.

Po kolei:

  1. Credentials - podaję wygenerowany klucz API wraz z konkretną nazwą (na dzień pisania posta jest to X-API-Key)
  2. URL - wybrany endpoint. W przypadku wystawienia faktury jest to https://api.infakt.pl/v3/invoices.json
  3. Method - rodzaj zapytania, w tym scenariuszu to POST
  4. Headers - nie ruszam
  5. Query String - nie ruszam
  6. Body Type - zostawiam domyślne Raw
  7. Content Type - wybieram JSON
  8. Request Content - kopiuję z dokumentacji Infaktu body zapytania. Interesujące mnie dane podmieniam na informacje otrzymane z Notion (po kliknięciu w miejsce gdzie wklejasz kod pojawi się okienko ze wszystkimi dostępnymi danymi). W moim przypadku interesuje mnie client_company_name gdzie dostarczam nazwę klienta z pola Rollup (opisuję to szczegółowo kawałek wyżej) oraz name, net_price i unit_net_price z tablicy services
  9. Parse response - WAŻE! Zaznaczamy Yes, bo dzięki temu mogę ominąć dodanie w Make dodatkowego modułu JSON. W kolejnym module od razu mam dostęp do potrzebnych danych.
Struktura modułu HTTP
Struktura modułu HTTP

Wysłanie faktury

Wysyłka faktury realizowana jest bardzo podobnie, tak że kolejny moduł to również HTTP. Zmieniam jedynie endpoint (sprawdź dokumentację) oraz body, które w tym konkretnym przypadku zostawiam puste. Spowoduje to pobranie domyślnego adresu klienta ustawionego bezpośrednio w Infakcie.

Jak widzisz w dokumentacji, endpoint wymaga dynamicznego przekazania ID wystawionej przed momentem faktury. Dzięki zaznaczonemu w ustawieniach poprzedniego modułu Parse response mam teraz bezpośredni dostęp do wszystkich informacji udostępnianych podczas tworzenia dokumentu. Wystarczy wklikać się w odpowiednie miejsce i wybrać z dostępnej listy danych ID.

Bajka! ✨

Struktura modułu HTTP
Struktura modułu HTTP

Koniec sekwencji i moduł Notion: Update a Database Item

Po wystawieniu i wysłaniu faktury, wracam do modułu związanego z Notion i przekazuję informację o zmianie statusu checkboxa Autogenerated invoice via Make z false na true przez co zadanie zostaje w całości zamknięte i nie jest uwzględniane podczas kolejnego wywołania sekwencji.

Nie korzystam tutaj z Search Object jak to było za pierwszym razem, a z Update a Database Item. Sam moduł wygląda podobnie, choć naturalnie są różnice. Sprawdź poniżej:

Struktura modułu Notion: Update Database Item
Struktura modułu Notion: Update Database Item

Podczas kolejnego wywołania sekwencji zakończone zadanie z zaznaczonym checkboxem Autogenerated invoice via Make nie zostanie uwzględnione.

Poniżej cały scenariusz:

Przykładowy scenariusz w Make.com
Przykładowy scenariusz w Make.com

Dobre rzeczy wspominane w artykule (referale)