Ready-mix Concrete module
For a plant that pours today and invoices at month end: pour orders and their sites, a delivery ticket with its timestamps, truck and pump, a daily production order generated from the tickets using the grade’s mix corrected for the day’s moisture, a weighbridge that books stock at the weighed quantity, and a report exposing the gap between theoretical and actual consumption.
Workflow — from pour order to invoice
The big picture before the screens
Eight numbered steps in the order the system actually runs them. The daily cycle (orange) is what the plant works on every day; before it comes one-time setup, after it come quality and control layered on top of a running system.
Before you startSetup — done once
Grades, mix designs, customers and trucks ↗
Each concrete grade (C25, C30…) is an item in m³ flagged "finished product", with a bill of materials (mix design): cement, sand, aggregate, water, admixtures per m³. Each customer has pour sites. Mixer trucks and pumps are fleet vehicles. In settings: the pump item, minimum load, allowed waiting minutes, the water item, the waste account and waste reasons.
Every dayThe daily cycle
Pour order CORD-00001 ↗
Everything starts here: customer and site, grade, ordered quantity (m³), pour date and time, whether a pump is needed, and technical notes (slump, aggregate size). The order stays open until delivery completes or it is closed.
Pour day board ↗
The shift screen: today's orders side by side, delivered and remaining per order, busy and free trucks and pumps. From here the dispatcher assigns trucks to orders and creates the ticket for the truck leaving.
Delivery ticket ↗
One ticket per truck: the pour order in the header (selecting it fills customer, site and grade), mixer, driver and pump, loaded quantity, batch number, loading/arrival/unloading times, and returned quantity if the truck came back with some. Printed for the driver and signed at the site.
Day's production ↗
At the end of the day the lab enters moisture readings for sand and aggregate, then presses Generate: the system groups the day's posted tickets per grade and generates a production order that consumes raw materials from the mix per cubic metre poured, with water corrected for the moisture carried. This is where the actual cost per m³ comes from.
Weekly / monthlyBilling and collection
Ticket billing ↗
A statement of the period's tickets per customer with their billing status. Pick the posted, unbilled tickets and the system creates one draft sales invoice from several tickets: returned quantity deducted, small loads raised to the minimum load, the pump item, and a waiting line for every ticket that exceeded the allowed unloading minutes.
In parallelQuality and control
Quality samples CSMP-00001 ↗
The sample is taken from a ticket. Its cubes and 7- and 28-day crushing results are recorded and the system rules: curing until the 28-day test is complete, then conforming / non-conforming by the average against the target. The compressive strength certificate is printed from here.
Weighbridge tickets WGH-00001 ↗
The supplier's truck arrives with raw material: empty and loaded weights give the net, compared with the quantity on the supplier's note. From the weighing a goods receipt is created with the actual quantity, not the written one.
Theoretical vs actual ↗
Month-end report: theoretical = the period's ticket volume × each grade's mix components corrected for that day's moisture; actual = what the posted production orders consumed. The % difference per material exposes waste or leakage, alongside the silo count.
By the numbers — one order from start to finish
A customer orders 100 m³ of C30 for a slab on Thursday, with a pump. Minimum load 6 m³, allowed waiting 40 minutes.
Customer sites
Path: Ready-mix Concrete → Customer sites — /concrete/sites
Purpose: A site is a record under the customer with its address, contact and phone — not free text retyped on every ticket with a different spelling. It turns “how much did we pour on this project?” into a query rather than a search through a file.
| Field | Description |
|---|---|
| Customer | The customer the site belongs to; a site cannot exist without one. |
| Site name | The project as both parties know it — “Narcissus Tower”, not “Site 3”. |
| Address | The delivery address, printed on the ticket for a driver who has never been there. |
| Contact & phone | Who receives on site — the first call when a pour runs late. |
Pour orders
Path: Ready-mix Concrete → Pour orders — /concrete/orders
Purpose: Your agreement with the customer written once: how many cubic metres, of which grade, when, where, and whether a pump is needed. Delivery is measured against it: how much has gone and how much remains.
| Field | Description |
|---|---|
| Grade | The concrete item, measured in cubic metres. |
| Quantity | The agreed volume — not the delivered one; the gap is what remains. |
| Scheduled time | Date and time, shown on the pour-day board. |
| Pump required | Reserves the pump on the day’s schedule and prices the service later. |
| Status | Open, closed or cancelled — an order with tickets cannot be cancelled. |
Pour-day board
Path: Ready-mix Concrete → Pour-day board — /concrete/board
Purpose: The morning screen for the dispatcher: every order for the day, how much of each has been delivered and how much is left — computed from the day’s tickets, not from anyone’s memory.
| Field | Description |
|---|---|
| Order | Customer, site, grade and agreed quantity. |
| Delivered | The sum of this order’s ticket quantities. |
| Remaining | Agreed minus delivered. |
| Pump | Whether the order needs one. |
Concrete delivery tickets
Path: Ready-mix Concrete → Delivery tickets — /concrete/tickets
Purpose: The document that leaves with every truck. It is a real delivery note that reduces stock, and it carries four timestamps and a returned quantity — financial fields, not administrative ones.
| Field | Description |
|---|---|
| Order & site | They pull in the customer and grade automatically. |
| Truck & driver | From the vehicle fleet — which is how truck costs land on their asset. |
| Pump | The pump vehicle if used; priced as its own invoice line. |
| Loaded time | Starts the concrete’s clock — pouring after two hours risks the strength. |
| Arrived / pour start | The gap between them is the waiting time its fee is computed from. |
| Pour end | Closes the cycle and releases the truck. |
| Returned quantity | What came back unpoured — deducted from the invoice and measured as waste. |
Moisture & daily production
Path: Ready-mix Concrete → Daily production — /concrete/production
Purpose: Two screens in one: the day’s aggregate-moisture readings, then generating a production order per grade × plant from the day’s tickets — with the grade’s mix scaled to the day’s volume and corrected by those readings.
| Field | Description |
|---|---|
| Moisture readings | One row per aggregate item with its percentage (0–50%), for that day only. |
| Water item | A plant setting; the water carried by wet aggregate is deducted from it. |
| Preview | Each grade × plant with its volume and ticket count, and whether its grade has an active mix. |
| Generate | Creates a draft production order for every group not yet generated today. |
Weighbridge tickets
Path: Ready-mix Concrete → Weighbridge tickets — /concrete/weigh
Purpose: The inbound weighing: gross minus tare equals net, compared against the supplier’s ticket quantity. The goods receipt is generated from the weighing — not from the supplier’s ticket — so stock enters at what was weighed.
| Field | Description |
|---|---|
| Supplier & item | The incoming material and its source. |
| Gross / tare weight | Net is computed, and a gross below the tare is rejected. |
| Supplier ticket quantity | What the supplier wrote — the gap surfaces for your monthly review with them. |
| Goods receipt | Generated as a draft at the weighed quantity. |
Theoretical-versus-actual report
Path: Ready-mix Concrete → Theoretical vs actual — /concrete/variance
Purpose: Theoretical = the period’s ticketed cubic metres × their grades’ mixes, corrected by each ticket day’s moisture. Actual = what actually left on posted production orders. The gap, in quantity and percentage, is the plant’s first control indicator.
| Field | Description |
|---|---|
| Material | One row per item entering the mixes. |
| Theoretical | What should have been issued. |
| Actual | What left stock on posted orders. |
| Gap and % | Actual minus theoretical, and its percentage of theoretical. |
| Current stock | Today’s balance — to read the variance next to what is left. |
Quality samples
Path: Ready-mix Concrete → Quality samples — /concrete/samples
Purpose: The cube register linked to the ticket: sample number, slump, target strength and break results by age. It is what produces the strength certificate when it is requested months later.
| Field | Description |
|---|---|
| Sample number & date | A sequential number and the date taken, not the date keyed in. |
| Ticket | The decisive field — it pulls in the customer, site, grade and truck automatically. |
| Slump | The workability measurement at delivery, in millimetres. |
| Target strength | What the result is read relative to. |
| Cube count | Usually three or six; some broken at 7 days and the rest at 28. |
| Break results | One row per break with its age, date and strength. |
Bulk invoicing
Path: Ready-mix Concrete → Ticket billing — /concrete/billing
Purpose: Dozens of tickets on one invoice: pick the customer and period, their posted uninvoiced tickets are listed, and a draft sales invoice comes out whose lines are the tickets.
| Field | Description |
|---|---|
| Minimum load | A ticket below it is invoiced at the minimum — a setting configured once. |
| Waiting fees | Computed from the ticket timestamps after the free minutes, at an hourly rate. |
| Pumping | Per cubic metre or as a flat call-out, on its own line. |
| Returned quantity | Deducted automatically — the customer pays for what was poured, not what was loaded. |
Waste reasons
Path: Concrete → Setup → Waste reasons — /concrete/waste-reasons
What it does: Concrete that came back or was tipped is waste, not sales. Naming its reason — site delay, pump breakdown, rejected mix, over-ordering — is what turns a recurring loss into a problem with a name that can be worked on.
| Field | Description |
|---|---|
| Name | In Arabic and English. |
| Active | Deactivate a reason that no longer occurs. |