Přeskočit na hlavní obsah

Entita Bankovní účet (BankAccount)

Entita BankAccount reprezentuje bankovní účet vedený v některé z bank. Uchovává informace o číslu účtu, IBAN, credentials pro přístup k bankovnímu API, aktuální zůstatek a vazby na transakce.

Klíčové atributy​

Základní informace​

  • Název (name): Název účtu (volitelné, lze nechat prázdné)
  • Popis (description): Textový popis účtu
  • Povoleno (enabled): Indikátor, zda je účet aktivní (bool, default: true)

Bankovní údaje​

  • Číslo účtu (bankAccountNumber): Číslo bankovního účtu (max 150 znaků)
    • Speciální typ pole: bankAccountNumber
  • IBAN (iban): International Bank Account Number (max 100 znaků)
  • SWIFT (swift): SWIFT/BIC kód banky (max 100 znaků)
  • Typ (type): Typ účtu
    • domestic - Domácí účet (default)
    • foreign - Zahraniční účet

Finanční údaje​

  • Zůstatek (balance): Aktuální zůstatek na účtu (currency)

API přístup​

  • API Token (apiToken): Token pro přístup k bankovnímu API (max 150 znaků)
  • E-mail (email): E-mail pro přístup k API (max 150 znaků)
  • Credential (credential): Přihlašovací údaje (linkParent)
    • Podporované typy:
      • UniCreditCredential
      • CsobCredential
      • CeskaSporitelnaCredential
      • VubCredential

Vazby​

  • Banka (bank): Banka, u které je účet veden (povinné)
  • E-mail banky (bankEmail): Foreign field - notifikační e-mail z banky (readonly)
  • Bankovní transakce (bankTransactions): Seznam transakcí na tomto účtu

Adresa​

  • Adresa (adress): Adresa spojená s účtem (address type)

Systémová pole​

  • Vytvořeno (createdAt): Datum a čas vytvoření (readonly)
  • Upraveno (modifiedAt): Datum a čas poslední úpravy (readonly)
  • Vytvořil (createdBy): Uživatel, který záznam vytvořil (readonly)
  • Upravil (modifiedBy): Uživatel, který záznam naposledy upravil (readonly)
  • Přiřazeno (assignedUser): Přiřazený uživatel
  • Týmy (teams): Týmy s přístupem k záznamu

Technické informace​

Backend​

Třída entity​

  • Cesta: Espo\Modules\Banking\Entities\BankAccount
  • Namespace: Espo\Modules\Banking\Entities
  • Konstanta: ENTITY_TYPE = 'BankAccount'

Definice entity​

Soubor: backend/Resources/metadata/entityDefs/BankAccount.json

Klíčová pole:

{
"bankAccountNumber": {
"type": "bankAccountNumber",
"maxLength": 150,
"trim": true
},
"iban": {
"type": "varchar",
"maxLength": 100
},
"type": {
"type": "enum",
"options": ["domestic", "foreign"],
"default": "domestic",
"maxLength": 100
},
"balance": {
"type": "currency"
},
"enabled": {
"notNull": true,
"type": "bool",
"default": true
},
"credential": {
"type": "linkParent",
"entityList": [
"UniCreditCredential",
"CsobCredential",
"CeskaSporitelnaCredential",
"VubCredential"
],
"view": "banking:views/bank-account/fields/credential"
}
}

Vazby (links):

  • bank: belongsTo → Bank (foreign: 'bankAccounts')
  • bankTransactions: hasMany → BankTransaction (foreign: 'bankAccount')
  • credential: belongsToParent (foreign: 'bankAccount')
  • createdBy: belongsTo → User
  • modifiedBy: belongsTo → User
  • assignedUser: belongsTo → User
  • teams: hasMany → Team

Indexy:

  • name: columns: [name, deleted]
  • assignedUser: columns: [assignedUserId, deleted]

Kolekce:

  • Výchozí řazení: createdAt DESC
  • Textové vyhledávání: name
  • Full-text search: vypnuto
  • Count: povoleno

Typ pole bankAccountNumber​

Speciální typ pole pro bankovní čísla účtů. Zajišťuje:

  • Validaci formátu čísla účtu
  • Správné zobrazení (prefix/číslo)
  • Automatické formátování

