Dinar POS · project status · 10 September 2026, evening
The third milestone is built: suppliers and purchase orders that land stock and supplier debt, expenses, a dashboard with a thirty-day chart, Excel export and import, barcode labels, a yearly document series, and every screen redrawn on one component kit with four themes. All ten tasks are merged and reviewed, and the milestone is on main since 20:18. This page says what a shop can do now, what the reviews caught, and what needs a decision.
The shop keeps a file on each supplier and writes purchase orders against it. A delivery can arrive in parts; each receipt puts the goods into stock at their landed cost (transport and other costs spread over the lines by value, the odd centime on the last line) and raises what the shop owes the supplier by the value delivered, not ordered. A return sends goods back at the cost they came in at. Money handed to a supplier settles the oldest open order first, and a supplier's statement shows every movement with a running balance. A bon de réception is a delivery record, never a document with a number.
Expenses are written once against seeded categories (rent, electricity, wages, and so on) and never edited or deleted; a mistake is a second line. The cash position counts what actually moved through the drawer: cash sales at the amount paid, the stamp as its own figure, customer payments in, supplier payments and expenses out.
The dashboard shows today and the month side by side: sales, gross margin (after the whole-document discount, cancelled papers excluded, credit notes reversing at the cost the goods were sold at), expenses, cash position, customer and supplier debt, the products running low, the ten best sellers by units and by margin, and a thirty-day chart by day or by week. A stock recount repairs the cached quantity to what the movement ledger says and writes a line for every drift it finds.
Documents now number by year (FA-2026-000001, restarting at one each January, never a gap), which is what every Algerian shop's comptable expects. The catalogue exports to Excel and imports back from the same file, matched on barcode, with a dry run that lists what would change and refuses a bad row with its reason. Barcode labels print eighteen to an A4 sheet, with the EAN-13 check digit verified before anything is printed or imported.
And the whole application was redrawn. Every screen now sits on one component kit (shadcn/ui on the shop's own colours and type), switchable between four themes with one attribute: Comptoir (paper and green), Registre (ink and brass), Observe (white cards on cool grey) and its dark version. The logo is one coin mark that reads as a Latin D and an Arabic dal; the wordmark follows the language. A development seeder fills a shop with thirty days of realistic trading so every screen can be judged full, and every screen is photographed in French and Arabic on this site.
| Task | Status | What it is |
|---|---|---|
| Yearly series | done | Documents number per kind and per year, gapless, backfilled for what already exists. |
| Tables and rules | done | Suppliers, ledger, purchases, receipts, expenses and the jobs table; the document kinds as database rules. |
| Suppliers | done | The file, the append-only ledger, payments oldest-first, the statement. |
| Purchases | done | Orders, partial receipts, landed cost, returns, closing short, supplier debt on delivery. |
| Expenses and cash | done | Seeded categories, write-once expenses, the cash position that counts what moved. |
| Stock recount | done | The cache repaired to the ledger, one audit line per drift. |
| Dashboard | done | Today and the month, margin after discount and reversals, low stock, top ten, the thirty-day chart. |
| Excel and labels | done | Export, import with a dry run, eighteen labels per sheet, the check digit verified. |
| Seeder and series | done | A development-only binary that fills a shop with thirty days of trading; the series behind the chart. |
| Closing sweep | done | The spec and the architecture pages brought up to date, the review of the whole milestone, its fixes, this page. |
Beside them, the design work of the same day: the four themes and the tokens, the vendored fonts, the logo, the component kit with a rule that refuses bare browser controls, and the nine screens redrawn one by one.
Every task went through the money, data-reach and test-quality lenses before it merged, and the whole milestone was read once more at the end. The closing review found the code sound and two real gaps, both in the Excel import, both fixed the same evening with a test that failed first:
Earlier in the day the reviews of single tasks caught and fixed: the cash position reading the total instead of the amount paid on cash sales (the stamp was missed on every cash sale over 300 DA); a division by zero on a free purchase order; a receipt of zero value writing no debt; supplier credit placed on the order's value instead of the delivery's; a label routine accepting twelve digits; an export range that stopped one second short of midnight.