Пример #1
0
        /// <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);
            }
        }
Пример #2
0
        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);
        }