Frontend​

View​

Soubor: client/src/views/bank-account/fields/credential.ts

  • Custom view pro zobrazení a výběr credentials

Překlady (cs_CZ)​

Soubor: backend/Resources/i18n/cs_CZ/BankAccount.json

Klíčové překlady:

{
"fields": {
"bankAccountNumber": "Číslo účtu",
"iban": "IBAN",
"swift": "SWIFT",
"balance": "Zůstatek",
"type": "Typ účtu",
"enabled": "Aktivní",
"credential": "Přihlašovací údaje",
"bank": "Banka",
"bankEmail": "E-mail banky"
},
"options": {
"type": {
"domestic": "Domácí",
"foreign": "Zahraniční"
}
}
}

Použití​

Vytvoření bankovního účtu​

Při vytváření účtu je nutné:

  1. Vybrat banku (povinné)
  2. Zadat číslo účtu nebo IBAN
  3. Pro zahraniční účty vyplnit SWIFT
  4. Pro automatické stahování transakcí nastavit credentials

Napojení na bankovní API​

Pro automatické stahování výpisů:

  1. Vytvořit příslušné credentials (např. CeskaSporitelnaCredential)
  2. Vyplnit přihlašovací údaje do credentials
  3. Propojit credentials s bankovním účtem přes pole credential
  4. Naplánovat pravidelné stahování (scheduled job)

Credentials podle banky​

Česká spořitelna​
  • Typ: CeskaSporitelnaCredential
  • Vyžaduje: API token, client ID
  • View: Custom formulář pro Českou spořitelnu
ČSOB​
  • Typ: CsobCredential
  • Vyžaduje: API token, certifikát
  • View: Custom formulář pro ČSOB
UniCredit​
  • Typ: UniCreditCredential
  • Vyžaduje: Přihlašovací údaje k API
  • View: Custom formulář pro UniCredit
VÚB​
  • Typ: VubCredential
  • Vyžaduje: API credentials
  • View: Custom formulář pro VÚB

Sledování zůstatku​

Pole balance se automaticky aktualizuje při:

  • Importu nových transakcí
  • Ruční aktualizaci přes API
  • Synchronizaci s bankou

Workflow​

Proces stahování transakcí​

1. Scheduled Job se spustí
2. Načte všechny aktivní BankAccount (enabled = true)
3. Pro každý účet s credentials:
a. Ověří přihlašovací údaje
b. Zavolá bankovní API
c. Stáhne nové transakce
d. Vytvoří BankTransaction záznamy
e. Aktualizuje zůstatek (balance)
4. Pokud jsou zapnuté notifikace, upozorní uživatele

Doporučené postupy​

  1. Používejte správný formát čísla účtu:

    • Domácí: 123456-1234567890/0800
    • Zahraniční: Vyplňte IBAN a SWIFT
  2. Zabezpečení credentials:

    • Credentials jsou uloženy odděleně od účtu
    • Přístup k credentials je omezen ACL
    • API tokeny by měly mít omezená oprávnění
  3. Aktivní/Neaktivní účty:

    • Neaktivní účty (enabled = false) se přeskakují při stahování
    • Použijte pro uzavřené nebo dočasně nepoužívané účty
  4. Typ účtu:

    • Pro domácí účty je vždy vyžadováno číslo účtu
    • Pro zahraniční účty používejte IBAN a SWIFT

Příklady​

Příklad domácího účtu​

Název: Hlavní běžný účet
Banka: Česká spořitelna, a.s.
Typ účtu: Domácí
Číslo účtu: 123456-1234567890/0800
IBAN: CZ6508000000001234567890
Povoleno: ✓
Credential: [CeskaSporitelnaCredential #1]

Příklad zahraničního účtu​

Název: EUR účet
Banka: UniCredit Bank
Typ účtu: Zahraniční
IBAN: SK3112000000198742637541
SWIFT: UNCRSKBX
Povoleno: ✓
Credential: [UniCreditCredential #2]

Poznámky​

  • Optimistic concurrency control je vypnuté
  • Záznamy podporují týmový přístup
  • Smazané záznamy jsou soft-delete
  • Pole bankEmail je foreign field - automaticky se načítá z entity Bank