Хорошо.
Вот, к примеру, у меня в корзине два товара, один из которых отмечен как отложенный.
Я начинаю оформлять заказ, ввожу все данные, выбираю адрес, доставку и плат.систему, вызываю
$shop->ExecSystemsOfPayHandler(to_int($system_of_pay_id))
и у меня создается новый заказ. В корзине остается только один, отложенный товар. Затем я вызываю
$shop->GetItemsFromCart($site_users_id, $shop_id);
Из полученного массива беру значения shop_items_catalog_item_id и shop_cart_item_quantity, заполняю массив параметров и вызываю
InsertToCart($unpostpone_param);
и снова вызываю
$shop->ExecSystemsOfPayHandler(to_int($system_of_pay_id))
И получаю второй заказ... точно такой же как первый! То есть во второй заказ сохраняются не те товары, у которых я только что снял флаг postpone, а те, у которых его изначально не было, несмотря даже не то, что этих товаров уже нет в корзине!
Почему?
Интересно, что если обновить страницу, то в корзине отображается тот товар, у которого я вручную снимал флаг postpone, при чем отображается НЕотложенным (что правильно) и его можно спокойно внести в заказ обычным порядком.
Есть ощущение, что содержимое корзины, попадающее в заказ при вызове ProcessOrder() где-то кешируется, и потом мешает :-/