CybertFlow Logo
CybertFlow

Automatyzacja Biznesu

Jak zautomatyzować weryfikację faktur, której 'nie dało się' zrobić
Wróć do realizacji
AutomatyzacjaKlient: Producent okien (ok. 300 pracowników)

Jak zautomatyzować weryfikację faktur, której 'nie dało się' zrobić

Historia o tym, jak 2 tygodnie inżynieryjnego R&D dały pełen i błyskawiczny wgląd w zgodność cen na fakturach dostawców.

500+
POZYCJI NA FAKTURZE
10 / 300
OSÓB ROZUMIEJĄCYCH CENNIK
3sek
CZAS WERYFIKACJI I OCENY

Wyzwanie

Wielogodzinna, ręczna weryfikacja skomplikowanych faktur (setki pozycji) z opasłymi cennikami w PDF.

Rozwiązanie

Parser w VBA i silnik decyzyjny oparty na zagnieżdżonych formułach w Excelu.

Ślepe zaufanie kosztuje. Firma mówi: "Sprawdzam"

W produkcji na dużą skalę brak informacji to wyciek pieniędzy. Kiedy zamawiasz tysiące komponentów, musisz wiedzieć, czy dostawca się nie myli. To nie zawsze jest celowe zawyżanie marży. Czasem ktoś po prostu zapomni wbić w system wynegocjowany tydzień wcześniej rabat na konkretny produkt. Mając odpowiednie narzędzie, firma po prostu mówi: "Sprawdzam".

Szef w końcu to zauważył i rzucił polecenie: "Trzeba weryfikować faktury".

Uzasadnienie było twarde. Wcześniej zautomatyzowałem już weryfikację faktur za okucia i profile PVC. Wychodziły tam kwiatki - np. brakujące rabaty, które przy fakturach na kilkadziesiąt tysięcy złotych robiły odczuwalną różnicę. Reklamacje działały, pieniądze wracały do firmy.

Ale o ile weryfikację profili i okuć mi zlecono, o tyle z szybami zespolonymi nikt do mnie nie przyszedł. Wszyscy z góry założyli, że tego zautomatyzować się nie da. A może też mnie nie doceniali?

Sam się w to wpakowałem

Dla jasności - pracowałem wtedy na etacie, byłem wewnątrz, widziałem co się dzieje, mogłem zareagować.

Polecenie szefa było logiczne, ale zrzucono to zadanie na dziewczynę z biura, nie dając jej żadnych narzędzi.

Cenniki od dwóch głównych dostawców szkła to było 7 i 19 stron gęstych tabel w PDF. Weryfikacja jednej szyby to nie jest odczytanie kwoty z tabelki. To identyfikacja całego złożenia, które składa się z wielu zmiennych - każda ze składowych szyb może być inna, mogą mieć różną grubość, hartowanie, mogą być "klejone", ornamentowe, przyciemniane, kolorowe, piaskowane, ze wzorami, do tego różne powłoki, ramki międzyszybowe i innego rodzaju dopłaty. Trzeba je zsumować i przeliczyć przez powierzchnię. Szyby jedno- a dwukomorowe liczy się inaczej. Dodatkowo szyby miały coś takeigo jak "minimalną powierzchnię", poniżej której końcowa cena szyby nie była wyliczana z jej powierzchni tylko z ustalonego minimum np 0.3m2. Oczywiście każdy producent miał inną taką powierzchnię. Cała masa zmiennych. Ręczne policzenie jednej linijki na fakturze może zająć kilka minut pracy. A faktury miały zazwyczaj po kilkadziesiąt a nawet kilkaset pozycji.

W firmie produkującej okna na 300 osób, zaledwie około 10 potrafiło w ogóle sprawnie przeczytać ten cennik.

Widziałem, jak ta dziewczyna się męczy, próbując rzetelnie wykonać zadanie, którego rzetelnie wykonać się nie dało. Moja głowa nie akceptuje takiej pracy. Po trzech pozycjach bym się poddał, bo to marnowanie życia. Nie mogłem na to patrzeć.

Zrobiłem własny research. Sprawdziłem formaty e-faktur (CSV/TXT) spływających od szklarzy. Gdy upewniłem się, że dane da się wyciągnąć, że są wszystkie których potrzeba, poszedłem do głównego technologa po pełną listę szyb używanych w firmowym systemie.

