Início › Documentação › Instalação · origen_banking

Instalação · origen_banking

1. Base de dados

O recurso inclui um migrador automático (autodb). No primeiro arranque lê o database.sql a partir da raiz do recurso e cria automaticamente as tabelas em falta, pelo que não é necessário importar SQL manualmente.

O migrador funciona em modo não destrutivo: cria as tabelas e colunas em falta, mas nunca elimina nada que exista na tua base de dados e não esteja no database.sql.

Se preferires criar o esquema manualmente, executa o seguinte SQL antes de arrancares o recurso:

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

Adiciona o recurso depois das suas dependências:

cfg
ensure ox_lib
ensure oxmysql
ensure origen_banking

3. Permissões de aprovação de empréstimos

Os empréstimos acima de Config.Loans.AutoApproveUnder passam para uma fila de aprovação manual. Existem dois caminhos de permissões independentes para os aprovar:

Por trabalho — configura-se em config/main.lua:

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

Por ACE — adiciona a permissão no teu server.cfg:

cfg
add_ace group.admin origen_banking.approve allow

Quem tiver qualquer uma das permissões pode executar /loansadmin para abrir a NUI do banco diretamente na fila de aprovação. Define Config.Loans.ApprovalCommand = '' para desativar o comando.


4. Webhook do Discord (opcional)

Abre config/server/webhooks.lua e define o URL do teu webhook:

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

Os depósitos, os levantamentos e as transferências ficam registados. As transferências acima de $50,000 são enviadas com uma menção @everyone.


5. Idioma

Define o idioma do recurso em config/main.lua. Os ficheiros de tradução estão em locales/.

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