Esempio n. 1
0
        public async Task <bool> WriteOrder(orders orders)
        {
            string logisticPostalAddressID = String.Empty;
            string AXCustomerAccountNum    = String.Empty;

            foreach (var order in orders.order)
            {
                try
                {
                    logisticPostalAddressID = String.Empty;
                    AXCustomerAccountNum    = String.Empty;
                    var productLineItem          = GetCustomizedProductLineItems(order);
                    var listServiceLineitem      = GetCustomizedServiceItems(order, productLineItem.Count);
                    var payments                 = GetCustomizedPaymentDetails(order);
                    var OnlineDeliveryDateModule = order.shipments != null && order.shipments.FirstOrDefault() != null && order.shipments.FirstOrDefault().customattributes != null?order.shipments.FirstOrDefault().customattributes.Where(j => j.attributeid == XMLAttributeType.RequestedDeliveryDatetime).FirstOrDefault() : null;

                    var OnlineDeliverDate = OnlineDeliveryDateModule != null ? OnlineDeliveryDateModule.Text[0] : null;
                    listShippingAddress = new List <complexTypeAddress>()
                    {
                        order.shipments[0].shippingaddress
                    };                                                                                           // Supports multiple shipping
                    listShippingAddress.ForEach(t =>
                    {
                        if (t.postalcode != null)
                        {
                            t.postalcode = t.postalcode.Substring(0, 5);
                        }
                    });
                    listBillingAddress = new List <complexTypeAddress>()
                    {
                        order.customer.billingaddress
                    };                                                                                     // supports multiple addresses for multiple payments
                    listBillingAddress.ForEach(t =>
                    {
                        if (t.postalcode != null)
                        {
                            t.postalcode = t.postalcode.Substring(0, 5);
                        }
                    });

                    CustomerHandler custHandler = new CustomerHandler();


                    Tuple <string, string> CustomerIDWithPoatalAddress = custHandler.GetCustomerWithPostalAddressID(order.customer, listShippingAddress, listBillingAddress);
                    logisticPostalAddressID = CustomerIDWithPoatalAddress.Item2;
                    AXCustomerAccountNum    = CustomerIDWithPoatalAddress.Item1;
                    await writeOrder(logisticPostalAddressID, AXCustomerAccountNum, productLineItem, listServiceLineitem, listShippingAddress, listBillingAddress, order, payments);
                }
                catch (Exception exe)
                {
                    GetXMLFromObject(order, _errorFolderPath + "//error" + DateTime.Now.Ticks + ".xml");

                    AFM.Commerce.Logging.LoggerUtilities.ProcessLogMessage(
                        "Order Import Processor Exception : " + exe.StackTrace);

                    if (exe.InnerException != null)
                    {
                        AFM.Commerce.Logging.LoggerUtilities.ProcessLogMessage(exe.InnerException);
                    }
                    continue;
                }
            }
            return(true); /// [TODO] this acknowledgement will be removed with post implementation of Listner module from different console Application.
        }