forge/arma/client/addons/cad/ui/ui.config.mjs
Jacob Schmidt ff7ff0c4e5 Implement org credit line debt and bank repayment flow (#2)
## Summary

This finishes the org credit line workflow so it behaves like reserved treasury-backed credit instead of a simple member allowance.

## What changed

- reserve org funds immediately when a credit line is assigned
- track credit lines with:
  - approved amount
  - available amount
  - outstanding principal
  - interest rate
  - amount due
- consume reserved credit during store checkout without charging org funds a second time
- add credit line repayment through the bank app
- sync richer credit line state into org and bank payloads/UI
- keep legacy `amount` compatibility mapped to available credit for older consumers

## User-facing behavior

- assigning a credit line now reduces available org funds immediately
- spending on `credit_line` reduces available credit and creates debt with interest
- the bank app now shows outstanding credit debt and allows repayment from personal bank funds
- the org treasury view now shows reserved credit and outstanding due totals

## Validation

- `cargo fmt`
- `npm run build:webui`
- `cargo test -p forge-services --quiet`
- `cargo test -p forge-server --quiet`

## Follow-up checks

- validate in-game that assigning a credit line reduces org funds immediately
- validate store checkout with `credit_line` updates available credit and debt correctly
- validate bank repayment decreases player bank balance, increases org funds, and reduces amount due

Co-authored-by: Jacob Schmidt <innovativestudios@outlook.com>
Reviewed-on: #2
2026-04-02 16:50:38 -05:00

90 lines
2.4 KiB
JavaScript

export default {
addonName: "cad",
title: "FORGE CAD",
logLabel: "CAD UI",
outputDir: "_site",
generateIndex: false,
jsBundles: [
{
name: "CAD shared bridge/runtime",
output: "cad-shared.js",
sources: ["src/shared.js"],
},
{
name: "CAD topbar app",
output: "cad-topbar.js",
sources: ["src/topbar.js"],
},
{
name: "CAD sidepanel app",
output: "cad-sidepanel.js",
sources: ["src/sidepanel.js"],
},
{
name: "CAD dispatcher app",
output: "cad-dispatcher.js",
sources: [
"src/dispatcher/formatters.js",
"src/dispatcher/modals.js",
"src/dispatcher/render.js",
"src/dispatcher/index.js",
],
},
{
name: "CAD bottombar app",
output: "cad-bottombar.js",
sources: ["src/bottombar.js"],
},
],
cssBundles: [
{
name: "CAD common styles",
output: "cad-common.css",
sources: ["src/styles/common.css"],
},
{
name: "CAD topbar styles",
output: "cad-topbar.css",
sources: ["src/styles/topbar.css"],
},
{
name: "CAD sidepanel styles",
output: "cad-sidepanel.css",
sources: ["src/styles/sidepanel.css"],
},
{
name: "CAD dispatcher styles",
output: "cad-dispatcher.css",
sources: ["src/styles/dispatcher.css"],
},
{
name: "CAD bottombar styles",
output: "cad-bottombar.css",
sources: ["src/styles/bottombar.css"],
},
],
htmlTemplates: [
{
name: "CAD topbar page",
output: "topbar.html",
source: "src/topbar.html",
},
{
name: "CAD sidepanel page",
output: "sidepanel.html",
source: "src/sidepanel.html",
},
{
name: "CAD dispatcher page",
output: "dispatcher.html",
source: "src/dispatcher.html",
},
{
name: "CAD bottombar page",
output: "bottombar.html",
source: "src/bottombar.html",
},
],
site: {},
};