Hermes 284313f908
Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

121 lines
3.7 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Invoicing Demo</title>
<style>
* { box-sizing: border-box; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
max-width: 900px;
margin: 0 auto;
padding: 20px;
background: #f5f5f5;
color: #333;
}
h1 { color: #1a1a1a; margin-bottom: 8px; }
.subtitle { color: #666; margin-bottom: 24px; }
.card {
background: white;
border-radius: 8px;
padding: 20px;
margin-bottom: 16px;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
label { display: block; font-size: 13px; color: #444; margin-bottom: 6px; }
input, textarea {
width: 100%;
padding: 10px 12px;
border: 1px solid #ddd;
border-radius: 6px;
font-size: 14px;
margin-bottom: 12px;
}
.row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
button {
background: #0066cc;
color: white;
border: none;
padding: 10px 20px;
border-radius: 6px;
cursor: pointer;
font-size: 14px;
margin-right: 8px;
}
button:hover { background: #0052a3; }
button:disabled { background: #ccc; cursor: not-allowed; }
.hint { font-size: 12px; color: #666; margin-top: -8px; margin-bottom: 12px; }
.output {
background: #1a1a1a;
color: #0f0;
padding: 16px;
border-radius: 6px;
font-family: 'Monaco', 'Consolas', monospace;
font-size: 13px;
white-space: pre-wrap;
word-break: break-word;
max-height: 360px;
overflow-y: auto;
}
</style>
</head>
<body>
<h1>Invoicing Demo</h1>
<p class="subtitle">Creates a draft manual invoice via <code>host.invoicing.createManualInvoice</code></p>
<div class="card">
<h2 style="margin-top:0;font-size:18px;">Create Manual Invoice</h2>
<label for="clientId">Client ID (UUID)</label>
<input id="clientId" placeholder="e.g. 41bde0b8-0088-4759-89a2-82fe2298eee6" />
<div class="row">
<div>
<label for="invoiceDate">Invoice Date (YYYY-MM-DD)</label>
<input id="invoiceDate" placeholder="e.g. 2026-01-14" />
</div>
<div>
<label for="dueDate">Due Date (YYYY-MM-DD)</label>
<input id="dueDate" placeholder="e.g. 2026-01-14" />
</div>
</div>
<label for="poNumber">PO Number (optional)</label>
<input id="poNumber" placeholder="e.g. PO-123" />
<hr style="border:none;border-top:1px solid #eee;margin:16px 0;" />
<h3 style="margin:0 0 10px 0;font-size:16px;">Line Item (single)</h3>
<label for="serviceId">Service ID (UUID)</label>
<input id="serviceId" placeholder="e.g. 7ac1d2c1-..." />
<div class="row">
<div>
<label for="quantity">Quantity (&gt; 0)</label>
<input id="quantity" type="number" min="0" step="1" value="1" />
</div>
<div>
<label for="rateDollars">Rate (USD, dollars)</label>
<input id="rateDollars" type="number" min="0" step="0.01" value="50.00" />
<div class="hint">Converted to minor units (cents) before calling the handler.</div>
</div>
</div>
<label for="description">Description</label>
<textarea id="description" rows="2" placeholder="e.g. Implementation work">Implementation work</textarea>
<button id="btn-create">Create Draft Invoice</button>
<button id="btn-status" style="background:#666;">Status</button>
</div>
<div class="card">
<h2 style="margin-top:0;font-size:18px;">Output</h2>
<div id="output" class="output">Ready.</div>
</div>
<script src="./main.js" type="module"></script>
</body>
</html>