internal void ExtractItemList(Dictionary <int, ItemComparator.ItemInfo> magentoProductInfoMap)
        {
            orderItems = new List <MyOrderItem>();

            foreach (var item in magentoOrder.items)
            {
                if (item.sku.StartsWith("TOS_", StringComparison.InvariantCultureIgnoreCase))
                {
                    tos_sku = item.sku;
                    continue;
                }

                var orderItem = new MyOrderItem();
                orderItem.sku         = item.sku;
                orderItem.internal_id = magentoProductInfoMap[item.product_id].ns_internal_id;
                orderItem.item_type   = magentoProductInfoMap[item.product_id].ns_item_type;
                orderItem.brand       = magentoProductInfoMap[item.product_id].brand;
                orderItem.weight      = item.weight;
                orderItem.salesPrice  = item.price;
                orderItem.qty         = item.qty_ordered;
                orderItem.subtotal    = item.row_total;
                orderItem.tax_amount  = item.tax_amount;
                orderItem.tax_percent = item.tax_percent;

                orderItems.Add(orderItem);
            }
        }
        public MyOrderItem deep_clone()
        {
            var itemInfo = new MyOrderItem()
            {
                sku         = sku,
                qty         = qty,
                salesPrice  = salesPrice,
                tax_amount  = tax_amount,
                internal_id = internal_id,
                item_type   = item_type
            };

            return(itemInfo);
        }
        private TaxInfo GetTaxInfo(string shippingState, OrderInfo orderInfo)
        {
            TaxInfo taxInfo = new TaxInfo();

            if (orderInfo.magentoOrder.customer_group_id == 3)
            {
                taxInfo.isTaxable          = false;
                taxInfo.isTaxableSpecified = true;

                if (orderInfo.magentoOrder.tax_amount > 0)
                {
                    MyOrderItem amazon_sales_tax = new MyOrderItem()
                    {
                        item_type   = "Service for Sale",
                        internal_id = "51845", // X3076 - Finance Fee - Amazon Sales Tax
                        qty         = 1,
                        salesPrice  = orderInfo.magentoOrder.tax_amount
                    };
                    orderInfo.orderItems.Add(amazon_sales_tax);
                }

                return(taxInfo);
            }

            double taxableItemsAmount = orderInfo.GetTaxableItemAmount();
            double calculated_taxRate = (taxableItemsAmount > 0) ? 100 * orderInfo.magentoOrder.tax_amount / taxableItemsAmount : 0;

            orderInfo.calculated_taxRate = calculated_taxRate;

            if (calculated_taxRate <= 0)
            {
                taxInfo.isTaxable          = false;
                taxInfo.isTaxableSpecified = true;
                return(taxInfo); // no tax -> return initial
            }

            RecordRef taxItem = new RecordRef()
            {
                type = RecordType.salesTaxItem
            };

            if (orderInfo.magentoOrder.customer_group_id == 2)
            {
                taxInfo.isTaxable          = true;
                taxInfo.isTaxableSpecified = true;

                if (shippingState == "CA")
                {
                    taxItem.internalId       = "-4950";
                    taxInfo.taxItem          = taxItem;
                    taxInfo.taxRate          = calculated_taxRate;
                    taxInfo.taxRateSpecified = true;
                }
                else if (shippingState == "TX")
                {
                    taxItem.internalId       = "-4577";
                    taxInfo.taxItem          = taxItem;
                    taxInfo.taxRate          = calculated_taxRate;
                    taxInfo.taxRateSpecified = true;
                }
                else if (shippingState == "NJ")
                {
                    taxItem.internalId       = "-5316";
                    taxInfo.taxItem          = taxItem;
                    taxInfo.taxRate          = calculated_taxRate;
                    taxInfo.taxRateSpecified = true;
                }
                else if (shippingState == "SC")
                {
                    taxItem.internalId       = "-679";
                    taxInfo.taxItem          = taxItem;
                    taxInfo.taxRate          = calculated_taxRate;
                    taxInfo.taxRateSpecified = true;
                }
                else if (shippingState == "WA")
                {
                    taxItem.internalId       = "-1519";
                    taxInfo.taxItem          = taxItem;
                    taxInfo.taxRate          = calculated_taxRate;
                    taxInfo.taxRateSpecified = true;
                }
                // else: let NS find the tax item
            }
            else  // Standard
            {
                if (shippingState == "CA")
                {
                    taxItem.internalId         = "-4950";
                    taxInfo.taxItem            = taxItem;
                    taxInfo.taxRate            = calculated_taxRate;
                    taxInfo.taxRateSpecified   = true;
                    taxInfo.isTaxable          = true;
                    taxInfo.isTaxableSpecified = true;
                }
                else if (shippingState == "TX")
                {
                    taxItem.internalId         = "-4577";
                    taxInfo.taxItem            = taxItem;
                    taxInfo.taxRate            = calculated_taxRate;
                    taxInfo.taxRateSpecified   = true;
                    taxInfo.isTaxable          = true;
                    taxInfo.isTaxableSpecified = true;
                }
                else if (shippingState == "NJ")
                {
                    taxItem.internalId         = "-5316";
                    taxInfo.taxItem            = taxItem;
                    taxInfo.taxRate            = calculated_taxRate;
                    taxInfo.taxRateSpecified   = true;
                    taxInfo.isTaxable          = true;
                    taxInfo.isTaxableSpecified = true;
                }
                else if (shippingState == "WA" || shippingState == "SC")
                {
                    taxInfo.taxRate            = calculated_taxRate;
                    taxInfo.taxRateSpecified   = true;
                    taxInfo.isTaxable          = true;
                    taxInfo.isTaxableSpecified = true;
                }
            }

            return(taxInfo);
        }