コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }