update sample app
This commit is contained in:
@@ -1,44 +0,0 @@
|
||||
# Fixture Invoicing — Soleprint Demo
|
||||
|
||||
> **This book describes a deliberately-fake invoicing app used as a test
|
||||
> fixture for the Soleprint framework.** It is not a real product.
|
||||
|
||||
## Purpose
|
||||
|
||||
The fixture exercises every soleprint tool end-to-end so we can iterate on
|
||||
the framework without needing a real managed app. See
|
||||
[`examples/fixture-invoicing/`](../../../../../../examples/fixture-invoicing/)
|
||||
for the app itself.
|
||||
|
||||
## Data model
|
||||
|
||||
```
|
||||
Customer ──< Invoice ──< LineItem
|
||||
└──────< Payment
|
||||
```
|
||||
|
||||
| Table | Key fields |
|
||||
|-------------|-------------------------------------------------|
|
||||
| `customer` | id · name · email · created_at |
|
||||
| `invoice` | id · number · customer_id · issued_at · status |
|
||||
| `line_item` | id · invoice_id · description · qty · unit_price|
|
||||
| `payment` | id · invoice_id · amount · method · paid_at |
|
||||
|
||||
## Happy-path flow
|
||||
|
||||
1. Create a customer (`POST /api/customers`)
|
||||
2. Create a draft invoice for them (`POST /api/invoices`)
|
||||
3. Add one or more line items (`POST /api/line-items/invoices/{id}`)
|
||||
4. Record a payment (`POST /api/payments/invoices/{id}`) — if the total
|
||||
paid ≥ total billed, the invoice auto-transitions to `paid`.
|
||||
|
||||
## How this connects to Soleprint
|
||||
|
||||
| Soleprint tool | Fixture hook |
|
||||
|----------------|--------------|
|
||||
| datagen | `station/tools/datagen/fixture.py` — FixtureInvoicingGenerator |
|
||||
| graphgen | `station/tools/graphgen/schema.json` — 4 models + FK edges |
|
||||
| databrowse | `station/tools/databrowse/depot/{schema,views}.json` |
|
||||
| tester | `station/tools/tester/tests/fixture/` |
|
||||
| link | SQLAlchemy reflection against `customer`, `invoice`, etc. |
|
||||
| sbwrapper | Injected into fixture's Vue frontend by nginx |
|
||||
Reference in New Issue
Block a user