Usłyszałem od niego: "Nie dasz rady tego zrobić".

Uśmiechnąłem się pod nosem, bo byłem już po researchu i wiedziałem, że da się to poskładać. Taki tekst działa na mnie jak dodatkowa motywacja. Listę dostałem. I tu muszę oddać mu sprawiedliwość - kody szyb w systemie były zbudowane bardzo dobrze i logicznie. Kiedy to zobaczyłem, wiedziałem już, że ten projekt jest do obrony. Ułatwiało to mapowanie cenników z oznaczeniami przyjętymi przez firmę.

Dwa tygodnie ostrego R&D

Nie miałem dostępu do nowoczesnych środowisk, więc platformą musiał być Excel - narzędzie, które każdy w biurze miał na komputerze.

Bite dwa tygodnie testowałem, mapowałem i budowałem logikę. Skondensowałem te 26 stron cenników w PDF do 8 zoptymalizowanych arkuszy, po 4 na każdego producenta. Zmapowałem nazewnictwo dostawców na wewnętrzne standardy firmy.

Architektura opierała się na dwóch filarach:

1

Krok 1: Wciąganie danych (VBA)

Skrypt ładował elektroniczną fakturę CSV. Surowe dane trafiały do tabeli, przygotowane do dalszej obróbki i rozbicia na czynniki pierwsze.

2

Krok 2: Silnik na zagnieżdżonych formułach

Zamiast pisać całą logikę wyceny w zamkniętym kodzie VBA, użyłem potężnych formuł Excela. Rozbijały one kod szyby na atomy, uwzględniały minimalne powierzchnie i odnosiły do cenników.

Dlaczego formuły?

To dopasowana inżynieria. Formuły widać. Jeśli coś nie grało, można było prześledzić proces komórka po komórce i zrozumieć, skąd wziął się wynik. Dodatkowo, jeśli cennik się zmieniał (pola do edycji wyraźnie zaznaczyłem na żółto), aktualizację mógł przeprowadzić każdy, bez dotykania linijki kodu.

weryfikacja-faktur-cennik1.jpg
weryfikacja-faktur-cennik2.jpg

Cenniki dostawców szkła - skondensowane z 7 lub 19 stron PDF do 4 zoptymalizowanych arkuszy.

Finał: 3 sekundy prawdy

Wywaliłem na wierzch wszystkie dane i obliczenia pośrednie. Ale żeby odsiać szum od konkretu, zastosowałem formatowanie warunkowe.

Wskazanie pliku, wczytanie danych i przeliczenie 500 pozycji czy nawet więcej zajmowało ułamek sekundy. Przescrolowanie wyników - kolejne dwie. Łącznie w 3 sekundy pracownica wiedziała, czy faktura jest poprawna.

Jeśli cena z faktury zgadzała się z moimi wyliczeniami, kluczowa kolumna świeciła na zielono. Jeśli producent doliczył coś ekstra albo zmieniły się ceny - komórka waliła na wściekle czerwono.

weryfikacja-faktur-dashboard1.jpg
weryfikacja-faktur-dashboard2.jpg

Wynik weryfikacji - zielono = OK, czerwono = anomalia.

Koniec z szukaniem w ciemno. Dziewczyna z biura miała przed oczami pełną rozpiskę, gotową do wysłania jako twardy dowód do zapytania lub reklamacji.

Kontekst technologiczny: Wczoraj a dziś

Warto dodać, że realizowałem ten projekt 3 lata temu. Sztuczna inteligencja wtedy raczkowała. Zbudowałem to w Excelu ze względu na ograniczenia, a mimo to cel został osiągnięty w 100%. Dziś, mając do dyspozycji nowoczesnych agentów AI, automatyzacje n8n czy Pythona, możemy pójść krok, a nawet kilka dalej: system może sam przechwytywać faktury z maila, weryfikować je w tle i wysyłać powiadomienie na Slacka tylko w przypadku wykrycia anomalii.
500+
POZYCJI NA FAKTURZE
10 / 300
OSÓB ROZUMIEJĄCYCH CENNIK
3sek
CZAS WERYFIKACJI I OCENY

Masz w firmie proces, który wydaje się "zbyt skomplikowany" do zautomatyzowania? Skontaktuj się ze mną. Rozłożymy go na czynniki pierwsze.