Specyfikacje do faktur eksportowych publikowane automatycznie z ERP
Proces w tle, osobna baza dokumentów z historią wersji i jeden link w fakturze, który po korekcie wskazuje już nową wersję.
- 0
- plików PDF w bazie ERP
- 1
- stały link na fakturę, niezależnie od korekt
- 5
- iteracji panelu bez przestoju
- STATUS
- Rozwiązanie produkcyjne, utrzymywane
- ROLA
- Architektura, nadzór nad implementacją, wdrożenie, utrzymanie
- OBSZAR
- Integracje ERP · Automatyzacja dokumentów · SQL Server
Do faktur eksportowych trzeba dołączyć specyfikację, czyli osobny wydruk z pozycjami dokumentu. Stare rozwiązanie zapisywało PDF-y jako załączniki binarne w bazie ERP, korzystało z przestarzałej wersji API producenta i po korekcie faktury nie dawało pewności, która wersja specyfikacji jest aktualna. Zaprojektowałem rozwiązanie, które działa samo, bez otwartej sesji użytkownika, nie dotyka danych ERP poza oficjalnym API i zachowuje historię wersji.
- 01Baza produkcyjna ERP rosła o binaria PDF, których tam nie powinno być.
- 02Wydruk musiał powstawać bez klienta ERP i bez pulpitu zdalnego, na koncie usługi zarządzanym przez domenę.
- 03Po korekcie faktury użytkownik miał trafiać na aktualną specyfikację bez zmiany linku w dokumencie.
- 04Żadnych zapisów wprost do tabel ERP, także wtedy, gdy API nie robi tego, czego byśmy chcieli.
Cztery elementy z jasno rozdzielonymi uprawnieniami.
- 01Generator w tle: proces wsadowy z Harmonogramu zadań na koncie gMSA. Wyszukuje faktury eksportowe bez specyfikacji albo zmienione od ostatniej publikacji i zleca wydruk przez oficjalne API ERP do bezobsługowej kolejki PDF zbudowanej na komponentach open source.
- 02Osobny magazyn dokumentów: PDF trafia wyłącznie do oddzielnej bazy. Każda wersja ma skrót SHA-256 i status: oczekująca, aktualna, unieważniona. Powrót faktury do edycji unieważnia bieżącą wersję, ponowne zatwierdzenie tworzy nową, stare zostają w historii.
- 03Stały link w dokumencie: adres PDF zbudowany z pełnego identyfikatora faktury, nie z identyfikatora pliku. Trafia raz do atrybutu faktury, zawsze przez API producenta. Serwuje go osobny endpoint tylko do odczytu, dostępny wyłącznie z sieci firmowej.
- 04Panel administracyjny: aplikacja Blazor z logowaniem domenowym i rolami z grup AD. Lista publikacji, historia wersji, przebiegi generatora z osią zdarzeń, wykres publikacji w dniach roboczych, mapa dozwolonych i zabronionych przepływów. Panel tylko czyta metadane; nie ma dostępu do treści PDF, do ERP ani do Harmonogramu zadań.
Zero bezpośrednich zapisów do ERP. Każda zmiana w dokumencie idzie przez API producenta.
Kilka dni po starcie generator przestał publikować część faktur. Przyczyną nie był wydruk ani baza dokumentów. Historyczne ustawienie w konfiguracji ERP dodawało do nowych faktur pusty atrybut na link. Generator poprawnie odmawiał nadpisania wartości, której nie rozpoznawał, ale robił to za późno i zatrzymywał cały przebieg. Sprawdziłem na danych i w pilocie, że oficjalne API nie aktualizuje istniejącej pustej wartości tego typu atrybutu. Zamiast obchodzić to zapisem SQL do tabel ERP, wprowadziłem trzy zmiany.
- 01Generator klasyfikuje stan atrybutu przed wydrukiem i przed zapisem wersji.
- 02Wadliwa faktura dostaje czytelne zdarzenie błędu w panelu i nie blokuje pozostałych.
- 03Puste wpisy usunięto w oficjalnym kliencie ERP, a ustawienie, które je tworzyło, wyłączono u źródła.
- 01Najmniejsze uprawnienia: konto serwera WWW ma tylko odczyt metadanych, konto generatora może wyłącznie wywołać trzy procedury publikacji, hasłami kont usług zarządza domena.
- 02Zero bezpośrednich zapisów do ERP: wszystkie zmiany w dokumentach idą przez API producenta.
- 03Każda zmiana na serwerze jako nazwany skrypt: najpierw podgląd, potem wykonanie, automatyczny backup i rollback, weryfikacja SHA-256 paczki, osobny test tylko do odczytu po wdrożeniu.
- 04Brak sekretów w repozytorium: konfiguracja połączeń istnieje tylko lokalnie na serwerze.
- 05Interfejs panelu według firmowego standardu opartego na Fluent 2 (WCAG 2.2 AA, pełna polonizacja); regresje wizualne pilnują zrzuty ekranu i testy geometrii.
- 01Wszystkie faktury eksportowe od początku roku mają specyfikację publikowaną automatycznie.
- 02Baza ERP przestała rosnąć o binaria PDF.
- 03Link w dokumencie jest stały i zawsze wskazuje aktualną wersję.
- 04Administrator widzi w jednym miejscu, co zostało opublikowane, kiedy i dlaczego coś się nie udało.
- 05Panel przeszedł pięć iteracji interfejsu bez przestoju, każda wersja ma kopię do szybkiego wycofania.
.NET Framework 4.7.2 · .NET 10 · Blazor · C# · SQL Server · IIS · Windows Authentication · gMSA · Harmonogram zadań Windows · PowerShell 5.1 · Ghostscript
Materiał zanonimizowany. Nazwy organizacji, systemu ERP, serwerów, kont, grup, baz danych i identyfikatory atrybutów zostały pominięte. Dane na schematach są fikcyjne.
