Skip to content

Egyedi script bevételekre

Fő fogalmak

Income: Bejövő számla/bevételi rekord (összegek, partner, deviza, integráció típusa stb.).
IncomeAssignment: Az adott bevétel felosztása üzleti dimenziók és Revenue Type szerint (pl. árbevétel kategória).
Tag / IncomeTag / IncomeAssignmentTag: Címkék bevételhez és felosztáshoz.
Revenue Type: Üzleti kategória, amelyhez a bevétel (vagy felosztás) rendelődik.
IncomeIntegration: Integrációs hivatkozás az adott számlára (Számlázz.hu / Billingo integráció-ID).
Policy engine: Házirendek (JSON) alapján automatikusan beállít revenue_type-ot és/vagy tag(eket).
Kontextus: A Számlázz.hu integráció és a NAV adatok/archiválás feltételei a kapcsolódó szolgáltatás-leírásban szerepelnek; a #profi csomag + Számlaverzum adja a teljes élményt (NAV, archiválás). A termékkoncepció célja: kevesebb kézi adatbevitel → jobb adatok → gyorsabb döntések; a beérkezés több csatornán (e-mail/NAV/manuális/Számlázz.hu/Chrome), azonnali strukturálás, majd utalás-előkészítés mint erős adatvalidációs pont.

Modul felelősségei (funkciónként)

update_missing_income(income, data)
VAT-terület: beállítja, ha hiányzott és az input tartalmazza.
IncomeTag: létrehozza az új tag-kapcsolatokat (idempotens).
IncomeAssignment: ha még nincs, létrehozza egyetlen felosztással (nettó/ÁFA/bruttó tükrözése).
Assignment frissítés: ha az assignment-en nincs revenue type, beállítja data["revenue_type"] alapján; ha nincs rajta tag, felveszi income_assignment_tags alapján.
Miért fontos? A későbbi policy-alkalmazás és jelentések feltétele a konzisztens struktúra (felosztás + címkék).

v2 – szabálylista („policies”) + globális szűrők

Privát személy szűrés (private_person_indicator a céges policy-ban): ha be van állítva és nem egyezik a számlával, a teljes futás skip.
Fő futás: run_policies(income)
skip_for_multiple_match (globális): ha több policy is illeszkedik és ez be van kapcsolva → minden revenue_type törlés + EventLog: „Multiple policies found”.
Policy-szintű skip feltételek:
skip_before_date: adott income-mező dátuma előtt/után (szöveg összevetés formátumazonosság mellett).
skip_if_multiple_items: több tételes számlák kizárása.
skip_for_payment_method: bizonyos fizetési módok kizárása.
private_person_indicator: partner-szintű illesztés feltétele.
Keresés logikája (search_applicable_policies):
Policy-k listája + opcionális operator: "OR"; alapértelmezett: AND.
Egy policy-elem search_for_match-e:
name == "invoice_item": speciális keresés a számlatételekben (lásd lent).
különben az income adott mezőjében (str) történő egyezés:
regex (case-insensitive),
begins (string prefix),
contains (részsztring).
Számlatétel-keresés:
Csak ha income.income_json elérhető és integráció típusa ismert.
Több tétel esetén, ha skip_for_multiple_match: true és több különböző érték illeszkedik, skip.
copy mód (lásd lejjebb) esetén a legutolsó illeszkedő értéket adja vissza.
Adatbeállítás:
Ha a policy-ban data.copy szerepel, akkor a tételmezőből kimásolt értéket állítja be a megadott kulcshoz.
Egyébként a data kulcsai közvetlen beállításra mennek.
Támogatott beállítások (POLICY_DATA_MAP):
revenue_type → automatikus RevenueType felvétel/hozzárendelés (minden assignment-re),
tag → egy címke,
tags → több címke.
Eseménynapló: minden alkalmazott/skipelt policy esemény EventLogService-en keresztül logolva.
Ignore/Check policy – előszűrés Az ignore_policies külön modulban/folyamatban igazítja el, hogy mely számlákat kell egyáltalán figyelembe venni (bemeneti szűrés). A séma a cég income_policies részében „ignore_policies” alatt adható meg; a kulcsok az invoice_data mezőnevei és beágyazott kulcsok (pl. partner.name, issuer.tax_number) is használhatók. A logika támogat OR-t (több feltétel közül bármelyik), összetett mezőket és tipikus számlamezőket (deviza, fizetési mód, dátumok stb.). A 2–4. oldal táblázatai részletezik a használható mezőket a fő objektumban és a partner/issuer beágyazott objektumokban.

Integrációk kezelése

IncomeIntegrationService
create_szamlazz_integration(...) / create_billingo_integration(...): hozzárendel egy integrációs azonosítót az adott income-hoz.
get_integration_id_of_type(income, integration_type): visszaadja az adott típusú integrációs ID-t, akkor is, ha az income fő integrációtípusa eltér (keres korábbi kapcsolást).
A Számlázz.hu integráció célja a számlák és fizetettség szinkronja, a NAV-ból érkező szállítói számlák átvétele (Számlaverzum), valamint a jogszabályszerű archiválás biztosítása. A Billingo kimenő számlák szinkronja és – Számlaverzum jelenlétében – a képarchiválás is támogatott (leírás, előfeltételek és limitációk: támogatott csomagok, Számlaverzum szerepe).

