Attention!
Note: Ellipsis (…) substitutes 'Unit properties → Fuel consumption' is option paths.
Three options are attached to this detection:
Option: Minimum fuel filling volume, liters;
Option: Detect fuel filling only while stopped;
Option: Ignore filtration when calculating filling volume;
Special Case: How a filling is processed?
Minimum fuel filling volume
... → 'Fuel fillings/thefts detection' block → 'Minimum fuel filling volume, liters'
This option helps to quit false fillings, because in motion sensors may send false data rise.
Detect fuel filling only while stopped
... → 'Fuel fillings/thefts detection' block → 'Detect fuel filling only while stopped'
In normal conditions transport vehicles are fueled on stops. This option narrows its search to stops/parkings.
Calculate fuel filling volume by raw data
... → 'Fuel Fillings/Thefts Detection' block → 'Calculate fuel filling volume by raw data'
When filtration switched on then some fuel level deviations may occur at
the beginning and end of a filling. To avoid it the system uses
unfiltered data when filling volume calculated.
Special Case: How a filling is processed?
Filling time frontiers and its volume
The filling is processing.
Assume, that fuel volume in this message is Vcurr, previous message fuel volume — Vprev. If the difference d (=Vcurr - Vprev) for the current message is positive, then current message will be marked as initial filling message.
Time passes by. The filling is close to finish. When
d-value for some message becomes negative (i.e., the current message fuel volume is less than in previous one), then it is called
final filling message.

If the fuel level doesn't change during the time indicated in the 'Timeout to separate consecutive fillings' parameter on the '
Fuel Consumption' tab of the unit's properties, the filling will be considered finished as well.
Filling volume equals to Vfinal - Vinit (difference in fuel volumes between final and initial filling messages).
Filling timestamp calculation algorithm
Now it's time to find the filling timestamp.
Iteratively for every message within filling interval (exclude the last one) the system seeks delta(=Vnext - Vcurr) for the next message which shows the fuel level growth between the current message and the next one.
Message timestamp which delta is the ultimately biggest among others is
regarded as filling timestamp (in other words, the left message is
chosen from the message pair which delta is the biggest one).

Worth highlighting, that a filling timestamp is calculated dynamically depend on the current unique case.
Determining fuel fillings in the 'Fuel traffic' table
The Fuel Traffic table determines the fuel activity of the unit (fuel filling, theft,
counter operation), according to which the report is being executed, as
well as the units that were near it. The following algorithm explains
what principle the system uses to determine to which of the nearby units
fuel was distributed.
The intervals for the distribution and reception of fuel are considered to be adjacent if the time of the fuel filling of the unit that receives fuel has fallen into the interval of
operation of the counter of the unit that distributed it (see the
diagram). 
If there was no such match, the algorithm searches for the intersection
of the entire fuel filling interval of the unit that received the fuel,
with the intervals of the counter of the unit that distributed it and
selects the first one (see the diagram). 