Example #1
0
        private static void ImportOrdersToNetSuite(JArray ordersAwaitingFulfillment)
        {
            try
            {
                foreach (var order in ordersAwaitingFulfillment)
                {
                    Order parsedOrder = JsonConvert.DeserializeObject <Order>(order.ToString());

                    if (parsedOrder.is_deleted == true)
                    {
                        Log.Information($"Skipping order {parsedOrder.customer_id} because it is marked as deleted/archived.");
                        continue;
                    }

                    BigCommerceController.customerId = parsedOrder.customer_id;
                    int bigCommerceOrderId = parsedOrder.id;
                    Log.Information($"bigCommerceOrderId Id {bigCommerceOrderId}");

                    // Get the shipping information
                    string          shippingAddressUrl      = parsedOrder.shipping_addresses.url;
                    ShippingAddress customerShippingAddress = BigCommerceController.GetCustomerShippingAddress(shippingAddressUrl);

                    // Format the request object to send to CreateCustomerRESTlet
                    OrderToImport netsuiteRequest = NetSuiteController.CreateNetSuiteRequest(parsedOrder, customerShippingAddress);

                    if (netsuiteRequest.NestProId == "")
                    {
                        // We alert these to B2B so they can contact the customer
                        ordersMissingProId.Add(bigCommerceOrderId);
                        continue;
                    }

                    netsuiteCustomerId         = NetSuiteController.GetNetSuiteCustomerId(netsuiteRequest);
                    netsuiteRequest.CustomerId = Convert.ToInt32(netsuiteCustomerId);

                    // Call the Products API to get the products on the order
                    string productsUrl = parsedOrder.products.url;
                    netsuiteRequest.Items = BigCommerceController.GetProductsOnOrder(productsUrl);

                    NetSuiteController.SetNetSuiteItemIdAndPersonalItemFlag(netsuiteRequest);

                    // Import order to Netsuite
                    string netsuiteOrderId = NetSuiteController.ImportOrderToNetSuite(netsuiteRequest);

                    // Set the Big Commerce status to 'awaiting shipment' and add the NetSuite order ID to 'staff notes'
                    BigCommerceController.SetOrderStatus(bigCommerceOrderId, netsuiteOrderId);
                }
            }
            catch (Exception ex)
            {
                Log.Error($"Error: {ex}");
                string      title        = "Error in ImportOrdersToNetSuite";
                string      text         = $"Error message: {ex.Message}";
                string      color        = "red";
                TeamsHelper teamsMessage = new TeamsHelper(title, text, color, errorLogsUrl);
                teamsMessage.LogToMicrosoftTeams(teamsMessage);
            }
        }
Example #2
0
        public void WillImportOrderToNetSuite()
        {
            OrderToImport importOrderRequest = CreateFakeOrderToImport();

            string salesOrderId = NetSuiteController.ImportOrderToNetSuite(importOrderRequest);

            OrderToImport netsuiteResponse = GetSalesOrderValues(salesOrderId);

            // Billing address
            Assert.Equal($"{importOrderRequest.BillingFirstName} {importOrderRequest.BillingLastName}", netsuiteResponse.BillingAddressee);
            Assert.Equal(importOrderRequest.BillingLine1, netsuiteResponse.BillingLine1);
            Assert.Equal(importOrderRequest.BillingLine2, netsuiteResponse.BillingLine2);
            Assert.Equal(importOrderRequest.BillingCity, netsuiteResponse.BillingCity);
            Assert.Equal(importOrderRequest.BillingState, netsuiteResponse.BillingState);
            Assert.Equal(importOrderRequest.BillingZip, netsuiteResponse.BillingZip);

            // Shipping address
            Assert.Equal($"{importOrderRequest.ShippingFirstName} {importOrderRequest.ShippingLastName}", netsuiteResponse.ShippingAddressee);
            Assert.Equal(importOrderRequest.ShippingLine1, netsuiteResponse.ShippingLine1);
            Assert.Equal(importOrderRequest.ShippingLine2, netsuiteResponse.ShippingLine2);
            Assert.Equal(importOrderRequest.ShippingCity, netsuiteResponse.ShippingCity);
            Assert.Equal(importOrderRequest.ShippingState, netsuiteResponse.ShippingState);
            Assert.Equal(importOrderRequest.ShippingZip, netsuiteResponse.ShippingZip);

            Assert.Equal(importOrderRequest.CheckoutTypeId, netsuiteResponse.CheckoutTypeId);
            Assert.Equal(importOrderRequest.CustomerId, netsuiteResponse.CustomerId);
            Assert.Equal(importOrderRequest.Department, netsuiteResponse.Department);
            Assert.Equal(importOrderRequest.IPAddress, netsuiteResponse.IPAddress);
            Assert.Equal(importOrderRequest.Microsite, netsuiteResponse.Microsite);
            Assert.Equal(importOrderRequest.Note, netsuiteResponse.Note);
            Assert.Equal(importOrderRequest.SiteOrderNumber, netsuiteResponse.SiteOrderNumber);
            Assert.Equal(importOrderRequest.PaymentMethodId, netsuiteResponse.PaymentMethodId);

            // Items
            foreach (var item in netsuiteResponse.Items)
            {
                if (item.ItemId != "484204" && item.ItemId != "348230")
                {
                    throw new Exception($"Unexpected item id {item.ItemId}");
                }
                else if (item.ItemId == "484204")
                {
                    Assert.Equal(importOrderRequest.Items[0].Quantity, item.Quantity);
                    Assert.Equal(importOrderRequest.Items[0].Rate, item.Rate);
                    Assert.Equal(importOrderRequest.Items[0].Amount, item.Amount);
                    Assert.Equal(importOrderRequest.Items[0].PersonalItem, item.PersonalItem);
                }
                else
                {
                    Assert.Equal(importOrderRequest.Items[1].Quantity, item.Quantity);
                    Assert.Equal(importOrderRequest.Items[1].Rate, item.Rate);
                    Assert.Equal(importOrderRequest.Items[1].Amount, item.Amount);
                    Assert.Equal(importOrderRequest.Items[1].PersonalItem, item.PersonalItem);
                }
            }
        }