private SalesInvoiceLineFeedEntry GetLineItem(Sage.Integration.Northwind.Adapter.Data.SalesOrders.DataSets.Order.CalculatedOrderDetailsRow row, NorthwindConfig config)
        {
            #region Declarations
            SalesInvoiceLineFeedEntry payload;
            string  id;
            decimal discountPercentage;
            #endregion

            id = row.OrderID.ToString() + "-" + row.ProductID.ToString();

            payload      = new SalesInvoiceLineFeedEntry();
            payload.Key  = id;
            payload.Id   = GetSDataId(payload.Key, SupportedResourceKinds.salesInvoiceLines);
            payload.UUID = GetUuid(id, "", SupportedResourceKinds.salesInvoiceLines);

            /*payload.commodity = (CommodityPayload)PayloadFactory.CreateResourcePayload(
             *  SupportedResourceKinds.commodities, row.ProductID.ToString(), _context.DatasetLink, true);*/
            payload.commodity     = new CommodityFeedEntry();
            payload.commodity.Key = row.ProductID.ToString();
            payload.commodity.Id  = GetSDataId(payload.commodity.Key, SupportedResourceKinds.commodities);

            payload.commodity.UUID = GetUuid(row.ProductID.ToString(), "", SupportedResourceKinds.commodities);

            //payload.SalesInvoiceLinetype.salesInvoice = (SalesInvoicePayload)PayloadFactory.CreateResourcePayload(
            //   SupportedResourceKinds.salesInvoices, row.OrderID.ToString(), _context.DatasetLink, true);
            //payload.SalesInvoiceLinetype.salesInvoice.Uuid = GetUuid(row.OrderID.ToString(), "", SupportedResourceKinds.salesInvoices);

            /*payload.unitOfMeasure = (UnitOfMeasurePayload)PayloadFactory.CreateResourcePayload(
             * SupportedResourceKinds.unitsOfMeasure, row.ProductID.ToString(), _context.DatasetLink, true);*/
            payload.unitOfMeasure      = new UnitOfMeasureFeedEntry();
            payload.unitOfMeasure.Key  = row.ProductID.ToString();
            payload.unitOfMeasure.Id   = GetSDataId(payload.unitOfMeasure.Key, SupportedResourceKinds.unitsOfMeasure);
            payload.unitOfMeasure.UUID = GetUuid(row.ProductID.ToString(), "", SupportedResourceKinds.unitsOfMeasure);

            payload.quantity = row.IsQuantityNull() ? Convert.ToInt16(0) : row.Quantity;

            payload.initialPrice = row.IsUnitPriceNull() ? new decimal(0) : row.UnitPrice;

            payload.invoiceLineDiscountPercent = row.IsDiscountNull() ? (decimal)0 : Convert.ToDecimal(row.Discount);

            payload.discountTotal = (decimal)payload.initialPrice * (decimal)payload.invoiceLineDiscountPercent;

            payload.costTotal = (decimal)payload.initialPrice * (1 - payload.invoiceLineDiscountPercent);

            payload.netTotal = Convert.ToDecimal(payload.quantity) * Convert.ToDecimal(payload.costTotal);

            return(payload);
        }
        private SalesInvoiceFeedEntry GetPayload(Sage.Integration.Northwind.Adapter.Data.SalesOrders.DataSets.Order.CalculatedOrdersRow row,
                                                 Sage.Integration.Northwind.Adapter.Data.SalesOrders.DataSets.Order.CalculatedOrderDetailsDataTable detailDataTable,
                                                 //DataSets.Order.DeletedOrderDetailsDataTable deletedOrderDetailsDataTable,
                                                 NorthwindConfig config)
        {
            #region Declarations
            SalesInvoiceFeedEntry payload;
            string       id;
            CountryCodes countryCodes = new CountryCodes();
            #endregion

            id = row.OrderID.ToString();

            payload        = new SalesInvoiceFeedEntry();
            payload.Key    = id;
            payload.Id     = GetSDataId(id);
            payload.UUID   = GetUuid(id, "", SupportedResourceKinds.salesInvoices);
            payload.active = true;


            payload.currency = config.CurrencyCode;

            payload.pricelist = new PriceListFeedEntry();
            //TODO: Add Id?

            /*payload.pricelist = (PriceListPayload)PayloadFactory.CreateResourcePayload(
             *  SupportedResourceKinds.priceLists,
             *  Sage.Integration.Northwind.Application.API.Constants.DefaultValues.PriceList.ID, _context.DatasetLink, true);*/
            payload.pricelist.UUID = GetUuid(id, "", SupportedResourceKinds.priceLists);



            if (!row.IsCustomerIDNull())
            {
                /*payload.tradingAccount = (TradingAccountPayload)PayloadFactory.CreateResourcePayload(
                 * SupportedResourceKinds.tradingAccounts, Sage.Integration.Northwind.Application.API.Constants.CustomerIdPrefix +
                 * row.CustomerID, _context.DatasetLink, true);*/
                payload.tradingAccount      = new TradingAccountFeedEntry();
                payload.tradingAccount.Key  = Sage.Integration.Northwind.Application.API.Constants.CustomerIdPrefix + row.CustomerID;
                payload.tradingAccount.Id   = (GetSDataId(payload.tradingAccount.Key, SupportedResourceKinds.tradingAccounts));
                payload.tradingAccount.UUID = GetUuid(payload.tradingAccount.Key, "", SupportedResourceKinds.tradingAccounts);
            }

            if (!row.IsOrderDateNull())
            {
                payload.date = row.OrderDate;
            }

            payload.discountTotal = row.IsDiscountAmountNull() ? new decimal(0) : Convert.ToDecimal(row.DiscountAmount);

            payload.netTotal = row.IsTotalNetPriceNull() ? new decimal(0) : Convert.ToDecimal(row.TotalNetPrice);

            payload.carrierTotalPrice = row.IsFreightNull() ? new decimal(0) : row.Freight;

            payload.grossTotal = payload.netTotal;



            if (!row.IsRequiredDateNull())
            {
                payload.deliveryDate = row.RequiredDate;
            }



            if (!row.IsShipViaNull())
            {
                payload.deliveryMethod = row.ShipVia.ToString();;
            }

            PostalAddressFeedEntry address = new PostalAddressFeedEntry();
            address.Id          = GetSDataId(id, SupportedResourceKinds.postalAddresses);
            address.Key         = id;
            address.active      = true;
            address.address1    = row.IsShipAddressNull() ? "" : row.ShipAddress;
            address.country     = row.IsShipCountryNull() ? "" : row.ShipCountry;
            address.townCity    = row.IsShipCityNull() ? "" : row.ShipCity;
            address.zipPostCode = row.IsShipPostalCodeNull() ? "" : row.ShipPostalCode;
            address.type        = postalAddressTypeenum.Shipping;

            payload.postalAddresses = new PostalAddressFeed();
            payload.postalAddresses.Entries.Add(address);


            payload.salesInvoiceLines = new SalesInvoiceLineFeed();
            foreach (Sage.Integration.Northwind.Adapter.Data.SalesOrders.DataSets.Order.CalculatedOrderDetailsRow detailRow in detailDataTable.Rows)
            {
                SalesInvoiceLineFeedEntry soPayload = GetLineItem(detailRow, config);
                soPayload.salesInvoice = payload;
                payload.salesInvoiceLines.Entries.Add(soPayload);
            }

            return(payload);
        }
        private SalesInvoiceLineFeedEntry GetLineItem(Sage.Integration.Northwind.Adapter.Data.SalesOrders.DataSets.Order.CalculatedOrderDetailsRow row, NorthwindConfig config)
        {
            #region Declarations
            SalesInvoiceLineFeedEntry payload;
            string id;
            decimal discountPercentage;
            #endregion

            id = row.OrderID.ToString() + "-" + row.ProductID.ToString();

            payload = new SalesInvoiceLineFeedEntry();
            payload.Key = id;
            payload.Id = GetSDataId(payload.Key, SupportedResourceKinds.salesInvoiceLines);
            payload.UUID = GetUuid(id, "", SupportedResourceKinds.salesInvoiceLines);

            /*payload.commodity = (CommodityPayload)PayloadFactory.CreateResourcePayload(
                SupportedResourceKinds.commodities, row.ProductID.ToString(), _context.DatasetLink, true);*/
            payload.commodity = new CommodityFeedEntry();
            payload.commodity.Key = row.ProductID.ToString();
            payload.commodity.Id = GetSDataId(payload.commodity.Key, SupportedResourceKinds.commodities);

            payload.commodity.UUID = GetUuid(row.ProductID.ToString(), "", SupportedResourceKinds.commodities);

            //payload.SalesInvoiceLinetype.salesInvoice = (SalesInvoicePayload)PayloadFactory.CreateResourcePayload(
            //   SupportedResourceKinds.salesInvoices, row.OrderID.ToString(), _context.DatasetLink, true);
            //payload.SalesInvoiceLinetype.salesInvoice.Uuid = GetUuid(row.OrderID.ToString(), "", SupportedResourceKinds.salesInvoices);

            /*payload.unitOfMeasure = (UnitOfMeasurePayload)PayloadFactory.CreateResourcePayload(
               SupportedResourceKinds.unitsOfMeasure, row.ProductID.ToString(), _context.DatasetLink, true);*/
            payload.unitOfMeasure = new UnitOfMeasureFeedEntry();
            payload.unitOfMeasure.Key = row.ProductID.ToString();
            payload.unitOfMeasure.Id = GetSDataId(payload.unitOfMeasure.Key, SupportedResourceKinds.unitsOfMeasure);
            payload.unitOfMeasure.UUID = GetUuid(row.ProductID.ToString(), "", SupportedResourceKinds.unitsOfMeasure);

            payload.quantity = row.IsQuantityNull() ? Convert.ToInt16(0) : row.Quantity;

            payload.initialPrice = row.IsUnitPriceNull() ? new decimal(0) : row.UnitPrice;

            payload.invoiceLineDiscountPercent = row.IsDiscountNull() ? (decimal)0 : Convert.ToDecimal(row.Discount);

            payload.discountTotal = (decimal)payload.initialPrice * (decimal)payload.invoiceLineDiscountPercent;

            payload.costTotal = (decimal)payload.initialPrice * (1 - payload.invoiceLineDiscountPercent);

            payload.netTotal = Convert.ToDecimal(payload.quantity) * Convert.ToDecimal(payload.costTotal);

            return payload;
        }