Budżet MPK w źródle zarządzanym regułami
Scenariusz
Dział zatytułowany „Scenariusz”Firma planuje budżet kosztów według MPK, roku i miesiąca. Każdy wniosek kosztowy w AMODIT wskazuje MPK, miesiąc rozliczenia i kwotę. Proces ma sprawdzić dostępny budżet przed akceptacją, a po akceptacji zapisać nowe wykonanie.
Źródło BudzetMPK przechowuje plan oraz aktualny stan wykonania. Reguły procesu odczytują dane przez SourceGet, porównują kwoty i zapisują nowy stan przez SourceSet.
Proponowana struktura źródła
Dział zatytułowany „Proponowana struktura źródła”| Kolumna | Przykład | Opis |
|---|---|---|
Klucz |
`2026 | MPK-100 |
Rok |
2026 |
Rok budżetowy. |
MPK |
MPK-100 |
Miejsce powstawania kosztu. |
Miesiac |
01 |
Miesiąc budżetu. |
Budzet |
50000 |
Plan budżetu dla danego MPK i miesiąca. |
Wykonanie |
12000 |
Koszty zaakceptowane. |
Rezerwacje |
3000 |
Koszty zarezerwowane, ale jeszcze nierozliczone. |
Kolumna Klucz jest pojedynczym kluczem głównym. Wymiary biznesowe zostają też w osobnych kolumnach, aby można było filtrować i sumować dane.
Budowanie klucza w regule
Dział zatytułowany „Budowanie klucza w regule”rok = FormatValue([Data kosztu], "yyyy");mpk = [MPK];miesiac = FormatValue([Data kosztu], "MM");
klucz = rok + "|" + mpk + "|" + miesiac;W przykładzie [MPK] i [Data kosztu] są polami formularza. Rok można też pobrać z osobnego pola formularza albo zapisać jako stałą wartość, jeżeli proces dotyczy jednego roku budżetowego.
Sprawdzenie dostępnego budżetu
Dział zatytułowany „Sprawdzenie dostępnego budżetu”query = CreateObject();query.srcName = "BudzetMPK";query.keyValue = klucz;query.columns = "Budzet,Wykonanie,Rezerwacje";
budzet = SourceGet(query);
dostepne = budzet.Budzet - budzet.Wykonanie - budzet.Rezerwacje;kwota = [Kwota];
if(kwota > dostepne){ ShowMessage(1, "Kwota przekracza dostępny budżet dla wybranego MPK i miesiąca.");}Reguła pobiera trzy wartości z jednego wiersza i porównuje kwotę wniosku z dostępnym budżetem. Komunikat z parametrem 1 jest komunikatem błędu.
Zapis wykonania po akceptacji
Dział zatytułowany „Zapis wykonania po akceptacji”Po akceptacji kosztu proces może zwiększyć wykonanie.
noweWykonanie = budzet.Wykonanie + kwota;
SourceSet("BudzetMPK", klucz, "Wykonanie", noweWykonanie);Jeżeli w procesie używasz rezerwacji, możesz najpierw zmniejszyć Rezerwacje, a potem zwiększyć Wykonanie.
values = CreateObject();values.Rezerwacje = budzet.Rezerwacje - kwota;values.Wykonanie = budzet.Wykonanie + kwota;
SourceSet("BudzetMPK", klucz, values);Kontrola roczna przez SourceSum
Dział zatytułowany „Kontrola roczna przez SourceSum”Dla kontroli rocznego wykonania MPK można zsumować miesięczne wiersze.
query = CreateObject();query.srcName = "BudzetMPK";query.aggColumns = "Budzet,Wykonanie,Rezerwacje";query.whereQuery = "'Rok' = '2026' AND 'MPK' = '" + mpk + "'";
suma = SourceSum(query);Taki odczyt przydaje się w regule informacyjnej, raporcie kontrolnym albo decyzji o przekroczeniu rocznego limitu.
Wariant z rezerwacją
Dział zatytułowany „Wariant z rezerwacją”W procesach zakupowych często warto rozdzielić rezerwację i wykonanie:
- Przy złożeniu wniosku reguła sprawdza dostępny budżet.
- Po pozytywnej kontroli zapisuje kwotę w kolumnie
Rezerwacje. - Po akceptacji faktury zmniejsza
Rezerwacjei zwiększaWykonanie. - Po anulowaniu wniosku zmniejsza
Rezerwacje.
Ten wariant pozwala widzieć planowane obciążenia jeszcze przed końcowym rozliczeniem.
Na co uważać
Dział zatytułowany „Na co uważać”- Klucz główny funkcji
Source*ma jedną kolumnę, dlatego kilka wymiarów biznesowych najlepiej połączyć w jednej kolumnie technicznej. SourceSettworzy wiersz, gdy podany klucz nie istnieje. Przy budżetach warto wcześniej kontrolować, czy wiersz planu został przygotowany.- Dla danych finansowych ustal zasady audytu i korekt. Czasem lepsze będzie dopisanie korekty w osobnym źródle niż bezpośrednia zmiana wykonania.