Listázás, jogosultság, riport-előkészítés

IncomeService.list_for_company_user(company_user)
Csak az adott cég bevételei.
Prefetch: income_assignments rendezett betöltése.
Jogosultság-szűrés:
membership.not_allowed_revenue_type_ids → az inkompatibilis revenue type-ok kizárása.
membership.allowed_tags → csak az engedélyezett címkékhez tartozó tételek (annotate+filter).
IncomeQueryService().annotate_origin(queryset) → eredet jelölés (pl. e-mail, NAV, Számlázz.hu), riportokhoz.
Intercom FIN AI – tipikus kérdések:
„Miért nem látom a bevételt?” → Nem a felhasználó cégéhez tartozik; kizárt revenue type; nem engedélyezett tag; az ignore_policies kiszűrte; vagy még nem jött szinkronból.

Kifizetések és maradvány

sum_of_payments(income)IncomePayment aggregátum (NULL→0).
outstanding_amount(income)max(gross_amount − sum_of_payments, 0).
outstanding_amount_for_payee(income)fillérben (×100) ad vissza összeget.
Használati esetek:
Utaláskönnyítő, kintlévőség lista, „fizetettség” ellenőrzés (a Számlázz.hu-ból érkező állapottal együtt).

Felhasználói bevitelek „auto-kiegészítése”

create_auto_data_for_user_created_incomes(income, data)
Ha nem integrált számla és nincs file, csak kézi rögzítés:
income_type: átveszi az income.income_type-ot,
ha a deviza a cég alapdevizája, akkor exchange_rate = 1.00.

Policy JSON – séma és példák

1) Cégszintű policy keret (v2)

Megjegyzés: A fenti minta illusztrálja a v2 logikát: policies[] elemenként policy[] feltételek (AND, vagy operator: "OR"); a data.copy esetén a tételmező kimásolt értéke használható beállításhoz. A tételmezők kulcsai a Számlázz.hu/Billingo integrációknál a service által hivatkozott map-ból kerülnek. (A használható számlamezők és beágyazott kulcsok példái az ignore policy dokumentumban, 2–4. oldal.)

2) Ignore policy – célzott előszűrés (példák)

Deviza szerinti:
Partner név és deviza együtt (AND):
Számlaszám VAGY deviza (OR):
Lásd a részletes mezőlistákat (invoice_data + partner, issuer) és példákat a dokumentum 1–4. oldalán.

Döntési/mérési pontok és naplózás

Többszörös találat kezelése:
Globális skip_for_multiple_match → minden assignment revenue_type törlődik, EventLog: „Multiple policies found”.
Tételkeresés skip_for_multiple_match → ha több különböző tételérték passzol, az adott policy nem alkalmazódik.

Tipikus hibaokok & elhárítás (Intercom/FIN AI gyorsválasz)

„Nem állt be a revenue type / tag”
ignore_policies miatt a számla kimaradt a feldolgozásból.
A v2 policy feltételei nem teljesültek (AND/OR félreértés).
private_person_indicator nem egyezett → teljes skip.
skip_before_date / skip_for_payment_method / skip_if_multiple_items aktív volt.
Tétel-keresésnél több különböző találat és skip_for_multiple_match: true.
income.income_json hiányzik (nem integrált/feldolgozott számla) → tétel-keresés nem fut.
„Eltűntek a revenue type-ok”
Globális skip_for_multiple_match és többszörös illeszkedés → a service explicit revenue_type=None-t állít az assignment-eken (védekező megoldás).
„Hiányzik az archivált számlakép/NAV adatok”
Számlaverzum nélkül nincs NAV-adatlekérés és jogszabályszerű archiválás.
„Nem látom a bevételt a listában”
Céges szűrés, nem engedélyezett tag vagy kizárt revenue type a felhasználó tagsága alapján.
„Eredet” (origin) annotáció alapján ellenőrizd a beérkezési csatornát (NAV/e-mail/Számlázz.hu).
„Maradvány összeg nem stimmel”
sum_of_payments csak a rögzített kifizetéseket számolja; ha fizetés jött integrációból, ellenőrizd a szinkront és az érték bruttó vs nettó értelmezését (outstanding = bruttó – kifizetések).

Gyors referencia – Intercom FIN AI kivonat

Cél: Bevételek automata kategorizálása és címkézése policy-k alapján.
Fő beállítás: income_policies (v2): ignore_policies → bemeneti szűrés; policies → beállítások (revenue_type, tag[s]) regex/begins/contains + (OR) operátor; tételkeresés (Számlázz/Billingo map).
Kritikus flag-ek: private_person_indicator, skip_for_multiple_match, skip_before_date, skip_if_multiple_items, skip_for_payment_method.
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.