...
- There is no logic to make sure a data is consistent across a set of modules
- There is a logic to perform data consistency, but it isn't reliable and can lead to inconsistent data in a set of modules
Business Flows
Approve invoice (mod-invoice)
- Fetch invoice (mod-invoice)
- Process prorated adjustment (mod-invoice)
2.1. Fetch invoice lines by invoice id (mod-invoice → mod-invoice-storage)
2.2. Persist invoice lines (mod-invoice → mod-invoice-storage)
- Update invoice lines with encumbrance transactions (mod-finance → mod-finance-storage)
Check enough money in budget (mod-finance → mod-finance-storage)
- Persist invoice lines (mod-invoice → mod-invoice-storage)
- Check expense classes (mod-finance → mod-finance-storage)
- Create/persist pending payment transaction (mod-finance → mod-finance-storage)
- Create/persist voucher with voucher lines (mod-invoice → mod-invoice-storage)
5.1. Fetch voucher lines by invoice id (mod-invoice → mod-invoice-storage)
5.2. Fetch invoice lines by invoice id (mod-invoice → mod-invoice-storage)
5.3. Persist voucher (mod-invoice → mod-invoice-storage)
5.4. Persist voucher lines (mod-invoice → mod-invoice-storage)
8. Persist invoice with new status (mod-invoice → mod-invoice-storage)
Pay invoice (mod-invoice)
- Fetch invoice (mod-invoice)
- Process prorated adjustment (mod-invoice)
2.1.
...
Fetch
...
invoice
...
lines
...
by
...
invoice
...
id
...
(mod-invoice
...
→
...
mod-invoice-storage)
2.2.
...
Persist invoice
...
lines
...
(mod-invoice
...
→
...
mod-invoice-storage)
- Handle payment and credits transactions (mod-finance → mod-finance-storage)
- Store Persist invoice with new status (mod-invoice → mod-invoice-storage)
- Update voucher (mod-invoice)
5.1. Fetch voucher lines by invoice id (mod-invoice → mod-invoice-storage)
5.2. Fetch invoice lines by invoice id (mod-invoice → mod-invoice-storage)
5.3.
...
Persist voucher (mod-invoice → mod-invoice-storage)
5.4.
...
Persist voucher lines (mod-invoice → mod-invoice-storage)
Open order (mod-orders)
Unopen
...