Skip to content

Technická reference

Přehled klíčových entit a tříd modulu Banking.

Entity

BankAccount (BankAccount)

Reprezentuje jeden bankovní účet organizace. | Pole | Typ | Popis | | :--- | :--- | :--- | | name | Varchar | Název účtu pro interní rozlišení. | | bankAccountNumber | Varchar | Číslo účtu. | | apiToken | Varchar | Token pro Fio API. | | balance | Currency | Aktuální zůstatek (aktualizováno jobem). | | enabled | Bool | Zda se má účet synchronizovat. |

BankTransaction (BankTransaction)

Záznam jednoho pohybu na účtu. Jde o neměnný záznam (immutable) z pohledu bankovních dat. | Pole | Typ | Popis | | :--- | :--- | :--- | | transactionDate | DateTime | Datum a čas provedení platby. | | amount | Currency | Částka transakce. Kladná = příchozí, záporná = odchozí. | | variableSymbol | Varchar | Variabilní symbol (klíčové pro párování). | | specificSymbol | Varchar | Specifický symbol. | | constantSymbol | Varchar | Konstantní symbol. | | description | Text | Zpráva pro příjemce / komentář z banky. | | foreignId | Varchar | Unikátní ID transakce z bankovního systému (prevence duplicit). | | type | Enum | Incoming / Outgoing. | | isInvoiceAssigned | Bool | Indikátor, zda proběhlo spárování. | | invoice | Link | Odkaz na vydanou fakturu. | | supplierInvoice | Link | Odkaz na přijatou fakturu. |

Logika párování (Hook)

Třída: Espo\Modules\Banking\Hooks\BankTransaction\RelateWithInvoice

Logika se spouští v události beforeSave.

  1. TryAutomaticAssignment: Pokus o nalezení dokladu.
    • Hledá doklad dle variableSymbol AND specificSymbol (pokud je vyplněn).
    • Pokud variableSymbol chybí -> konec, vyžaduje manuální zásah.
    • Pokud variableSymbol existuje duplicitně (více dokladů za posl. 15 dní) -> konec, vyžaduje manuální zásah.
  2. AssignInvoiceToTransaction:
    • Uloží ID faktury do transakce.
    • Volá PaymentService (pro příchozí) nebo vytváří OutgoingPayment (pro odchozí).

Integrace Fio (Job)

Třída: Espo\Modules\Banking\Classes\Jobs\Fio Používá knihovnu fio-api (pravděpodobně wrapper).

// Zjednodušený pseudokód jobu
foreach ($accounts as $account) {
    $transactions = $fioService->getTransactionList($account);
    foreach ($transactions as $tx) {
        if (!exists($tx->id)) {
            createBankTransaction($tx);
        }
    }
    updateBalance($account);
}