The solution requires some basic usage of PyQGIS. This code computes paths for every subsequent pair of points using the order specified in the "order"
field. Then all the paths are merged into a single layer.
Add an order column, change your input variables and run this as a script in QGIS 3.
###input###
networkLayerName = 'prg_ulice'
pointLayerName = 'pkt_adresowe'
orderColumnName = 'order'
output = '/home/lpowalka/Documents/dane/geopackage/path.gpkg'
###input###
networkLayer = QgsProject.instance().mapLayersByName(networkLayerName)[0]
pointLayer = QgsProject.instance().mapLayersByName(pointLayerName)[0]
expr = '"{column}" is not null'.format(column=orderColumnName)
pointLayer.selectByExpression(expr)
stops = []
for feat in pointLayer.selectedFeatures():
stops.append((feat['order'], feat.geometry().asPoint()))
#sort by order column
stops.sort(key=lambda x: x[0])
paths = []
for i, (order, point) in enumerate(stops[0:-1]):
endPoint = stops[i + 1][1]
print('Order: ', order)
print('From {} to {} \n'.format(point, endPoint))
parameters = {'INPUT': networkLayer,
'STRATEGY': 0,
'DIRECTION_FIELD': '',
'VALUE_FORWARD': '',
'VALUE_BACKWARD': '',
'VALUE_BOTH': '',
'DEFAULT_DIRECTION': 2,
'SPEED_FIELD': '',
'DEFAULT_SPEED': 50.0,
'TOLERANCE': 20.0,
'START_POINT': point,
'END_POINT': endPoint,
'OUTPUT': 'memory:'}
path = processing.run('qgis:shortestpathpointtopoint', parameters)['OUTPUT']
paths.append(path)
params = {'LAYERS': paths, 'OUTPUT': output}
pathsMerged = processing.run('qgis:mergevectorlayers', params)['OUTPUT']
vlayer = QgsVectorLayer(pathsMerged, 'result', 'ogr')
QgsProject.instance().addMapLayer(vlayer)