Exemple #1
0
        public void ProcessUpdatedMagentoOrders(List<SalesOrder> salesOrders)
        {
            foreach (var order in salesOrders)
            {
                dynamic processedOrderTable = new ProcessedOrders();
                var processedOrder = processedOrderTable.First(StoreEntityId:order.NativeId);
                if(processedOrder != null)
                {
                    NLog.LogManager.GetLogger("CanceledOrder").Debug("Existing Order: {0}   Old Status: {1}    Updated Status: {2} ",
                                                                    processedOrder.OrderNumber, processedOrder.StoreStatus, order.StoreStatus);

                    if(order.StoreStatus.ToLower() == "canceled")
                    {
                        if(CanNotCancelOrderInAx(order.OrderId))
                            NLog.LogManager.GetLogger("CanceledOrder").Info("Order : {0}   Could not cancel order in AX because of existing Confirmation, Picking List, or Invoice.", order.OrderId);
                        else if(IsAEditedOrder(salesOrders,order.OrderId))
                            NLog.LogManager.GetLogger("CanceledOrder").Info("Order : {0}   Appears to be canceled do to a edit in Magento so will not be canceled in AX.",order.OrderId);
                        else
                            CancelOrderInAx(order.OrderId);
                    }
                    processedOrder.StoreStatus = order.StoreStatus;
                    processedOrder.StoreUpdatedAt = order.StoreUpdatedAt;
                    processedOrderTable.Save(processedOrder);

                }
                else
                {
                    NLog.LogManager.GetCurrentClassLogger().Info("New {0}", order.OrderId);
                    //don't insert order edited in magento in AX
                    if(order.OrderId.Contains("-"))
                        ProcessOrderChange(order);
                    else
                    {
                        CreateAxSalesOrder(order, "Magento");
                        if(order.StoreStatus.ToLower() == "canceled" && !IsAEditedOrder(salesOrders,order.OrderId))
                        {
                            CancelOrderInAx(order.OrderId);
                        }

                        if(IsAEditedOrder(salesOrders,order.OrderId))
                            NLog.LogManager.GetLogger("CanceledOrder").Info("New Order : {0}   Appears to be canceled do to a edit in Magento so will not be canceled in AX.",order.OrderId);
                    }
                }
            }
        }