feat(sales): local sales/purchase ledger (any currency)
A sale is a distinct model from a gift or a Plantare (reproduction
commitment): a recorded seed sale or purchase with an optional price in
ANY currency — €, Ğ1, time, or none yet. Mirrors the Plantare feature.
- schema v10: Sales table (SyncColumns), guarded createTable migration,
schema dump + generated schema_v10 for the migration round-trip test
- enum SaleDirection { iSold, iBought }
- VarietyRepository: create/watch/watchForVariety/delete + backup
export/exportForSync/import (LWW-by-HLC, tombstones)
- InventorySnapshot.sales + JSON codec encode/decode (round-trips amount,
currency, counterparty)
- UI: SalesScreen (/sales), sale sheet, drawer entry, variety-detail
action beside 'add Plantare'; money hides a trailing .0
- i18n sale block + menu.sales in en/es/pt/ast
- tests: sales repo test (5) incl. Ğ1/price-less/backup round-trip;
Sales screen added to the small-screen overflow guard
Also harden the overflow guard: swallow the headless engine's image
resource service PNG-decode errors (unrelated to layout) while still
failing on real RenderFlex overflows, so home/about stop reporting
false failures.
This commit is contained in:
parent
de6938d5d7
commit
6de039d518
27 changed files with 6156 additions and 23 deletions
|
|
@ -37,6 +37,7 @@
|
|||
"wishlist": "Llista de deseos",
|
||||
"following": "Siguiendo",
|
||||
"plantares": "Plantares",
|
||||
"sales": "Ventes",
|
||||
"settings": "Axustes"
|
||||
},
|
||||
"settings": {
|
||||
|
|
@ -577,5 +578,23 @@
|
|||
"openSection": "Pendientes",
|
||||
"settledSection": "Fechos",
|
||||
"removeConfirm": "¿Quitar esti compromisu?"
|
||||
},
|
||||
"sale": {
|
||||
"title": "Ventes",
|
||||
"help": "Rexistra semilla vendida o mercada — dineru, Ğ1 o cualquier moneda. Un modelu aparte del regalu y del Plantare. Enxamás se cobra comisión poles semilles.",
|
||||
"add": "Rexistrar venta",
|
||||
"empty": "Entá nun hai ventes. Anota equí lo que vendes o merques.",
|
||||
"iSold": "Vendí",
|
||||
"iBought": "Mercué",
|
||||
"direction": "¿Vendes o merques?",
|
||||
"counterparty": "¿Con quién?",
|
||||
"counterpartyHint": "Una persona o un coleutivu (opcional)",
|
||||
"amount": "Importe",
|
||||
"currency": "Moneda",
|
||||
"currencyHint": "€, Ğ1, hores… (opcional)",
|
||||
"note": "Nota (opcional)",
|
||||
"save": "Guardar",
|
||||
"delete": "Quitar",
|
||||
"removeConfirm": "¿Quitar esta venta?"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue