private static bool IsOldAndEmpty(SalesOrderLoad order) { return(order.InventoryShipmentOrder.OrderType == InventoryShipmentOrderTypeEnum.SalesOrder && order.DateCreated <= DateTime.UtcNow.AddMonths(-6) && (order.SalesOrderPickedItems == null || !order.SalesOrderPickedItems.Any())); }
private SalesOrderLoad SetItems(SalesOrderLoad order, tblOrderDTO oldOrder) { var orderItemSequence = 0; var pickedItemSequence = 0; order.SalesOrderItems = new List <SalesOrderItem>(); order.SalesOrderPickedItems = new List <SalesOrderPickedItem>(); var latestStaged = oldOrder.tblOrderDetails.SelectMany(d => d.tblStagedFGs) .OrderByDescending(s => s.EntryDate) .FirstOrDefault(); if (latestStaged != null) { order.InventoryShipmentOrder.PickedInventory.TimeStamp = latestStaged.EntryDate.ConvertLocalToUTC(); if (latestStaged.EmployeeID != null) { order.InventoryShipmentOrder.PickedInventory.EmployeeId = latestStaged.EmployeeID.Value; } } foreach (var detail in oldOrder.tblOrderDetails) { LoadCount.AddRead(EntityType.SalesOrderItem); var product = _newContextHelper.GetProduct(detail.ProdID); if (product == null) { Log(new CallbackParameters(CallbackReason.DetailProductNotFound) { Order = oldOrder, Detail = detail }); continue; } var packaging = _newContextHelper.GetPackagingProduct(detail.PkgID); if (packaging == null) { Log(new CallbackParameters(CallbackReason.DetailPackagingNotFound) { Order = oldOrder, Detail = detail }); continue; } var treatment = _newContextHelper.NoTreatment; if (detail.TrtmtID != null) { treatment = _newContextHelper.GetInventoryTreatment(detail.TrtmtID.Value); if (treatment == null) { Log(new CallbackParameters(CallbackReason.DetailTreatmentNotFound) { Order = oldOrder, Detail = detail }); continue; } } IContractItemKey contractItemKey = null; if (detail.KDetailID != null) { contractItemKey = _newContextHelper.GetContractItemKey(detail.KDetailID); if (contractItemKey == null) { Log(new CallbackParameters(CallbackReason.ContractItemNotFound) { Order = oldOrder, Detail = detail }); continue; } } order.SalesOrderItems.Add(new SalesOrderItem { ItemSequence = orderItemSequence, ContractYear = contractItemKey == null ? (int?)null : contractItemKey.ContractKey_Year, ContractSequence = contractItemKey == null ? (int?)null : contractItemKey.ContractKey_Sequence, ContractItemSequence = contractItemKey == null ? (int?)null : contractItemKey.ContractItemKey_Sequence, PriceBase = (double)(detail.Price ?? 0), PriceFreight = (double)(detail.FreightP ?? 0), PriceTreatment = (double)(detail.TrtnmntP ?? 0), PriceWarehouse = (double)(detail.WHCostP ?? 0), PriceRebate = (double)(detail.Rebate ?? 0), ODetail = detail.ODetail, InventoryPickOrderItem = new InventoryPickOrderItem { ItemSequence = orderItemSequence, ProductId = product.ProductKey.ProductKey_ProductId, PackagingProductId = packaging.Id, TreatmentId = treatment.Id, Quantity = (int)(detail.Quantity ?? 0), CustomerLotCode = detail.CustLot, CustomerProductCode = detail.CustProductCode, } }); foreach (var staged in detail.tblStagedFGs) { LoadCount.AddRead(EntityType.SalesOrderPickedItem); LotKey lotKey; if (!LotNumberParser.ParseLotNumber(staged.Lot, out lotKey)) { Log(new CallbackParameters(CallbackReason.StagedInvalidLotNumber) { Order = oldOrder, Staged = staged }); continue; } packaging = _newContextHelper.GetPackagingProduct(staged.PkgID); if (packaging == null) { Log(new CallbackParameters(CallbackReason.StagedPackagingNotFound) { Order = oldOrder, Staged = staged }); continue; } var currentLocation = _newContextHelper.GetLocation(staged.LocID); if (currentLocation == null) { Log(new CallbackParameters(CallbackReason.StagedLocationNotFound) { Order = oldOrder, Staged = staged }); continue; } var fromLocation = detail.tblOutgoing.Any() ? DeterminePickedFromLocation(detail, staged) : currentLocation; if (fromLocation == null) { Log(new CallbackParameters(CallbackReason.UndeterminedPickedFromLocation) { Order = oldOrder, Staged = staged }); continue; } treatment = _newContextHelper.GetInventoryTreatment(staged.TrtmtID); if (treatment == null) { Log(new CallbackParameters(CallbackReason.StagedTreatmentNotFound) { Order = oldOrder, Staged = staged }); continue; } order.SalesOrderPickedItems.Add(new SalesOrderPickedItem { ItemSequence = pickedItemSequence, OrderItemSequence = orderItemSequence, PickedInventoryItem = new PickedInventoryItem { DetailID = staged.EntryDate, ItemSequence = pickedItemSequence, LotDateCreated = lotKey.LotKey_DateCreated, LotDateSequence = lotKey.LotKey_DateSequence, LotTypeId = lotKey.LotKey_LotTypeId, Quantity = (int)(staged.Quantity ?? 0), PackagingProductId = packaging.Id, FromLocationId = fromLocation.Id, CurrentLocationId = currentLocation.Id, TreatmentId = treatment.Id, ToteKey = "", CustomerLotCode = staged.CustLot, CustomerProductCode = staged.CustProductCode } }); pickedItemSequence++; } orderItemSequence++; } return(order); }