private SalesOrderPayload GetPayload(DataSets.Order.CalculatedOrdersRow row, DataSets.Order.CalculatedOrderDetailsDataTable detailDataTable, //DataSets.Order.DeletedOrderDetailsDataTable deletedOrderDetailsDataTable, NorthwindConfig config) { #region Declarations SalesOrderPayload payload; string id; CountryCodes countryCodes = new CountryCodes(); #endregion id = row.OrderID.ToString(); payload = new SalesOrderPayload(); payload.LocalID = id; payload.SyncUuid = GetUuid(id, "", SupportedResourceKinds.salesOrders); payload.SalesOrdertype.active = true; payload.SalesOrdertype.applicationID = id; payload.SalesOrdertype.currency = config.CurrencyCode; payload.ForeignIds.Add("pricelist", Sage.Integration.Northwind.Application.API.Constants.DefaultValues.PriceList.ID); if (!row.IsCustomerIDNull()) payload.ForeignIds.Add("tradingAccount", Sage.Integration.Northwind.Application.API.Constants.CustomerIdPrefix + row.CustomerID); if (!row.IsOrderDateNull()) { payload.SalesOrdertype.date = row.OrderDate; payload.SalesOrdertype.dateSpecified = true; } payload.SalesOrdertype.lineCountSpecified = true; payload.SalesOrdertype.lineCount = detailDataTable.Rows.Count; payload.SalesOrdertype.discountTotalSpecified = true; payload.SalesOrdertype.discountTotal = row.IsDiscountAmountNull() ? new decimal(0) : Convert.ToDecimal(row.DiscountAmount); payload.SalesOrdertype.netTotalSpecified = true; payload.SalesOrdertype.netTotal = row.IsTotalNetPriceNull() ? new decimal(0) : Convert.ToDecimal(row.TotalNetPrice); payload.SalesOrdertype.carrierTotalPriceSpecified = true; payload.SalesOrdertype.carrierTotalPrice = row.IsFreightNull() ? new decimal(0) : row.Freight; payload.SalesOrdertype.grossTotalSpecified = true; payload.SalesOrdertype.grossTotal = payload.SalesOrdertype.netTotal; if (!row.IsRequiredDateNull()) { payload.SalesOrdertype.dueDateSpecified = true; payload.SalesOrdertype.dueDate = row.RequiredDate; } if (!row.IsShipViaNull()) { payload.SalesOrdertype.deliveryMethod = row.ShipVia.ToString(); ; } postalAddresstype address = new postalAddresstype(); address.active = true; address.activeSpecified = true; address.address1 = row.IsShipAddressNull() ? "" : row.ShipAddress; address.applicationID = id; address.country = row.IsShipCountryNull() ? "" : row.ShipCountry; address.townCity = row.IsShipCityNull() ? "" : row.ShipCity; address.zipPostCode = row.IsShipPostalCodeNull() ? "" : row.ShipPostalCode; address.type = postalAddressTypeenum.Shipping; payload.SalesOrdertype.postalAddresses = new postalAddresstype[1]; payload.SalesOrdertype.postalAddresses[0] = address; payload.SalesOrdertype.salesOrderLines = new salesOrderLinetype[detailDataTable.Rows.Count]; int index = 0; foreach (DataSets.Order.CalculatedOrderDetailsRow detailRow in detailDataTable.Rows) { SalesOrderLinePayload soPayload = GetLineItem(detailRow, config); payload.ForeignIds.Add( String.Format("salesOrderLines[{0}]", index.ToString()), soPayload.LocalID); foreach (string key in soPayload.ForeignIds.Keys)// (int foreignIdIndex = 0; foreignIdIndex <= soPayload.ForeignIds.Count; foreignIdIndex++) { string value; if (soPayload.ForeignIds.TryGetValue(key, out value)) { payload.ForeignIds.Add( String.Format("salesOrderLines[{0}]/{1}", index.ToString(), key), value); } } payload.SalesOrdertype.salesOrderLines[index] = soPayload.SalesOrderLinetype; index++; } //foreach (DataSets.Order.DeletedOrderDetailsRow deletedRow in deletedOrderDetailsDataTable.Rows) //{ // lineItemDoc = new LineItemDocument(); // lineItemDoc.Id = deletedRow[0].ToString(); // lineItemDoc.LogState = LogState.Deleted; // doc.orderitems.Add(lineItemDoc); //} return payload; }