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.

SetupOnce: grades, mix designs, sites, trucks, settings
Daily cyclePour order → day board → delivery ticket → day's production
CashTicket billing → sales invoice → receipt
Quality & controlSamples and cubes · weighbridge · theoretical vs actual

Before you startSetup — done once

0

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.

NoteThe "finished product" flag is what makes an item appear in pour orders and tickets; an unflagged item (cement, sand) stays a raw material inside the mix.

Every dayThe daily cycle

1

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.

NoteThe quantity is the ceiling the tickets are measured against: every ticket draws from it, and when tickets exceed the order the system warns and proposes a corrected quantity.
2

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.

NoteThe board saves nothing itself — it is a view over orders and tickets. If the numbers look wrong, check the tickets, not the board.
3

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.

NotePosting the ticket is what takes the concrete out of stock and records delivery against the order. The ticket is a delivery note with concrete data on it, so it later becomes an invoice. A quantity above the truck's capacity is fixed with one click.
4

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.

NoteThe production order is never typed by hand — it is generated from tickets, so a missing ticket means one that was not posted yet. Moisture is not a luxury: without it the paper consumes extra water and less sand.

Weekly / monthlyBilling and collection

5

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.

NoteThe invoice does not move stock again — the concrete left with the ticket. Review the draft, post it like any sales invoice; the receipt comes from the normal sales cycle.

In parallelQuality and control

6

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.

NoteA sample touches neither stock nor invoice — it is a quality file linked to the ticket, and your reference when a customer objects weeks later.
7

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.

NoteThis is the control gate on incoming material: the difference between the net and the supplier's note shows on the weighing itself before anything enters stock.
8

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.

NoteA large gap in a single material usually means a short weighing or unrecorded moisture — not a wrong mix. Check the weighbridge and moisture before touching the mix design.

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.

1pour order CORD for 100 m³, open
13tickets: 12 × 8 m³ + a last 4 m³ (1 m³ returned)
99m³ delivered against the order after the return
1production order for Thursday consuming materials for 99 m³, moisture-corrected
1invoice: 99 m³ + pump item + last ticket raised to 6 + waiting on two tickets
3samples → certificate after 28 days

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.

FieldDescription
CustomerThe customer the site belongs to; a site cannot exist without one.
Site nameThe project as both parties know it — “Narcissus Tower”, not “Site 3”.
AddressThe delivery address, printed on the ticket for a driver who has never been there.
Contact & phoneWho receives on site — the first call when a pour runs late.
ℹ️ The site on a ticket may be picked from the register or typed as text for one-off pours.

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.

FieldDescription
GradeThe concrete item, measured in cubic metres.
QuantityThe agreed volume — not the delivered one; the gap is what remains.
Scheduled timeDate and time, shown on the pour-day board.
Pump requiredReserves the pump on the day’s schedule and prices the service later.
StatusOpen, 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.

FieldDescription
OrderCustomer, site, grade and agreed quantity.
DeliveredThe sum of this order’s ticket quantities.
RemainingAgreed minus delivered.
PumpWhether the order needs one.
ℹ️ The board is for reading and dispatching; entry stays on the orders and tickets screens.

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.

FieldDescription
Order & siteThey pull in the customer and grade automatically.
Truck & driverFrom the vehicle fleet — which is how truck costs land on their asset.
PumpThe pump vehicle if used; priced as its own invoice line.
Loaded timeStarts the concrete’s clock — pouring after two hours risks the strength.
Arrived / pour startThe gap between them is the waiting time its fee is computed from.
Pour endCloses the cycle and releases the truck.
Returned quantityWhat came back unpoured — deducted from the invoice and measured as waste.
ℹ️ Sequence the day like this: post the production order (which receives the grade) before posting the day’s tickets (which issue it).

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.

FieldDescription
Moisture readingsOne row per aggregate item with its percentage (0–50%), for that day only.
Water itemA plant setting; the water carried by wet aggregate is deducted from it.
PreviewEach grade × plant with its volume and ticket count, and whether its grade has an active mix.
GenerateCreates a draft production order for every group not yet generated today.
ℹ️ The mix itself is edited under Manufacturing → Bills of materials: the finished product is the grade item and the quantities are per cubic metre. One active mix per grade.

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.

FieldDescription
Supplier & itemThe incoming material and its source.
Gross / tare weightNet is computed, and a gross below the tare is rejected.
Supplier ticket quantityWhat the supplier wrote — the gap surfaces for your monthly review with them.
Goods receiptGenerated 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.

FieldDescription
MaterialOne row per item entering the mixes.
TheoreticalWhat should have been issued.
ActualWhat left stock on posted orders.
Gap and %Actual minus theoretical, and its percentage of theoretical.
Current stockToday’s balance — to read the variance next to what is left.
ℹ️ Production orders left in draft make the actual figure lower than it is, so the variance looks favourable. Start reading the report by confirming every order in the period is posted.

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.

FieldDescription
Sample number & dateA sequential number and the date taken, not the date keyed in.
TicketThe decisive field — it pulls in the customer, site, grade and truck automatically.
SlumpThe workability measurement at delivery, in millimetres.
Target strengthWhat the result is read relative to.
Cube countUsually three or six; some broken at 7 days and the rest at 28.
Break resultsOne row per break with its age, date and strength.
ℹ️ The sample is saved with no results on pour day, and reopened after a week and after a month to record them.

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.

FieldDescription
Minimum loadA ticket below it is invoiced at the minimum — a setting configured once.
Waiting feesComputed from the ticket timestamps after the free minutes, at an hourly rate.
PumpingPer cubic metre or as a flat call-out, on its own line.
Returned quantityDeducted automatically — the customer pays for what was poured, not what was loaded.
ℹ️ This invoice’s lines reference the delivery-note lines so they do not move stock a second time: stock left when the truck left.

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.

FieldDescription
NameIn Arabic and English.
ActiveDeactivate a reason that no longer occurs.
ℹ️ A reason is mandatory on a return: concrete cannot come back without one, or waste becomes a number nobody is asked about.