Update invoice collection docs
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
**Status**: Proposed (design only — no code changes yet)
|
||||
**Depends On**: [order_invoice_lifecycle.md](./order_invoice_lifecycle.md) — this document only applies
|
||||
once an `Invoice` reaches `Finalized`; it does not touch Pending/Draft.
|
||||
once an `Invoice` reaches `Finalized`; it does not touch Draft/Printed.
|
||||
**Refactors**: `Models/Payment.cs`, `Models/Enums.cs` (`PaymentMethod`, `PaymentStatus`),
|
||||
`Sale.PaymentStatus`, and the payment recording flow in
|
||||
[06_sale_ride.md](../06_sale_ride.md) (`POST /api/sales/{saleId}/payments`). Also resolves
|
||||
@@ -107,13 +107,13 @@ audit and for spotting collectors who never enter anything in real time.
|
||||
|
||||
```
|
||||
Invoice
|
||||
├── ... (existing fields from order_invoice_lifecycle.md: Status, ConfirmedAt, FinalizedAt, ...)
|
||||
├── ... (existing fields from order_invoice_lifecycle.md: Status, PrintedAt, PrintedBy, FinalizedAt, FinalizedBy, ...)
|
||||
├── PaymentStatus (PaymentStatus) — NEW: Pending, PartiallyPaid, Paid — mirrors the existing
|
||||
│ Sale.PaymentStatus pattern from 06_sale_ride.md, recomputed on
|
||||
│ every Payment insert (see Business Rules)
|
||||
```
|
||||
|
||||
This is a deliberate second axis alongside `Invoice.Status` (`Pending/Draft/Finalized`, the document
|
||||
This is a deliberate second axis alongside `Invoice.Status` (`Draft/Printed/Finalized`, the document
|
||||
lifecycle) — `PaymentStatus` only starts being meaningful once `Status = Finalized`, and answers
|
||||
`order_invoice_lifecycle.md`'s Open Question 3 (whether the two axes should merge): they stay
|
||||
separate. `PaymentStatus` is the same axis `19_finance_accounting.md` proposed baking into
|
||||
@@ -130,7 +130,7 @@ has a linked Order/Invoice — see Impact section.
|
||||
|
||||
1. A `Payment` can only be recorded against an `Invoice` whose `Status = Finalized` — matches
|
||||
`order_invoice_lifecycle.md`'s framing that Finalize is "the record used for day-end calculations."
|
||||
Attempting to record a `Payment` against a Pending/Draft invoice is rejected (409).
|
||||
Attempting to record a `Payment` against a Draft/Printed invoice is rejected (409).
|
||||
2. Multiple `Payment` rows are allowed per `Invoice` — collection is not required to happen in a
|
||||
single action. Each row has exactly one `Method`; a mixed cash+cheque collection on one visit is
|
||||
two rows with the same `CollectedAt`/visit context, not one split row.
|
||||
|
||||
Reference in New Issue
Block a user