Что-то я не понимаю ход мыслей. Разве не так всё и должно быть? Списываются сначала те, у кого срок годности истекает первым - те, у кого месяц, затем те, у которых год. Что не так?...
Смотрите, в задаче есть табличка с заказом. Таких заказов должно быть 2 одинаковых.
Понятно, что табличка как всегда перекочевала из предыдущих заданий, так как противоречит условиям - серия должна подбираться автоматически.
И если, все же, смотреть на данные заказы, то каждому покупателю необходимо отгрузить 30 ед. серии 2222222 и 40 333333.
А если имея на складе 60 ед. серии 222222, то для первого списывается "сначала те, у кого срок годности истекает первым", то есть 60 ед. серии 22222 и 10 ед. серии 3333333. 2-му - все оставшееся.
Вот, что я хотел сказать.