Inicio › Documentación › Exports · origen_banking

Exports · origen_banking

Todos los exports se registran bajo el nombre de recurso origen_banking y son exclusivamente del servidor.


Envoltorio de respuesta

La mayoría de los exports de cuentas devuelven un envoltorio estructurado en lugar de un booleano simple:

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

El campo key es una clave de idioma de locales/*.json, de modo que el recurso que llama puede traducir el mensaje por su cuenta.

Los exports de cuentas de trabajo de la capa de compatibilidad usan un envoltorio más simple: { success = true, data = { balance = number } } o { success = false, error = 'insufficient_balance' }, donde error es una cadena de texto simple.


Cuentas de trabajo y de sociedad

getJobAccountBalance(jobName) → number, string|nil

Devuelve el saldo actual de una cuenta de trabajo. Solo lectura: nunca crea la cuenta.

lua
local balance, err = exports['origen_banking']:getJobAccountBalance('mechanic')
Parámetro Tipo Descripción
jobName string Nombre exacto del propietario almacenado en la base de datos, p. ej. 'ambulance'

Devuelve 0 y un motivo de error ('invalid_job_name' o 'account_not_found') cuando la cuenta no existe.


depositJobAccount(jobName, amount, detail) → table

Añade dinero a una cuenta de trabajo. Crea la cuenta automáticamente si todavía no existe.

lua
local res = exports['origen_banking']:depositJobAccount('mechanic', 2500, 'Repair job')
if res.success then print(res.data.balance) end
Parámetro Tipo Descripción
jobName string Nombre del trabajo / sociedad
amount number Entero positivo
detail string Etiqueta de auditoría opcional que se muestra en el historial de transacciones

Errores: invalid_amount, invalid_job_name.


withdrawJobAccount(jobName, amount, detail) → table

Retira dinero de una cuenta de trabajo. Nunca crea la cuenta automáticamente.

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

Errores: invalid_amount, account_not_found, insufficient_balance.


getAccountMoney(accountName) → number

Alias heredado de getJobAccountBalance. Devuelve solo el saldo, o 0.

addAccountMoney(accountName, amount) → boolean

Ingreso heredado. Crea la cuenta automáticamente. Registra la transacción como Society income.

removeAccountMoney(accountName, amount) → boolean

Retirada heredada. Devuelve false cuando la cuenta no existe o el saldo es insuficiente.


Cuentas

newAccount(data) → Account

Crea un objeto de cuenta. Si se omite data.id, se genera un IBAN nuevo y la cuenta se guarda de inmediato.

Campo Tipo Descripción
owner string ID de ciudadano, nombre del trabajo o nombre de la banda
name string Nombre para mostrar
balance number Saldo inicial. Por defecto 0
default boolean La marca como cuenta principal del jugador
shared boolean La marca como cuenta compartida de trabajo / banda
bank string ID opcional del banco al que pertenece la cuenta

GetAccountById(id) → Account | nil

Devuelve la cuenta desde la caché en memoria y, si no está, la busca en la base de datos.

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

GetAccountAccessByCitizenid(citizenid) → table

Devuelve la lista de accesos sin procesar de un ciudadano: un array de { accountId, permission }. El permiso es 'owner', 'manager' u 'operator'.


GetAccountsInfoByCitizenId(citizenid) → table

Devuelve la lista completa de cuentas de un ciudadano, enriquecida para la interfaz: miembros, tipo de cuenta ('personal' / 'shared'), la marca de principal del framework y el saldo en tiempo real. Las cuentas de trabajo y de banda a las que el jugador tiene acceso en ese momento se añaden en tiempo de ejecución.

Este export resuelve el acceso a trabajos y bandas en cada llamada y puede crear la cuenta compartida si todavía no existe. No lo llames dentro de un bucle.


CreateInitialAccount(citizenid) → string

Crea la cuenta principal de un ciudadano y devuelve el ID de cuenta generado.


LoadAccountsForPlayer(citizenid)

Precarga en memoria todas las cuentas de un ciudadano o compartidas con él. Las cuentas se cargan de forma perezosa cuando el jugador se conecta, así que solo hace falta para operaciones con jugadores desconectados.


Pagos

La «cuenta activa» es la cuenta seleccionada en ese momento en los metadatos activeAccount del jugador. La «cuenta por defecto» es la marcada como default en la base de datos.

GetActiveAccBalance(source) → number | nil

Devuelve el saldo de la cuenta activa del jugador. Se guarda en caché durante 500 ms.


PayWithAccId(accountId, amount, detail) → table

Cobra a una cuenta concreta por su ID.

Parámetro Tipo Descripción
accountId string IBAN de la cuenta de destino
amount number Importe a cobrar
detail string Motivo que se muestra en el historial de transacciones

Errores: errors.account_not_found, errors.insufficient_balance.


PayWithActiveAcc(source, amount, detail) → table

Cobra a la cuenta activa del jugador.

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

Cobra a la cuenta por defecto del jugador. Cuando esa cuenta es la principal del framework, el saldo se descuenta del dinero bancario del framework en lugar de la base de datos.


ReceiveToActiveAcc(source, amount, detail) → table

Abona en la cuenta activa del jugador.


ReceiveToDefaultAcc(source, amount, detail) → table

Abona en la cuenta por defecto del jugador. Las cuentas principales del framework se abonan directamente en el dinero bancario del framework.


SetActiveAccBalance(source, amount) → boolean

Sobrescribe el saldo de la cuenta activa del jugador. No se registra ninguna transacción.


SetDefaultAccBalance(source, amount) → boolean

Sobrescribe el saldo de la cuenta por defecto del jugador. Si es la principal del framework, la diferencia se aplica al dinero bancario del framework.

Ambos setters se saltan el historial de transacciones y las comprobaciones de permisos. Úsalos solo para herramientas de administración o de migración.


Préstamos

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

Crea un préstamo sobre una cuenta, aplicando todas las validaciones del servidor.

Parámetro Tipo Descripción
accountId string Cuenta que recibe el desembolso
typeKey string Clave del tipo de préstamo de Config.Loans.Types, p. ej. 'personal'
amount number Principal
term number Número de cuotas; debe estar en allowedTerms
collateral string Referencia del bien. Obligatoria cuando el tipo define requiresCollateral
lua
local res = exports['origen_banking']:CreateLoan(accountId, 'personal', 15000, 12)
if res.success then print(res.loanId) end

Errores: disabled, account_not_found, invalid_type, invalid_term.


GetPlayerLoans(citizenId) → table

Devuelve todos los préstamos de un ciudadano, con la forma en que los recibe la interfaz.


HasOverdueLoan(citizenId) → boolean

Devuelve true cuando el ciudadano tiene un préstamo vencido o en impago. Útil para restringir compras a crédito en concesionarios, alquileres y recursos similares.

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

Bancos

newBank(data) → Bank

Crea una entidad bancaria.

GetBankById(id) → Bank | nil

Devuelve un banco desde la caché o la base de datos.


Tarjetas

newCard(data) → Card

Crea una tarjeta vinculada a una cuenta.

GetCardById(id) → Card | nil

Devuelve una tarjeta desde la caché o la base de datos.