For Pickup jobs, loading happens at the job location, and they are not dropped off during the route.
For Delivery jobs, they are already loaded at the very beginning of the route, and unloading happens at the job location.
Capacity constraint is that, at any point in the route, the load on the vehicle must not exceed its capacity.
Therefore, in the mix case, vehicle does not start with empty load. It loads the items of the Delivery jobs already (may or may not be all the Delivery jobs, depending on the capacity constraint).
If the vehicle is already full loaded at the beginning, then it cannot do any Pickup jobs before it drops off for some Delivery jobs.
At the end of the route, the vehicle will have dropped off for all the Delivery jobs that it loads at the beginning, and will have loaded for some Pickup jobs (again, may or may not be all the Pickup jobs, depending on the capacity constraint).
What happens during the route? Jspirt will try to optimize the route wrt the cost, meanwhile respecting the capacity constraint and other constraints. Thus, it may or may not do all the Pickup jobs first and do all the Delivery jobs later, or the opposite, or really mixed, depending on the locations of the jobs and the constraints (including capacity).
Hopefully it helps.
Best regards,
He