Dairy System
Milk Collection & Farmer Payout
Twice-daily collection with quality-based rates, deductions and cycle payouts to farmers.
- TYPE
- COLLECTION ERP
- STATUS
- LIVE
- YEAR
- —
- ROLE
- System design, implementation
- PLATFORM
- Flutter (Android), Node.js API
- STACK
- Flutter · Node.js · MySQL
PROBLEM
A collection centre takes milk from hundreds of farmers twice a day, every day. Rate depends on measured fat and quantity, advances and feed purchases are deducted, and everyone must be paid on a fixed cycle without dispute.
On paper this is an enormous amount of arithmetic performed under time pressure, and every error is a conversation with a farmer who remembers exactly what he delivered.
SYSTEM
Collection is captured per farmer per shift with quantity and quality, and the rate is resolved from a versioned rate chart rather than typed in.
The payout cycle sums collections, applies deductions for advances and purchases, and produces a farmer-wise statement that can be defended line by line.
CORE FLOW
How the operation moves through the system.
- Member record with cattle, advance balance and payout mode
- Morning and evening shift entry with quantity and quality
- Resolved from a versioned quality-based rate chart
- Advances, feed and supply purchases recovered against the cycle
- Cycle statement per farmer, defensible line by line
- Payable and recovery posted to the shared engine
Flow from farmer record through shift collection, rate resolution, deductions, cycle payout and accounting.
KEY MODULES
- M01Farmer master
- Member record, cattle detail, advance balance and payout mode.
- M02Shift collection
- Morning and evening entry with quantity and quality per farmer.
- M03Rate charts
- Versioned quality-based rates; historical cycles stay reproducible.
- M04Deductions
- Advances, feed and supply recovery applied against the cycle.
- M05Payout
- Cycle-wise statement, printed slip and payable register.
ARCHITECTURE
- Client
- Android app at the collection counter, usable at speed by one operator.
- Rate resolution
- Server-side from a versioned chart, never a typed figure.
- Data
- MySQL; collection entries are immutable once a cycle is closed.
- Accounting
- Farmer payable and recovery posted to VS Accounts.
ENGINEERING
The parts that were not obvious, and what the system does about them.
- 01 / 02
Speed at the counter
A queue of farmers at five in the morning sets the interface budget. Entry is farmer code, quantity, quality and commit, with no navigation between fields that a keypad cannot do.
- 02 / 02
Reproducing a closed cycle
A farmer disputing last month payout needs the same numbers again. Rate versions are stamped onto each collection entry, so a reprint is a reprint and not a recalculation.
SCREENS
- SCREEN_01Shift collection entry
- SCREEN_02Cycle payout statement
RESULT
The counter runs at the speed of the queue, and payout day produces statements nobody has to recompute by hand.