コード例 #1
0
        public static List <string> GetTrackingNumbersByItemFulfillment(string itemFulfillmentId)
        {
            using (var conn = new SqlConnection(NetSuiteHelper.GetAthenaDBConnectionString(dbName)))
            {
                try
                {
                    conn.Open();

                    string query = @"
                        SELECT TRACKING_NUMBER 
                        FROM NetSuite.data.SHIPMENT_PACKAGES 
                        WHERE ITEM_FULFILLMENT_ID = @itemFulfillmentId 
                        AND TRACKING_NUMBER is not null";

                    List <string> trackingNumbers = conn.Query <string>(query, new { itemFulfillmentId }, commandTimeout: 500).ToList();

                    conn.Close();

                    return(trackingNumbers);
                }
                catch (Exception ex)
                {
                    var errorMessage = "Error in GetTrackingNumbersByItemFulfillment.";
                    Log.Error(errorMessage, ex);
                    throw new Exception(errorMessage);
                }
            }
        }
コード例 #2
0
        public static IEnumerable <IGrouping <string, ItemFulfillmentLine> > GetItemFulfillmentsNotImported(string netsuiteSalesOrderId, List <string> importedItemFulfillmentIds)
        {
            var getItemFulfillmentsNotImportedRetryPolicy = Policy.Handle <SqlException>()
                                                            .WaitAndRetry(4, _ => TimeSpan.FromSeconds(30), (ex, ts, count, context) =>
            {
                string errorMessage = "Error in GetItemFulfillmentsNotImported";
                Log.Warning(ex, $"{errorMessage} . retrying...");

                if (count == 4)
                {
                    Log.Error(ex, errorMessage);
                }
            });

            return(getItemFulfillmentsNotImportedRetryPolicy.Execute(() =>
            {
                using (var conn = new SqlConnection(NetSuiteHelper.GetAthenaDBConnectionString(dbName)))
                {
                    conn.Open();

                    string query = @"
                        SELECT itfil.TRANSACTION_ID ItemFulfillmentId
                            , (itfilLine.ITEM_COUNT * -1) Quantity
                            , itfilLine.KIT_ID KitId
                            , item.SKU 
                            , itfil.ACTUAL_SHIPPING_CARRIER Carrier 
                            , CASE WHEN soLine.NEST_PRO_PERSONAL_ITEM = 'F' THEN 'false' 
                                ELSE 'true' end as 'IsPersonal' 
                        FROM [NetSuite].[data].[TRANSACTIONS] itfil 
                        JOIN [NetSuite].[data].[TRANSACTION_LINES] itfilLine 
                            ON itfil.TRANSACTION_ID = itfilLine.TRANSACTION_ID 
                            AND itfil.TRANSACTION_TYPE = 'Item Fulfillment' 
                        JOIN [NetSuite].[data].[TRANSACTION_LINKS] link 
                            ON itfil.TRANSACTION_ID = link.APPLIED_TRANSACTION_ID 
                            AND itfilLine.TRANSACTION_LINE_ID = link.APPLIED_TRANSACTION_LINE_ID 
                        JOIN [NetSuite].[data].[TRANSACTIONS] so
                            ON so.TRANSACTION_ID = link.ORIGINAL_TRANSACTION_ID 
                        JOIN [NetSuite].[data].[TRANSACTION_LINES] soLine 
                            ON soLine.TRANSACTION_ID = so.TRANSACTION_ID 
                            AND so.TRANSACTION_TYPE = 'Sales Order' 
                            AND soLine.TRANSACTION_LINE_ID = link.ORIGINAL_TRANSACTION_LINE_ID 
                        JOIN [NetSuite].[data].[ITEMS] item 
                            ON item.ITEM_ID = itfilLine.ITEM_ID 
                        WHERE so.TRANSACTION_ID = @netsuiteSalesOrderId 
                        AND itfil.TRANSACTION_ID not in @importedItemFulfillmentIds";

                    List <ItemFulfillmentLine> itemFulfillments = conn.Query <ItemFulfillmentLine>(
                        query,
                        new { netsuiteSalesOrderId, importedItemFulfillmentIds },
                        commandTimeout: 500).ToList();

                    conn.Close();

                    var groupedItemFulfillments = itemFulfillments.GroupBy(itfil => itfil.ItemFulfillmentId);

                    return groupedItemFulfillments;
                }
            }));
        }
コード例 #3
0
        public void WillReturnStateAbbreviation()
        {
            string stateName = "District of Columbia";

            string stateAbbreviation = NetSuiteHelper.GetStateByName(stateName);

            Assert.Equal("DC", stateAbbreviation);
        }
