Akceptacja faktur z KSeF w Comarch ERP Optima – Jak wdrożyć własny workflow bez dodatkowych modułów?

Wdrożenie Krajowego Systemu e-Faktur (KSeF) to nie tylko obowiązek ustawowy, ale przede wszystkim szansa na pełną automatyzację obiegu dokumentów. Jednak samo pobranie faktury do systemu to dopiero połowa sukcesu. Prawdziwym wyzwaniem jest zapewnienie, że do ksiąg trafią wyłącznie te dokumenty, które zostały merytorycznie zweryfikowane i zaakceptowane przez Zarząd lub osoby decyzyjne. Dzięki elastyczności systemu Comarch ERP Optima, możemy taki mechanizm zbudować samodzielnie, wykorzystując standardowe funkcjonalności.

Proces akceptacji faktur KSEF księgowość, zarząd

Problem: „Dziwne” faktury w KSeF, czyli ryzyko automatyzacji

Automatyczne pobieranie dokumentów prosto z serwerów Ministerstwa Finansów do listy faktur w systemie niesie ze sobą istotne ryzyko. Bez odpowiedniego „bezpiecznika”, każda faktura wystawiona na nasz NIP – w tym dokumenty błędne, nieautoryzowane lub wręcz próby oszustwa – może zostać omyłkowo zaksięgowana i opłacona.

W tradycyjnym modelu dokument trafiał na biurko w formie papierowej, co wymuszało jego fizyczny opis i akceptację. W świecie KSeF dokumenty wpadają bezpośrednio do bazy danych jako lista dokumentów odczytanych z serwisu. Dlatego tak ważne jest stworzenie cyfrowej „poczekalni”, w której faktury czekają na zielone światło od Zarządu, zanim zostaną zaimportowane do ewidencji i ujęte w kosztach firmy.

Rozwiązanie: Atrybuty jako fundament systemu akceptacji

Zamiast inwestować w kosztowne systemy zewnętrznego obiegu dokumentów, możemy wykorzystać potężne, wbudowane narzędzie: Atrybuty. Pozwalają one na cechowanie niemal każdego obiektu w systemie, w tym również dokumentów KSeF jeszcze przed ich procesowaniem.

Konfiguracja klasyfikacji dokumentu – atrybut AKCEPTACJA:

Definicja nowego atrybutu odbywa się bezpośrednio w interfejsie programu Comarch ERP Optima (Konfiguracja -> Firma -> Ogólne -> Atrybuty).
Z technicznego punktu widzenia każda taka definicja znajduje się w tabeli CDN.DefAtrybuty.

Wybieramy rodzaj atrybutu -Dokumentu i klikamy plus:

Akceptacja dokumentów z KSEF COMARCH ERP OPTIMA , mechanizm atrybutów , własne kolumny

Przy definicji atrybutu zaznaczamy, że ma to być lista i w zakładce 2 Pozycje listy definiujemy jej wartości np TAK, NIE , DO SPRAWDZENIA

Akceptacja dokumentów KSEF OPTIMA - mechanizm atrybutów

Gdzie system COMARCH ERP OPTIMA przechowuje dane? Architektura tabel

Z punktu widzenia bazy danych, każda decyzja Zarządu o akceptacji faktury jest zapisywana w tabeli DokAtrybuty. System zachowuje pełną spójność danych dzięki relacji:

  • Identyfikator dokumentu na liście KSeF to DKF_DKFID.
  • Wartość wybranego statusu trafia do kolumny DAt_WartoscTxt
  • Kluczowe powiązanie odbywa się przez kolumnę DAt_DKFID, która jest kluczem obcym do tabeli Dokumenty KSeF.

Dzięki takiej architekturze, raz nadany status „przylega” do dokumentu i może być wykorzystany do filtrowania faktur gotowych do importu lub blokowania tych niezaakceptowanych.

Wdrożenie techniczne – Nowa kolumna na liście KSeF

Aby proces akceptacji był przejrzysty, status musi być widoczny w module Handel -> KSeF -> Faktury Zakupu. Możemy to osiągnąć poprzez personalizację widoku i dodanie kolumny użytkownika opartej na kodzie SQL.

Aby to zrobić , otwieramy listę Faktur KSEF i klikamy personalizację aktywnego okna:

Personalizacja aktywnego okna KSEF COMARCH OPTIMA akceptacja dokumentów

Następnie klikamy w Konfigurację dodatkowych kolumn użytkownika:

\konfiguracja dodatkowych kolumn użytkownika KSEF COMARCH OPTIMA

Dodajemy kolumnę użytkownika klikając PLUS:

Dodanie kolumny akceptacja KSEF COMARCH OPTIMA

Metoda 1: Zapytanie SQL (Subquery) – Idealne dla Biur Rachunkowych

Dla administratorów zarządzających wieloma bazami danych najwygodniejszym rozwiązaniem jest użycie bezpośredniego zapytania SQL w definicji kolumny. Eliminuje to konieczność instalowania dodatkowych obiektów (funkcji) w każdej bazie z osobna.

Kod do wklejenia w definicję kolumny użytkownika:

