private bool SaveSalesOrder(DatColPickTicket order, IEnumerable <DatColPickTicket> orderLines) { try { var listOfCurrentWebOrderNumbers = _orderRepo .GetOrderByContainsWebOrderNumber(order.OrderNumber) .Select(x => x.WebSiteOrderNumber) .ToArray(); string tempWebOrderNumber; if (!_orderHelper.ConvertOriginalOrderNumberToConcentratorOrderNumber(order.OrderNumber, listOfCurrentWebOrderNumbers, 9, out tempWebOrderNumber)) { _log.AuditError(string.Format("OrderNumber {0} cannot be converted. This ordernumbers are already exist: {1}", order.OrderNumber, string.Join(", ", listOfCurrentWebOrderNumbers))); return(false); } var orderToSave = CreateOrder(tempWebOrderNumber, order, orderLines); if (!_orderRepo.InsertOrder(orderToSave)) { _log.AuditError(string.Format("Failed to insert order: {0}", orderToSave.WebSiteOrderNumber)); return(false); } return(true); } catch (Exception) { _log.AuditError(string.Format("Database Error: Failed to save the order. OrderNumber '{0}'", order.OrderNumber)); return(false); } }
private bool ProcessSalesOrder(DatColPickTicket firstOrder, IEnumerable <DatColPickTicket> orderLines) { List <DatColErrorMessage> listOfErrors; var listOfSalesOrderLines = orderLines as DatColPickTicket[] ?? orderLines.ToArray(); if (_orderHelper.IsValidSalesOrder(listOfSalesOrderLines, _sapphConnectorID, vendorIDs, out listOfErrors, true)) { if (SaveSalesOrder(firstOrder, listOfSalesOrderLines)) { return(true); } _failedPickTicketOrderNumber = firstOrder.OrderNumber; _archiveService.ExportToAxapta(listOfSalesOrderLines, SaveTo.CorruptPickTicketDirectory, FailedPickTicketOrderFileName); return(false); } _failedPickTicketOrderNumber = firstOrder.OrderNumber; _archiveService.ExportToAxapta(listOfSalesOrderLines, SaveTo.CorruptPickTicketDirectory, FailedPickTicketOrderFileName); var fileName = string.Format("{0}.log", Path.GetFileNameWithoutExtension(FailedPickTicketOrderFileName)); _archiveService.ExportToAxapta(listOfErrors, SaveTo.CorruptPickTicketDirectory, fileName); return(false); }
private bool SaveTransferOrder(DatColPickTicket firstOrder, IEnumerable <DatColPickTicket> listOfTransferOrderLines) { try { var transferOrders = listOfTransferOrderLines.GroupBy(x => x.CustomerNumber).ToList(); var subOrderCounter = 0; var orderNumberParts = firstOrder.OrderNumber.Split('_'); var listOfOrders = new List <Order>(); foreach (var transferOrder in transferOrders) { var substituteOrderNumber = string.Format("{0}_{1:D3}", orderNumberParts[0], ++subOrderCounter); var firstTransferOrder = transferOrder.First(); var orderToSave = CreateOrder(substituteOrderNumber, firstTransferOrder, transferOrder); orderToSave.Document = firstOrder.OrderNumber; listOfOrders.Add(orderToSave); } if (!_orderRepo.InsertOrders(listOfOrders)) { _log.AuditError(string.Format("Failed to insert order: {0}", firstOrder.OrderNumber)); return(false); } return(true); } catch (Exception) { _log.AuditError(string.Format("Database Error: Failed to save the order. OrderNumber '{0}'", firstOrder.OrderNumber)); return(false); } }
private bool CreateTransferOrderNotification(IEnumerable <OrderNotification> listOfSalesOrderLines, out List <DatColOrderTransfer> listOfNotifications) { listOfNotifications = new List <DatColOrderTransfer>(); var engine = new FileHelperEngine(typeof(DatColPickTicket)); var orderLines = listOfSalesOrderLines .GroupBy(x => x.OrderLineID, x => x); foreach (var orderLine in orderLines) { DatColPickTicket originalLine = null; try { var originalLines = engine.ReadString(orderLine.First().OriginalLine) as DatColPickTicket[]; if (originalLines != null) { originalLine = originalLines.First(); } if (originalLine == null) { return(false); } } catch { return(false); } var shippedItems = GetShippedItems(orderLine); var cancelledItems = GetCancelledItems(orderLine); var transferOrder = new DatColOrderTransfer { FromWarehouse = originalLine.Warehouse, ToWarehouse = originalLine.CustomerNumber, AxaptaCustomerNumber = originalLine.CustomItemNumber, DeliveryDate = originalLine.DeliveryDate, PickedItems = shippedItems.ToString(CultureInfo.InvariantCulture) }; listOfNotifications.Add(transferOrder); } return(true); }
private bool CreateSalesOrderNotification(IEnumerable <OrderNotification> salesOrder, out List <DatColPickTicket> listOfNotifications) { listOfNotifications = new List <DatColPickTicket>(); var engine = new FileHelperEngine(typeof(DatColPickTicket)); var orderLines = salesOrder .GroupBy(x => x.OrderLineID, x => x); foreach (var orderLine in orderLines) { DatColPickTicket originalLine = null; try { var originalLines = engine.ReadString(orderLine.First().OriginalLine) as DatColPickTicket[]; if (originalLines != null) { originalLine = originalLines.First(); } if (originalLine == null) { return(false); } } catch { return(false); } var shippedItems = GetShippedItems(orderLine); var cancelledItems = GetCancelledItems(orderLine); originalLine.PickedItems = shippedItems.ToString(CultureInfo.InvariantCulture); listOfNotifications.Add(originalLine); } return(true); }
private Order CreateOrder(string webOrderNumber, DatColPickTicket order, IEnumerable <DatColPickTicket> orderLines) { var orderToSave = new Order { OrderLines = new List <OrderLine>(), ConnectorID = _sapphConnectorID, CustomerOrderReference = order.CustomerNumber, HoldOrder = false, WebSiteOrderNumber = webOrderNumber, PaymentTermsCode = "SHOP", PaymentInstrument = string.Empty, ReceivedDate = DateTime.Now.ToUniversalTime(), OrderType = (int)OrderTypes.PickTicketOrder }; var engine = new FileHelperEngine(typeof(DatColPickTicket)); var currentVendorAssortments = _productRepo .GetListOfSkusByVendorIDs(vendorIDs) .ToLookup(x => Regex.Replace(x.VendorItemNumber, @"\s+", "")) .ToDictionary(x => x.Key, x => x.First()); foreach (var orderLine in orderLines) { var orderLineToSave = new OrderLine { OrderID = orderToSave.OrderID, CustomerOrderNr = orderToSave.WebSiteOrderNumber, ProductID = currentVendorAssortments[Regex.Replace(orderLine.CustomItemNumber, @"\s+", "")].ProductID, Quantity = int.Parse(orderLine.QuantityOnPickTicket, NumberStyles.Number, new CultureInfo("nl-NL")), isDispatched = false, OriginalLine = engine.WriteString(new List <DatColPickTicket> { orderLine }), PriceOverride = false }; orderToSave.OrderLines.Add(orderLineToSave); } return(orderToSave); }