Accueil › Documentation › Exports · origen_banking

Exports · origen_banking

Tous les exports sont enregistrés sous le nom de ressource origen_banking et sont exclusivement côté serveur.


Enveloppe de réponse

La plupart des exports de comptes renvoient une enveloppe structurée plutôt qu’un simple booléen :

lua
-- success
{ success = true, data = { ... }, meta = { message = { key = '...', args = { ... } } } }
 
-- failure
{ success = false, error = { key = 'errors.insufficient_balance', args = { ... } } }

Le champ key est une clé de langue issue de locales/*.json, ce qui permet à la ressource appelante de traduire elle-même le message.

Les exports de comptes de métier de la couche de compatibilité utilisent une enveloppe plus simple : { success = true, data = { balance = number } } ou { success = false, error = 'insufficient_balance' }, où error est une simple chaîne de caractères.


Comptes de métier et de société

getJobAccountBalance(jobName) → number, string|nil

Renvoie le solde actuel d’un compte de métier. Lecture seule : ne crée jamais le compte.

lua
local balance, err = exports['origen_banking']:getJobAccountBalance('mechanic')
Paramètre Type Description
jobName string Nom exact du titulaire enregistré en base de données, p. ex. 'ambulance'

Renvoie 0 et un motif d’erreur ('invalid_job_name' ou 'account_not_found') quand le compte n’existe pas.


depositJobAccount(jobName, amount, detail) → table

Ajoute de l’argent à un compte de métier. Crée automatiquement le compte s’il n’existe pas encore.

lua
local res = exports['origen_banking']:depositJobAccount('mechanic', 2500, 'Repair job')
if res.success then print(res.data.balance) end
Paramètre Type Description
jobName string Nom du métier / de la société
amount number Entier positif
detail string Libellé d’audit facultatif affiché dans l’historique des transactions

Erreurs : invalid_amount, invalid_job_name.


withdrawJobAccount(jobName, amount, detail) → table

Retire de l’argent d’un compte de métier. Ne crée jamais le compte automatiquement.

lua
local res = exports['origen_banking']:withdrawJobAccount('mechanic', 500, 'Parts purchase')

Erreurs : invalid_amount, account_not_found, insufficient_balance.


getAccountMoney(accountName) → number

Alias hérité de getJobAccountBalance. Renvoie uniquement le solde, ou 0.

addAccountMoney(accountName, amount) → boolean

Dépôt hérité. Crée automatiquement le compte. Enregistre la transaction sous le nom Society income.

removeAccountMoney(accountName, amount) → boolean

Retrait hérité. Renvoie false quand le compte n’existe pas ou que le solde est insuffisant.


Comptes

newAccount(data) → Account

Crée un objet de compte. Si data.id est omis, un nouvel IBAN est généré et le compte est enregistré immédiatement.

Champ Type Description
owner string ID de citoyen, nom du métier ou nom du gang
name string Nom affiché
balance number Solde initial. 0 par défaut
default boolean Le marque comme compte principal du joueur
shared boolean Le marque comme compte partagé de métier / gang
bank string ID facultatif de la banque à laquelle appartient le compte

GetAccountById(id) → Account | nil

Renvoie le compte depuis le cache en mémoire et, à défaut, le cherche en base de données.

lua
local account = exports['origen_banking']:GetAccountById('1234567890123456')

GetAccountAccessByCitizenid(citizenid) → table

Renvoie la liste d’accès brute d’un citoyen : un array de { accountId, permission }. La permission vaut 'owner', 'manager' ou 'operator'.


GetAccountsInfoByCitizenId(citizenid) → table

Renvoie la liste complète des comptes d’un citoyen, enrichie pour l’interface : membres, type de compte ('personal' / 'shared'), l’indicateur de compte principal du framework et le solde en direct. Les comptes de métier et de gang auxquels le joueur a accès à cet instant sont ajoutés à l’exécution.

Cet export résout l’accès aux métiers et aux gangs à chaque appel et peut créer le compte partagé s’il n’existe pas encore. Ne l’appelle pas dans une boucle.


CreateInitialAccount(citizenid) → string

Crée le compte principal d’un citoyen et renvoie l’ID de compte généré.


LoadAccountsForPlayer(citizenid)

Précharge en mémoire tous les comptes appartenant à un citoyen ou partagés avec lui. Les comptes sont chargés à la demande lors de la connexion du joueur ; ce n’est donc utile que pour les opérations sur des joueurs hors ligne.


Paiements

Le « compte actif » est le compte actuellement sélectionné dans les métadonnées activeAccount du joueur. Le « compte par défaut » est celui marqué default en base de données.

GetActiveAccBalance(source) → number | nil

Renvoie le solde du compte actif du joueur. Mis en cache pendant 500 ms.


PayWithAccId(accountId, amount, detail) → table

Débite un compte précis à partir de son ID.

Paramètre Type Description
accountId string IBAN du compte cible
amount number Montant à débiter
detail string Motif affiché dans l’historique des transactions

Erreurs : errors.account_not_found, errors.insufficient_balance.


PayWithActiveAcc(source, amount, detail) → table

Débite le compte actif du joueur.

lua
local res = exports['origen_banking']:PayWithActiveAcc(source, 150, 'Parking fee')
if not res.success then print(res.error.key) end

PayFromDefaultAcc(source, amount, detail) → table

Débite le compte par défaut du joueur. Quand ce compte est le compte principal du framework, le solde est prélevé sur l’argent bancaire du framework plutôt que sur la base de données.


ReceiveToActiveAcc(source, amount, detail) → table

Crédite le compte actif du joueur.


ReceiveToDefaultAcc(source, amount, detail) → table

Crédite le compte par défaut du joueur. Les comptes principaux du framework sont crédités directement sur l’argent bancaire du framework.


SetActiveAccBalance(source, amount) → boolean

Remplace le solde du compte actif du joueur. Aucune transaction n’est enregistrée.


SetDefaultAccBalance(source, amount) → boolean

Remplace le solde du compte par défaut du joueur. Si c’est le compte principal du framework, la différence est appliquée à l’argent bancaire du framework.

Ces deux setters contournent l’historique des transactions et les vérifications de permissions. Ne les utilise que pour des outils d’administration ou de migration.


Prêts

CreateLoan(accountId, typeKey, amount, term, collateral) → table

Crée un prêt sur un compte en appliquant toutes les validations côté serveur.

Paramètre Type Description
accountId string Compte qui reçoit les fonds
typeKey string Clé du type de prêt issue de Config.Loans.Types, p. ex. 'personal'
amount number Capital
term number Nombre de mensualités ; doit figurer dans allowedTerms
collateral string Référence du bien. Obligatoire quand le type définit requiresCollateral
lua
local res = exports['origen_banking']:CreateLoan(accountId, 'personal', 15000, 12)
if res.success then print(res.loanId) end

Erreurs : disabled, account_not_found, invalid_type, invalid_term.


GetPlayerLoans(citizenId) → table

Renvoie tous les prêts d’un citoyen, sous la forme où l’interface les reçoit.


HasOverdueLoan(citizenId) → boolean

Renvoie true quand le citoyen a un prêt en retard ou en défaut de paiement. Utile pour restreindre les achats à crédit dans les concessions, les locations et les ressources similaires.

lua
if exports['origen_banking']:HasOverdueLoan(citizenid) then
    -- deny the financed purchase
end

Banques

newBank(data) → Bank

Crée une entité bancaire.

GetBankById(id) → Bank | nil

Renvoie une banque depuis le cache ou la base de données.


Cartes

newCard(data) → Card

Crée une carte liée à un compte.

GetCardById(id) → Card | nil

Renvoie une carte depuis le cache ou la base de données.