public bool IsValidSalesNotification(IEnumerable <OrderNotification> listOfSalesOrderLines, out List <DatColErrorMessage> listOfErrors, bool returnErrorLog = false) { var isSalesNotificationValid = true; listOfErrors = new List <DatColErrorMessage>(); var salesOrderLines = listOfSalesOrderLines as OrderNotification[] ?? listOfSalesOrderLines.ToArray(); var orderNumber = salesOrderLines.First().WebSiteOrderNumber; foreach (var orderLine in salesOrderLines) { if (string.IsNullOrEmpty(orderLine.OriginalLine)) { if (!returnErrorLog) { return(false); } var errorMessage = new DatColErrorMessage { Message = string.Format("[OrderNumber: {0}, OrderLine: {1}] does not have OriginalLine", orderNumber, orderLine.OrderLineID) }; listOfErrors.Add(errorMessage); isSalesNotificationValid = false; } if (!orderLine.OrderResponseLineID.HasValue) { if (!returnErrorLog) { return(false); } var errorMessage = new DatColErrorMessage { Message = string.Format(" Missing OrderResponse from TNT: [OrderNumber: '{0}', OrderLine: '{1}', AxaptaLine: '{2}']", orderNumber, orderLine.OrderLineID, orderLine.OriginalLine != null ? orderLine.OriginalLine.Replace(Environment.NewLine, string.Empty) : string.Empty) }; listOfErrors.Add(errorMessage); isSalesNotificationValid = false; } } return(isSalesNotificationValid); }
public bool IsValidTransferNotification(IEnumerable <OrderNotification> listOfSalesOrderLines, out List <DatColErrorMessage> listOfErrors, bool returnErrorLog = false) { var isTransferNotificationValid = true; listOfErrors = new List <DatColErrorMessage>(); var trasferOrderLines = listOfSalesOrderLines as OrderNotification[] ?? listOfSalesOrderLines.ToArray(); foreach (var orderLine in trasferOrderLines) { if (string.IsNullOrEmpty(orderLine.OriginalLine)) { if (!returnErrorLog) { return(false); } var errorMessage = new DatColErrorMessage { Message = string.Format("[OrderNumber: {0}, OrderLine: {1}] does not have OriginalLine", orderLine.WebSiteOrderNumber, orderLine.OrderLineID) }; listOfErrors.Add(errorMessage); isTransferNotificationValid = false; } if (!orderLine.OrderResponseLineID.HasValue) { if (!returnErrorLog) { return(false); } var errorMessage = new DatColErrorMessage { Message = string.Format("[OrderNumber: {0}, OrderLine: {1}] does not have ResponseLine from TNT", orderLine.WebSiteOrderNumber, orderLine.OrderLineID) }; listOfErrors.Add(errorMessage); isTransferNotificationValid = false; } } return(isTransferNotificationValid); }
public bool IsValidTransferOrder(IEnumerable <DatColPickTicket> listOfTransferOrderLines, int connectorID, IEnumerable <int> sapphVendorIDs, out List <DatColErrorMessage> listOfErrors, bool returnErrorLog = false) { var isTransferOrderValid = true; var pickTicketLinse = listOfTransferOrderLines as IList <DatColPickTicket> ?? listOfTransferOrderLines.ToList(); listOfErrors = new List <DatColErrorMessage>(); var firstOrder = pickTicketLinse.First(); var transferOrders = pickTicketLinse.GroupBy(x => x.CustomerNumber).ToList(); if (!IsTransferOrderCountOutsideBoundary(transferOrders)) { if (!returnErrorLog) { return(false); } var errorMessage = new DatColErrorMessage() { Message = ErrorMessageToString(ErrorMessage.OrderCountOutsideBoundary) }; listOfErrors.Add(errorMessage); isTransferOrderValid = false; } string orderNumberPart; if (!IsValidTransferOrderNumber(firstOrder.OrderNumber, out orderNumberPart)) { if (!returnErrorLog) { return(false); } var errorMessage = new DatColErrorMessage() { Message = string.Format("{0} - {1}", ErrorMessageToString(ErrorMessage.OrderNumber), firstOrder.OrderNumber) }; listOfErrors.Add(errorMessage); isTransferOrderValid = false; } int orderID; if (_orderRepo.IsPartialWebOrderNumberExist(orderNumberPart, connectorID, out orderID)) { if (!returnErrorLog) { return(false); } var errorMessage = new DatColErrorMessage() { Message = string.Format("{0} - {1}", ErrorMessageToString(ErrorMessage.ExistOrderNumber), firstOrder.OrderNumber) }; listOfErrors.Add(errorMessage); isTransferOrderValid = false; } List <string> listOfUnknownSkus; if (!IsSkuExist(pickTicketLinse.Select(x => x.CustomItemNumber), sapphVendorIDs, out listOfUnknownSkus, returnErrorLog)) { if (!returnErrorLog) { return(false); } listOfErrors.AddRange(listOfUnknownSkus.Select(unknownSku => new DatColErrorMessage { Message = string.Format("{0} '{1}'", ErrorMessageToString(ErrorMessage.UnknownSku), unknownSku) })); isTransferOrderValid = false; } foreach (var pickTicket in pickTicketLinse) { int quantity; if (!int.TryParse(pickTicket.QuantityOnPickTicket, NumberStyles.Number, new CultureInfo("nl-NL"), out quantity) || quantity <= 0) { if (!returnErrorLog) { return(false); } var errorMessage = new DatColErrorMessage { Message = string.Format(" Line '{0}': Quantity '{1}' field for sku '{2}' is invalid", pickTicket.RowNumber, pickTicket.QuantityOnPickTicket, pickTicket.CustomItemNumber) }; listOfErrors.Add(errorMessage); isTransferOrderValid = false; } } return(isTransferOrderValid); }
public bool IsValidPurchaseOrder(DatColPurchaseOrder[] listOfPurchaseOrderLines, int connectorID, IEnumerable <int> vendorIDs, out List <DatColErrorMessage> listOfErrors, bool returnErrorLog = false) { var isPurchaseOrderValid = true; var purchaseLines = listOfPurchaseOrderLines as IList <DatColPurchaseOrder> ?? listOfPurchaseOrderLines.ToList(); listOfErrors = new List <DatColErrorMessage>(); var firstOrder = purchaseLines.First(); var listOfCurrentWebOrderNumbers = _orderRepo .GetOrderByContainsWebOrderNumber(firstOrder.OrderNumber) .Select(x => x.WebSiteOrderNumber) .ToArray(); if (firstOrder.OrderNumber.Length > 10) { if (!returnErrorLog) { return(false); } var errorMessage = new DatColErrorMessage { Message = string.Format("OrderNumber {0} is more than 10 characters", firstOrder.OrderNumber) }; listOfErrors.Add(errorMessage); isPurchaseOrderValid = false; } string tempWebOrderNumber; if (!ConvertOriginalOrderNumberToConcentratorOrderNumber(firstOrder.OrderNumber, listOfCurrentWebOrderNumbers, 9, out tempWebOrderNumber)) { if (!returnErrorLog) { return(false); } var errorMessage = new DatColErrorMessage { Message = string.Format("OrderNumber {0} cannot be converted. This ordernumbers are already exist: {1}", firstOrder.OrderNumber, string.Join(", ", listOfCurrentWebOrderNumbers)) }; listOfErrors.Add(errorMessage); isPurchaseOrderValid = false; } List <string> listOfUnknownSkus; if (!IsSkuExist(purchaseLines.Select(x => x.CustomItemNumber), vendorIDs, out listOfUnknownSkus, returnErrorLog)) { if (!returnErrorLog) { return(false); } listOfErrors.AddRange(listOfUnknownSkus.Select(unknownSku => new DatColErrorMessage { Message = string.Format("{0} '{1}'", ErrorMessageToString(ErrorMessage.UnknownSku), unknownSku) })); isPurchaseOrderValid = false; } foreach (var purchaseLine in purchaseLines) { int quantity; if (!int.TryParse(purchaseLine.Quantity, NumberStyles.Number, new CultureInfo("nl-NL"), out quantity) || quantity <= 0) { if (!returnErrorLog) { return(false); } var errorMessage = new DatColErrorMessage { Message = string.Format(" Quantity '{0}' field for sku '{1}' is invalid", purchaseLine.Quantity, purchaseLine.CustomItemNumber) }; listOfErrors.Add(errorMessage); isPurchaseOrderValid = false; } } return(isPurchaseOrderValid); }