Example #1
0
        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);
            }
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }