# Crowe Banker

Focused banker build for VORP Core with a modern, monochrome NUI. Includes loans, recent activity, a full banker console, optional society integration, and unified notifications.

Features

* Activity log: searchable, filterable recent transactions and loan payments
* Loans: request/approval workflow, approval confirmation step, repayments, weekly cadence (`Config.LoanInterestIntervalDays`), risk meter and analysis. Missed‑payment strike system auto‑applies a strike on overdue, rolls due date forward, and defaults the loan at 3 strikes.
* Banker console: pending/active lists; borrower overview; tools overlay (Add Internal Note, Seize Bank Assets → apply to loan)
* Optional Society integration: permissions via `crowe_society`
* Unified notifications: prefers `crowe_notification`, then `crowe_libs`, else clean NUI toasts (server uses a single `notifyCrowe` helper)
* Localization: full multi-language support (UI and server notifications)
  * Included UI locales: `en`, `es`, `fr`, `pt`, `de`, `it`, `ru`, `pl`, `tr`, `zh`, `ja`, `ko`, `nl`, `ar`
  * Server notification locales: separate files like `locales/en_server.lua`, `locales/es_server.lua`, etc.
  * Manifest auto-loads all locales via `locales/*.lua`
* Webhook logging for withdrawals, deposits, transfers, and other actions
* Server events for external integrations

Installation

* Place `crowe_banking` in your `resources` folder
* Add `ensure crowe_banking` to `server.cfg`
* Import `sql/db.sql`
* Configure `config.lua` (banks, feeamount, hours, webhooks, language, loans, permissions)

Dependencies

* Required: `vorp_core`, `vorp_inventory`, `oxmysql`
* Optional: `crowe_notification`, `crowe_libs`, `crowe_society`

Configuration

* Banks & UI
  * `Config.banks`: locations, NPCs, blips, hours
  * `Config.Key`: interaction key for prompts
* Loans
  * `Config.LoansRequireApproval` (bool): require staff approval before disbursement
  * `Config.LoanInterestIntervalDays` (int): interest cadence for active loans
  * `Config.LoanAgreementText` (string): agreement body for approval confirmation overlay
* Interest cadence is controlled by `Config.LoanInterestIntervalDays`
* Permissions
  * Traditional: `Config.JobBankerMap`
  * Society Mode: `Config.SingleJobMode.enabled = true` with `SingleJobMode.jobs` mapped to society names; server validates via `crowe_society`
* Webhooks
  * `WithdrawLogWebhook`, `DepositLogWebhook`, `TransferLogWebhook`, etc.
* Language
  * Set default language: `Config.Lang = 'en'`
  * Available languages: `Config.AvailableLanguages = { 'en','es','fr','pt','de','it','ru','pl','tr','zh','ja','ko','nl','ar' }`

Usage

* Open UI at a configured bank; manage balances, transfers, safebox
* Loans (if enabled): request → staff approval → player confirmation → repayments
* Banker console (authorized staff): review loans, open borrower overviews, apply tools (freeze/flag/notes/seize)

Admin/Staff

* Permissions are enforced server-side (traditional jobs or society-based)
* Banker approvals/declines/confirmations are available via the in-game banker console
* Server events exist for integrations (see `client/client.lua` and `server/server.lua`)

Database

* `crowe_banking_transactions`, `crowe_banking_loans`, `crowe_banking_account_notes`

Notes

* Crowe Notifications are used automatically if the resource is running; otherwise a simple toast fallback is used
* Default language is `en` (`Config.Lang = 'en'`)

Credits

* Based on and adapted from `vorp_banking` with Crowe UI enhancements


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://crowescripts.gitbook.io/documentation/about-our-scripts/redm-script-documentation/crowe-banker.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