(SELECT TOP 1 DAt_WartoscTxt
FROM CDN.DokAtrybuty
WHERE DAt_DKFID = DKF_DKFID
AND DAt_Kod = 'AKCEPTACJA’
ORDER BY DAt_DAtId DESC)

Metoda 2: Funkcja skalarna SQL – Podejście strukturalne

Jeśli preferujesz trzymanie logiki po stronie serwera bazy danych, możesz stworzyć funkcję skalarną. Jest to rozwiązanie bardziej „eleganckie” programistycznie, jeśli planujesz używać tego samego mechanizmu w wielu różnych raportach lub widokach.

Kod funkcji skalarnej:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [CDN].[SystemyIT_WartoscAtrybutu_KSEF]
(
@DKFID INT, — Identyfikator dokumentu KSeF (DKF_DKFID)
@AtrybutKod VARCHAR(20) — Nazwa/Kod atrybutu (np. 'AKCEPTACJA’)
)
RETURNS NVARCHAR(1024)
AS
BEGIN
DECLARE @Wartosc NVARCHAR(1024);

SELECT TOP 1 @Wartosc = DA.DAt_WartoscTxt
FROM CDN.DokAtrybuty DA
INNER JOIN CDN.DefAtrybuty Def ON DA.DAt_DeAId = Def.DeA_DeAId
WHERE DA.DAt_DKFID = @DKFID — Relacja do tabeli DokumentyKSeF
AND Def.DeA_Kod = @AtrybutKod — Filtr po kodzie atrybutu
AND Def.DeA_Typ = 4 — Typ: Atrybut dokumentu
ORDER BY DA.DAt_DAtId DESC; — Pobranie najnowszego rekordu wg ID

RETURN @Wartosc;
END

Zalety funkcji:

Wywołanie funkcji w kolumnie dodatkowej użytkownika:

  • Uniwersalność: Możesz ją wywołać dla dowolnego atrybutu (nie tylko akceptacji), podając jego kod jako parametr.
  • Czytelność: W definicji kolumny użytkownika wpisujesz jedynie proste wywołanie: [CDN].[SystemyIT_WartoscAtrybutu_KSEF](DKF_DKFID, 'AKCEPTACJA')

Nie tylko akceptacja – Skalowanie procesu (MPK, Projekty, Opisy)

Wdrożenie mechanizmu akceptacji to dopiero początek możliwości, jakie oferuje praca na atrybutach w module KSeF. System Comarch ERP Optima pozwala na niemal nieograniczone cechowanie dokumentów, co umożliwia przeniesienie całego procesu opisu merytorycznego faktury bezpośrednio na listę „poczekalni” KSeF. Dzięki temu, zanim dokument trafi do rejestrów, może zostać wzbogacony o zestaw kluczowych informacji biznesowych.

Budowa wielopoziomowego workflow

Skalowanie rozwiązania polega na zdefiniowaniu w interfejsie programu dodatkowych klas atrybutów w tabeli DefAtrybuty. Dla każdego z nich należy zachować typ 4 (dokument). Przykładowe zastosowania obejmują:

  • Centrum kosztowe (MPK): Przypisanie faktury do konkretnego działu lub miejsca powstawania kosztów.
  • Numer Projektu: Powiązanie kosztu z konkretną inwestycją lub zleceniem.
  • Priorytet płatności: Oznaczanie dokumentów jako pilne, co ułatwia pracę działowi finansowemu.
  • Osoba merytoryczna: Wskazanie pracownika odpowiedzialnego za weryfikację danego zakupu.

Wszystkie te dane są przechowywane w tabeli DokAtrybuty i powiązane z konkretnym identyfikatorem DKF_DKFID z listy dokumentów KSeF.

Dashboard menedżerski na liście KSeF

Największą siłą skalowania jest możliwość wyświetlenia wielu takich atrybutów obok siebie w oknie Handel -> KSeF -> Faktury Zakupu. Wykorzystując opisaną wcześniej metodę zapytania SQL, możemy dodać dowolną liczbę kolumn użytkownika. Wystarczy w kodzie zmienić jedynie nazwę poszukiwanego atrybutu:

— Przykład dla kolumny „Projekt”
(SELECT TOP 1 DAt_WartoscTxt
FROM CDN.DokAtrybuty
WHERE DAt_DKFID = DKF_DKFID
AND DAt_Kod = 'PROJEKT’
ORDER BY DAt_DAtId DESC)

Dzięki temu lista faktur w KSeF przestaje być tylko spisem dokumentów do zaimportowania, a staje się zaawansowanym pulpitem zarządzania kosztami. Zarząd lub kierownicy działów mogą w jednym oknie dokonać pełnego opisu i akceptacji, co drastycznie skraca czas obiegu informacji w firmie. Takie podejście gwarantuje, że księgowość otrzymuje dokumenty nie tylko zatwierdzone, ale również kompletnie opisane pod kątem analitycznym.

Jeżeli chcesz nauczyć się podstaw tworzenia kolumn użytkownika lub funkcji dodatkowych , zapisz się na szkolenie: https://www.systemyit.pl/szkolenie-comarch-optima-tworzenie-funkcji-dodatkowych/