Больше информации в заказах закрытых кассовых смен
В API V8Preview7 была добавлена информация о том, был ли данный заказ удалён, сторнирован, информация о том, из какого заказа текущий был сторнирован, а также список заказов, которые входят в ту же группу, что и текущий заказ.
PastOrder.Deleted— был ли заказ удалён;PastOrder.Storned— был ли заказ сторнирован в кассовой смене, в которой был оплачен, или текущий заказ — это заказ, возвращающий заказ из закрытой кассовой смены (примечание: если исходный заказ не был сторнирован в кассовой смене, в которой был оплачен, и возвращался только из закрытой кассовой смены, данное свойство будет равноfalse);PastOrder.SourceOrderInfo— информация о заказе, из которого был скопирован текущий заказ при сторнировании или возврате из закрытой кассовой смены;PastOrder.GroupOrderInfo— информация о заказе, в группу которого входит текущий заказ (здесь будет информация либо о заказе, из которого был скопирован текущий заказ при сторнировании, либо о заказе, дозаказом которого является текущий заказ, либо о заказе, который был первым в результате деления на 2ФР, если перечисленные исходные заказы сами были первыми в группе; либо о текущем заказе, если он является первым (или единственным) в группе, а если исходный заказ сам входил в группу, то группой текущего заказа будет группа исходного заказа);PastOrder.GroupPastOrders— список заказов, входящих в ту же группу, что и текущий заказ (заказы имеющие такое же свойствоGroupOrderInfo, что и текущий заказ).
Таким образом, чтобы понять, был ли хоть раз текущий заказ сторнирован, нужно проверить его свойство
Storned,
если же оно равно false, то дополнительно нужно проверить, нет ли среди сгруппированных заказов, ссылающихся на текущий через свойство
SourceOrderInfo:
if (pastOrder.Storned || pastOrder.GroupPastOrders.Any(o => o.SourceOrderInfo?.OrderId == pastOrder.OrderId)
// Данный заказ уже сторнировался.
При попытке повторного возврата
(StornoPastOrder)
уже сторнированного заказа iikoFront будет проверять новое право CAN_STORN_CLOSED_ORDERS_AGAIN ("F_STRNA", "Повторный возврат заказа закрытой кассовой смены").