Skip to content
العربية

Odometer Readings and Service Intervals

Everything in a workshop that repeats — the oil change, the belt, the major service — repeats by distance, not by date. So the module keeps a running picture of each vehicle's mileage, works out roughly how fast it is being driven, and uses those two numbers to say when a given service falls due and roughly on which day the car should come back.

The chain is short: readings go onto the vehicle file, the vehicle file derives an average daily distance, the job order records which service was performed at which reading, and the closing projects a date from all of it. This page walks that chain and names the documents involved.

Required licence

srvcenter. Neither document on this page needs a document term to work — the Kilo Metrage document requires none at all.

The Kilo Metrage screen

The three numbers on the vehicle file

FieldArabicWhat it is
Last Odometer + dateقراءة العداد السابقةThe previous accepted reading
Current Odometer + dateقراءة العداد الحاليةThe latest accepted reading
Average KM Daily Consumptionمتوسط استهلاك الكيلومتر يومياCalculated — the distance between the two readings divided by the days between them

For Fahad's Saif 1.6, vehicle VEH-2031:

ReadingDate
Last odometer41,6001 January 2026
Current odometer45,3003 March 2026
Difference3,700 km over 61 days

3,700 ÷ 61 = 60.7 km a day.

The average is only recalculated when enough time has passed — the module setting Min Days To Calculate Average KM Consumption sets the minimum gap. That is deliberate: two readings a day apart would produce a wild figure and poison every projection built on it. Set it to something like a fortnight and leave it alone.

Who writes readings

Three things can move a vehicle's odometer:

  1. The Kilo Metrage document (سجل قراءة العداد) — the dedicated screen, described below.
  2. The job order. The current odometer typed on a job order is pushed onto the vehicle file every time the order is saved. In practice this is where most readings come from: reception reads the dial as the car arrives.
  3. Any other document that records a reading, including the product task opening document — though a reception inspection sheet only validates the reading it captures and never advances the vehicle's odometer.

Whatever the source, the rule is the same: a new reading rolls the current reading into the last reading and takes its place, and a reading is not allowed to go backwards. If the new document's date is on or after the vehicle's current odometer date, its reading may not be lower than the vehicle's current odometer. Odometers do not run backwards, and a typo that says they did is refused.

Recording a reading taken on a different day

On the job order the Current Odometer Date is disabled and always follows the document's value date. So a reading taken on Tuesday cannot be entered on Thursday's job order with Tuesday's date. Use a Kilo Metrage document for that.

The Kilo Metrage document

Menu: Service Center > Documents > Kilo Metrage (مركز خدمة > المستندات > سجل قراءة العداد).

A simple document: a header with the usual code, dates and one tick — Update Odometer Regardless Date — and a grid with one row per vehicle:

ColumnArabicTyped or filled in
ProductالمنتجTyped
Previous KM dateFilled in from the vehicle file
Previous KMFilled in from the vehicle file
Current KMTyped — the new reading
Due task 1 … 5Filled in — see below

The Update Odometer Regardless Date tick is the escape hatch: with it on, an older-dated reading is allowed to overwrite the vehicle's current odometer. Use it to correct a mistake, not as routine.

The due-task columns

When you enter a reading, the five due task columns fill themselves with the maintenance tasks that are now due at that reading — the ones whose last execution mileage plus their recurrence interval has been reached or passed. Only the first five are shown, and they are purely informational: nothing is created from them, and no document is generated.

They are, however, the reliable way to see what a vehicle needs. Read them, then type the work onto the job order by hand.

The last-service register

How does the system know that Fahad's oil change was last done at 36,000 km?

Because the job order told it. When a job order is committed, it records for every task on it that this service was performed on this vehicle at this reading on this date. Those records accumulate into a per-vehicle, per-task register — visible as a read-only list on the vehicle's own file — and that register is what the due-task calculation reads.

The recurrence interval itself comes from the task catalogue: each task can carry a recurrence in kilometres, optionally different per model. Fahad's oil change recurs every 10,000 km.

So: last done at 36,000, recurs every 10,000, next due at 46,000. The car reads 45,300 on arrival — 700 km short. At 60.7 km a day that is about 11.5 days, which is how the closing document arrives at an expected next visit of 15 March 2026.

Seeding history for vehicles you inherit

There is an obvious problem with all of this on the day you go live: the workshop has been servicing these cars for years and the register is empty. Every vehicle looks as if it has never had an oil change, so nothing is ever due.

That is what the Product Task Opening Document (افتتاحي مهمات منتج) is for. Menu: Service Center > Documents > Product Task Opening Document.

It is an opening balance, but what it opens is a service history. One grid, one row per vehicle and task:

ColumnArabicNotes
ProductالمنتجTyped
TaskالمهمةTyped
Task KMالقراءة عند تنفيذ المهمةRequired — the reading when that service was last done
Task Dateتاريخ المهمةRequired
Recur Every KMتكرر كل / كمRead-only — filled in from the task's recurrence rules for this vehicle

Committing it writes those rows into the last-service register exactly as if job orders had done it, and pushes each vehicle's odometer forward to the reading on the line. Un-committing removes them again.

For Fahad's car, one line — engine oil and filter change, 36,000 km, with its date — is all it takes for kilometre-based maintenance to work from day one.

The opening document checks nothing

This document performs no validation of its own. A line with an implausible reading, a duplicate vehicle-and-task pair, or a date that contradicts the vehicle's own history commits without complaint — and it goes straight into the register that everything else trusts.

Treat it as a data-migration tool: prepare the list carefully outside the system, load it once, then spot-check a handful of vehicles' last-service lists on their own files before you rely on the due-task figures.

What mileage does not drive

Two things worth stating so nobody goes looking for them:

  • Recall campaigns are matched by vehicle, not by mileage. A campaign lists individual vehicles; the odometer plays no part in whether a job order is blocked. See The Job Order.
  • Nothing schedules a visit for you. The next-visit date is a projection written onto the job order and its closing. It raises no reminder, no task and no service request — following it up is a job for whoever runs your customer-contact process, working from the expected next visit date on closed job orders.

Finally, do not build a "what is due" workflow on the job order's Collect Tasks button; its filter is inverted and it proposes the services that are not due. The job order page carries the full warning. The due-task columns on the Kilo Metrage document use the correct test — use those.