Accueil › Documentation › Installation · origen_banking

Installation · origen_banking

1. Base de données

La ressource embarque un migrateur automatique (autodb). Au premier démarrage, il lit database.sql à la racine de la ressource et crée automatiquement les tables manquantes, donc aucun import SQL manuel n’est nécessaire.

Le migrateur fonctionne en mode non destructif : il crée les tables et colonnes manquantes, mais ne supprime jamais ce qui existe dans ta base de données et qui est absent de database.sql.

Si tu préfères créer le schéma manuellement, exécute le SQL suivant avant de démarrer la ressource :

sql
CREATE TABLE `origen_banking_banks` (
  `id` VARCHAR(64) NOT NULL,
  `name` VARCHAR(128) NOT NULL DEFAULT 'Banco',
  `balance` BIGINT NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 
CREATE TABLE `origen_banking_accounts` (
  `id` VARCHAR(64) NOT NULL,
  `owner` VARCHAR(64) NOT NULL,
  `name` VARCHAR(128) NOT NULL DEFAULT 'Cuenta',
  `balance` BIGINT NOT NULL DEFAULT 0,
  `bank` VARCHAR(64) DEFAULT NULL,
  `default` TINYINT(1) NOT NULL DEFAULT 0,
  `shared` TINYINT(1) NOT NULL DEFAULT 0,
  `usersAccess` LONGTEXT DEFAULT '{}',
  `loans` LONGTEXT DEFAULT '[]',
  `cards` LONGTEXT DEFAULT '[]',
  PRIMARY KEY (`id`),
  KEY `idx_owner` (`owner`),
  KEY `idx_bank` (`bank`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 
CREATE TABLE `origen_banking_transactions` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `account` VARCHAR(64) NOT NULL,
  `amount` BIGINT NOT NULL DEFAULT 0,
  `type` TINYINT UNSIGNED NOT NULL DEFAULT 0,
  `third` VARCHAR(64) DEFAULT NULL,
  `detail` VARCHAR(255) DEFAULT NULL,
  `initiated_by` VARCHAR(50) NULL DEFAULT 'system',
  `channel` VARCHAR(20) NULL DEFAULT 'banco',
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_account` (`account`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 
CREATE TABLE `origen_banking_loans` (
  `id`                 VARCHAR(64)  NOT NULL,
  `account`            VARCHAR(64)  NOT NULL,
  `bank`               VARCHAR(64)  NOT NULL,
  `owner`              VARCHAR(64)  NOT NULL DEFAULT '',
  `type`               VARCHAR(24)  NOT NULL DEFAULT 'personal',
  `principal`          BIGINT       NOT NULL,
  `interest_rate`      DECIMAL(6,3) NOT NULL,
  `installments`       INT UNSIGNED NOT NULL,
  `paid`               INT UNSIGNED NOT NULL DEFAULT 0,
  `installment_amount` BIGINT       NOT NULL,
  `frequency`          INT UNSIGNED NOT NULL,
  `next_payment`       BIGINT       NOT NULL DEFAULT 0,
  `status`             VARCHAR(16)  NOT NULL DEFAULT 'active',
  `collateral`         VARCHAR(128) DEFAULT NULL,
  `missed`             INT UNSIGNED NOT NULL DEFAULT 0,
  `pending_disbursement` BIGINT     NOT NULL DEFAULT 0,
  `reject_reason`      VARCHAR(255) DEFAULT NULL,
  `created_at`         TIMESTAMP    NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_account` (`account`),
  KEY `idx_owner` (`owner`),
  KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

2. server.cfg

Ajoute la ressource après ses dépendances :

cfg
ensure ox_lib
ensure oxmysql
ensure origen_banking

3. Permissions d’approbation des prêts

Les prêts supérieurs à Config.Loans.AutoApproveUnder passent dans une file d’approbation manuelle. Deux voies de permissions indépendantes permettent de les approuver :

Par métier — se configure dans config/main.lua :

lua
Config.Loans.ApprovalJob   = 'banker'
Config.Loans.ApprovalGrade = 2

Par ACE — ajoute la permission dans ton server.cfg :

cfg
add_ace group.admin origen_banking.approve allow

Toute personne disposant de l’une ou l’autre de ces permissions peut exécuter /loansadmin pour ouvrir la NUI de la banque directement sur la file d’approbation. Définis Config.Loans.ApprovalCommand = '' pour désactiver la commande.


4. Webhook Discord (facultatif)

Ouvre config/server/webhooks.lua et renseigne l’URL de ton webhook :

lua
Config.Webhook = {
    banking = "https://discord.com/api/webhooks/..."
}

Les dépôts, les retraits et les virements sont journalisés. Les virements supérieurs à $50,000 sont envoyés avec une mention @everyone.


5. Langue

Définis la langue de la ressource dans config/main.lua. Les fichiers de traduction se trouvent dans locales/.

lua
Config.Language = 'en' -- 'es' | 'en'