コード例 #4
0
        private static OrderToImport GetSalesOrderValues(string salesOrderId)
        {
            RestClient  client  = new RestClient(orderImporterSpecControllerUrl);
            RestRequest request = BigCommerceHelper.CreateNewGetRequest();

            NetSuiteHelper.SetNetSuiteTestParameters(request, salesOrderId);

            IRestResponse response       = client.Execute(request);
            OrderToImport parsedResponse = JsonConvert.DeserializeObject <OrderToImport>(response.Content);

            return(parsedResponse);
        }
コード例 #5
0
 public static void SetShippingInformation(ShippingAddress shippingAddress, OrderToImport request)
 {
     request.ShippingFirstName  = shippingAddress.first_name;
     request.ShippingLastName   = shippingAddress.last_name;
     request.ShippingCompany    = shippingAddress.company;
     request.ShippingLine1      = shippingAddress.street_1;
     request.ShippingLine2      = shippingAddress.street_2;
     request.ShippingCity       = shippingAddress.city;
     request.ShippingState      = NetSuiteHelper.GetStateByName(shippingAddress.state);
     request.ShippingZip        = shippingAddress.zip;
     request.ShippingCountry    = shippingAddress.country_iso2;
     request.ShippingPhone      = shippingAddress.phone;
     request.ShippingMethodName = BigCommerceHelper.GetShippingMethodName(shippingAddress.shipping_method);
 }
コード例 #6
0
        public static string ImportOrderToNetSuite(OrderToImport importOrderRequest)
        {
            var client      = new RestClient(orderImporterRestletUrl);
            var jsonRequest = JsonConvert.SerializeObject(importOrderRequest);
            var request     = NetSuiteHelper.CreateNewRestletRequest(jsonRequest, orderImporterRestletUrl, "OrderImporter");

            var orderImporterRestletResponse = client.Execute(request);
            var parsedNetSuiteResponse       = JsonConvert.DeserializeObject <ImportOrderResponse>(orderImporterRestletResponse.Content);

            Log.Information("Netsuite Order Importer response {@parsedNetSuiteResponse}", parsedNetSuiteResponse);

            if (parsedNetSuiteResponse.error != null)
            {
                throw new Exception($"Error: {parsedNetSuiteResponse.error}");
            }

            return(parsedNetSuiteResponse.salesOrderRecordId);
        }
コード例 #7
0
        public static int GetSumOfKitMembers(int kitId)
        {
            var retryPolicy = Policy.Handle <SqlException>()
                              .WaitAndRetry(4, _ => TimeSpan.FromSeconds(30), (ex, ts, count, context) =>
            {
                string errorMessage = "Error in GetKitMembers";
                Log.Warning(ex, $"{errorMessage} . retrying...");

                if (count == 4)
                {
                    Log.Error(ex, errorMessage);
                }
            });

            return(retryPolicy.Execute(() =>
            {
                using (var conn = new SqlConnection(NetSuiteHelper.GetAthenaDBConnectionString(dbName)))
                {
                    try
                    {
                        conn.Open();

                        string query = @"
                            SELECT SUM(itgp.QUANTITY) SumOfKitItems 
                            FROM NetSuite.data.ITEMS it 
                            JOIN NetSuite.data.ITEM_GROUP itgp 
                            ON it.ITEM_ID = itgp.PARENT_ID 
                            WHERE it.ITEM_ID = @kitId 
                            GROUP BY itgp.PARENT_ID";

                        int sumOfKitItems = conn.QuerySingle <int>(query, new { kitId }, commandTimeout: 500);

                        return sumOfKitItems;
                    }
                    catch (Exception ex)
                    {
                        var errorMessage = "Error in GetKitMembers.";
                        Log.Error(errorMessage, ex);
                        throw;
                    }
                }
            }));
        }
コード例 #8
0
        public static void SetBillingInformation(Order order, OrderToImport request)
        {
            int googleParentAccountId = 18054032;

            request.ParentAccountId  = googleParentAccountId;
            request.Email            = order.billing_address.email;
            request.PhoneNumber      = order.billing_address.phone;
            request.Department       = b2bDepartmentId;
            request.IPAddress        = order.ip_address;
            request.UserTypeId       = generalContractor;
            request.BillingFirstName = order.billing_address.first_name;
            request.BillingLastName  = order.billing_address.last_name;
            request.BillingLine1     = order.billing_address.street_1;
            request.BillingLine2     = order.billing_address.street_2;
            request.BillingCity      = order.billing_address.city;
            request.BillingState     = NetSuiteHelper.GetStateByName(order.billing_address.state);
            request.BillingZip       = order.billing_address.zip;
            request.BillingCountry   = order.billing_address.country_iso2;
            request.Company          = order.billing_address.company;
        }
