private bool SavePurchaseOrder(DatColPurchaseOrder firstOrder, IEnumerable <DatColPurchaseOrder> listOfPurchaseOrderLines) { try { var listOfCurrentWebOrderNumbers = _orderRepo .GetOrderByContainsWebOrderNumber(firstOrder.OrderNumber) .Select(x => x.WebSiteOrderNumber) .ToArray(); string tempWebOrderNumber; if (!_orderHelper.ConvertOriginalOrderNumberToConcentratorOrderNumber(firstOrder.OrderNumber, listOfCurrentWebOrderNumbers, 9, out tempWebOrderNumber)) { _log.AuditError(string.Format("OrderNumber {0} cannot be converted. This ordernumbers are already exist: {1}", firstOrder.OrderNumber, string.Join(", ", listOfCurrentWebOrderNumbers))); return(false); } var orderToSave = CreateOrder(tempWebOrderNumber, firstOrder, listOfPurchaseOrderLines); 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}'", firstOrder.OrderNumber)); return(false); } }
private bool ProcessPurchaseOrder(DatColPurchaseOrder firstOrder, IEnumerable <DatColPurchaseOrder> orderLines) { List <DatColErrorMessage> listOfErrors; var listOfPurchaseOrderLines = orderLines as DatColPurchaseOrder[] ?? orderLines.ToArray(); if (_orderHelper.IsValidPurchaseOrder(listOfPurchaseOrderLines, _sapphConnectorID, vendorIDs, out listOfErrors, true)) { if (SavePurchaseOrder(firstOrder, listOfPurchaseOrderLines)) { return(true); } _failedPurchaseOrderNumber = firstOrder.OrderNumber; _archiveService.ExportToAxapta(listOfPurchaseOrderLines, SaveTo.CorruptPurchaseOrderDirectory, FailedPurchaseOrderFileName); return(false); } _failedPurchaseOrderNumber = firstOrder.OrderNumber; _archiveService.ExportToAxapta(listOfPurchaseOrderLines, SaveTo.CorruptPurchaseOrderDirectory, FailedPurchaseOrderFileName); var fileName = string.Format("{0}.log", Path.GetFileNameWithoutExtension(FailedPurchaseOrderFileName)); _archiveService.ExportToAxapta(listOfErrors, SaveTo.CorruptPurchaseOrderDirectory, fileName); return(false); }
private Order CreateOrder(string webOrderNumber, DatColPurchaseOrder order, IEnumerable <DatColPurchaseOrder> orderLines) { var orderToSave = new Order { OrderLines = new List <OrderLine>(), ConnectorID = _sapphConnectorID, CustomerOrderReference = string.Format("{0} - {1}", order.VendorCode, order.VendorName), HoldOrder = false, WebSiteOrderNumber = webOrderNumber, PaymentTermsCode = "SHOP", PaymentInstrument = string.Empty, ReceivedDate = DateTime.Now.ToUniversalTime(), OrderType = (int)OrderTypes.PurchaseOrder }; var engine = new FileHelperEngine(typeof(DatColPurchaseOrder)); 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.Quantity, NumberStyles.Number, new CultureInfo("nl-NL")), isDispatched = false, OriginalLine = engine.WriteString(new List <DatColPurchaseOrder> { orderLine }), PriceOverride = false, WareHouseCode = orderLine.StockWarehouse }; orderToSave.OrderLines.Add(orderLineToSave); } return(orderToSave); }