public void CreateOrderPosition(OrderPositionData opd) { using (var сontextTransaction = _context.Database.BeginTransaction()) { var dbTran = сontextTransaction.GetDbTransaction(); // Получаем заказ-корзину var basketOrder = _orderProcessor.GetBasketOrder(opd.ClientLegalPersonId, opd.PriceId); // Если заказа-корзины не существует - создаём её if (basketOrder == null) { basketOrder = _orderProcessor.CreateBasketOrder(opd, dbTran); } // Получааем скидку клиента var clientDiscount = _clientProcessor.GetDiscount( opd.ClientLegalPersonId, basketOrder.BusinessUnitId, opd.SupplierId, opd.FormatData.FormatTypeId); // Сохраняем позицию заказа int orderPositionId = _orderPositionProcessor.CreateFullOrderPosition( basketOrder.BusinessUnitId, basketOrder.Id, null, clientDiscount, opd, dbTran); // Сохраняем пакетные позиции заказа foreach (var child in opd.Childs) { _orderPositionProcessor.CreateFullOrderPosition( basketOrder.BusinessUnitId, basketOrder.Id, orderPositionId, clientDiscount, child, dbTran); } // Обновляем заказ-корзину _orderProcessor.UpdateOrder(basketOrder.Id, dbTran); _context.SaveChanges(); dbTran.Commit(); } }