Io farei una cosa di questo tipo, usando un db:
- query per recuperare la fornitura più vecchia non esaurita;
- verifica in php se le quantità sono sufficienti;
- se sì, esci dalla routine;
- se no, azzeri la quantità della fornitura più vecchia ed esegui un nuovo ciclo query/verifica quantità sulla base del residuo che non eri riuscito a scaricare fino a quando non hai raggiunto la quantità di materie prime desiderata.

Devi comunque stare attento alle richieste contemporanee, come si fa negli e-commerce, per evitare di assegnare prezzi sbagliati (o peggio, rimanere senza materie prime).