Пример #1
0
        private void Create(OrderHistoryFile currentFile, bool isSpecialOrder)
        {
            EF.OrderHistoryHeader header = GetHeaderAndMergeCurrentFile(currentFile, isSpecialOrder);

            if (Configuration.DiagnosticsAuditOrderHistoryHeaderChanges)
            {
                ChangeAuditor.AuditChanges(_unitOfWork.Context, header, _log);
            }

            bool hasSpecialItems = false;

            foreach (OrderHistoryDetail currentDetail in currentFile.Details.ToList())
            {
                if (string.IsNullOrWhiteSpace(currentDetail.SpecialOrderHeaderId))
                {
                    hasSpecialItems = true;
                }

                DetermineDetailOnOrder(isSpecialOrder, header, currentDetail);
            }
            RecalcOrderSubtotal(currentFile, header);

            _headerRepo.CreateOrUpdate(header);

            if (hasSpecialItems)
            {
                RemoveSpecialOrderItemsFromHistory(header);
            }
        }
Пример #2
0
        private void DetermineDetailOnOrder(bool isSpecialOrder, EF.OrderHistoryHeader header, OrderHistoryDetail currentDetail)
        {
            EF.OrderHistoryDetail detail = SeekMatchingDetail(header, currentDetail);

            if (detail == null)
            {
                detail = AddNewDetailToOrder(isSpecialOrder, header, currentDetail);
            }
            else
            {
                detail = MergeWithCurrentOrderDetail(isSpecialOrder, header, currentDetail, detail);
            }

            if (Configuration.DiagnosticsAuditOrderHistoryDetailChanges)
            {
                ChangeAuditor.AuditChanges(_unitOfWork.Context, detail, _log);
            }
        }