コード例 #9
0
        public void WillCreateNetSuiteRequest()
        {
            BigCommerceController.customerId = 2;
            Order           order           = CreateFakeBigCommerceOrder();
            ShippingAddress shippingAddress = CreateFakeShippingAddress();

            OrderToImport netsuiteRequest = NetSuiteController.CreateNetSuiteRequest(order, shippingAddress);

            Assert.Equal(order.billing_address.email, netsuiteRequest.Email);
            Assert.Equal(order.billing_address.phone, netsuiteRequest.PhoneNumber);
            Assert.Equal(NetSuiteController.b2bDepartmentId, netsuiteRequest.Department);
            Assert.Equal(order.ip_address, netsuiteRequest.IPAddress);
            Assert.Equal("BB1-866", netsuiteRequest.NestProId);

            Assert.Equal($"NP{order.id}", netsuiteRequest.SiteOrderNumber);
            Assert.Equal(order.payment_provider_id, netsuiteRequest.AltOrderNumber);
            Assert.Equal(NetSuiteController.micrositeId, netsuiteRequest.Microsite);
            Assert.Equal(NetSuiteController.registered, netsuiteRequest.CheckoutTypeId);
            Assert.Equal(Convert.ToDouble(order.base_shipping_cost), netsuiteRequest.SH);

            Assert.Equal(order.billing_address.first_name, netsuiteRequest.BillingFirstName);
            Assert.Equal(order.billing_address.last_name, netsuiteRequest.BillingLastName);
            Assert.Equal(order.billing_address.street_1, netsuiteRequest.BillingLine1);
            Assert.Equal(order.billing_address.street_2, netsuiteRequest.BillingLine2);
            Assert.Equal(order.billing_address.city, netsuiteRequest.BillingCity);
            Assert.Equal(NetSuiteHelper.GetStateByName(order.billing_address.state), netsuiteRequest.BillingState);
            Assert.Equal(order.billing_address.zip, netsuiteRequest.BillingZip);
            Assert.Equal(order.billing_address.country_iso2, netsuiteRequest.BillingCountry);
            Assert.Equal(NetSuiteController.generalContractor, netsuiteRequest.UserTypeId);

            Assert.Equal(shippingAddress.first_name, netsuiteRequest.ShippingFirstName);
            Assert.Equal(shippingAddress.last_name, netsuiteRequest.ShippingLastName);
            Assert.Equal(shippingAddress.street_1, netsuiteRequest.ShippingLine1);
            Assert.Equal(shippingAddress.street_2, netsuiteRequest.ShippingLine2);
            Assert.Equal(shippingAddress.city, netsuiteRequest.ShippingCity);
            Assert.Equal(NetSuiteHelper.GetStateByName(shippingAddress.state), netsuiteRequest.ShippingState);
            Assert.Equal(shippingAddress.zip, netsuiteRequest.ShippingZip);
            Assert.Equal(shippingAddress.country_iso2, netsuiteRequest.ShippingCountry);
            Assert.Equal(BigCommerceHelper.GetShippingMethodName(shippingAddress.shipping_method), netsuiteRequest.ShippingMethodName);
        }
コード例 #10
0
        public static string GetSKUOfParentKit(int?kitId)
        {
            var retryPolicy = Policy.Handle <SqlException>()
                              .WaitAndRetry(4, _ => TimeSpan.FromSeconds(30), (ex, ts, count, context) =>
            {
                string errorMessage = "Error in GetSKUOfParentKit";
                Log.Warning(ex, $"{errorMessage} . retrying...");

                if (count == 4)
                {
                    Log.Error(ex, errorMessage);
                }
            });

            return(retryPolicy.Execute(() =>
            {
                using (var conn = new SqlConnection(NetSuiteHelper.GetAthenaDBConnectionString(dbName)))
                {
                    try
                    {
                        conn.Open();

                        string query = @"
                            SELECT SKU 
                            FROM NetSuite.data.ITEMS 
                            WHERE ITEM_ID = @kitId";

                        string kitSKU = conn.QuerySingle <string>(query, new { kitId }, commandTimeout: 500);

                        return kitSKU;
                    }
                    catch (Exception ex)
                    {
                        Log.Error(ex, "Error in GetSKUOfParentKit.");
                        throw;
                    }
                }
            }));
        }
コード例 #11
0
        public static string GetNetSuiteItemIdBySku(string sku)
        {
            using (SqlConnection connection = new SqlConnection(NetSuiteHelper.GetAthenaDBConnectionString(dbName)))
            {
                try
                {
                    connection.Open();
                    string query = $"SELECT [ITEM_ID] FROM [HMWallaceDATA].[dbo].[NETSUITEITEMS] WHERE [FULL_NAME] = '{sku}'";

                    netsuiteItemId = connection.QuerySingle <String>(query);

                    connection.Close();
                }
                catch (Exception ex)
                {
                    var itemIdErrormessage = $"Error in GetNetSuiteItemIdBySku. Item SKU {sku} was not found. Error: {ex}";
                    Log.Error(itemIdErrormessage);
                    throw new Exception(itemIdErrormessage);
                }

                return(netsuiteItemId);
            }
        }