/// <summary> /// Use key = null to delete all allocations from this order /// </summary> /// <param name="orderId"></param> /// <param name="key"></param> public void CutOrderAllocation(long orderId, BatchKey key) { var order = m_orderRepository.GetOrder(orderId).Ensure(); if (OrderStatus.IsSent(order.OrderStatusId)) { throw new InvalidOperationException("Tato objednávka již byla odeslána"); } var assignmentsToCut = new List <IOrderItemMaterialBatch>(); foreach (var item in order.Items) { foreach (var orderItemMaterialBatch in item.AssignedBatches.Where(i => key?.Match(i.MaterialBatch, this) ?? true)) { assignmentsToCut.Add(orderItemMaterialBatch); } foreach (var kitChild in item.KitChildren) { foreach (var orderItemMaterialBatch in kitChild.AssignedBatches.Where(i => key?.Match(i.MaterialBatch, this) ?? true)) { assignmentsToCut.Add(orderItemMaterialBatch); } } } if (!assignmentsToCut.Any()) { m_log.Error($"CutOrderAllocation - no allocations found orderId={orderId}, key={key?.ToString(this)}"); } m_database.DeleteAll(assignmentsToCut); foreach (var cutBatchId in assignmentsToCut.Select(a => a.MaterialBatchId).Distinct()) { ReleaseBatchAmountCache(cutBatchId); } }
private BatchReportModel LoadOrders(BatchKey key, int ordersPageNumber) { var orders = m_ordersFacade.GetOrdersByUsedBatch(key, c_pageSize, ordersPageNumber).ToList(); var entry = new BatchOrdersReportEntry(key) { CanLoadMoreOrders = orders.Count == c_pageSize, NextOrdersPage = ordersPageNumber + 1 }; foreach (var entity in orders) { entry.Orders.Add(new BatchOrderModel { OrderId = entity.Item1.Id, Customer = entity.Item1.CustomerEmail, OrderNumber = entity.Item1.OrderNumber, PurchaseDate = StringUtil.FormatDateTime(entity.Item1.PurchaseDate), Status = m_orderStatusRepository.Translate(entity.Item1.OrderStatusId), Quantity = StringUtil.FormatDecimal(entity.Item2), IsAllocation = !OrderStatus.IsSent(entity.Item1.OrderStatusId), AllocationHandle = OrderStatus.IsSent(entity.Item1.OrderStatusId) ? null : $"{entity.Item1.Id}|{key.ToString(m_batchFacade)}" }); } var result = new BatchReportModel(); result.Report.Add(entry); return(result); }