private SalesOrderLineFeedEntry GetLineItem(Sage.Integration.Northwind.Adapter.Data.SalesOrders.DataSets.Order.CalculatedOrderDetailsRow row, NorthwindConfig config) { #region Declarations SalesOrderLineFeedEntry payload; string id; decimal discountPercentage; #endregion id = row.OrderID.ToString() + "-" + row.ProductID.ToString(); payload = new SalesOrderLineFeedEntry(); payload.UUID = GetUuid(id, "", SupportedResourceKinds.salesOrderLines); payload.commodity = (CommodityFeedEntry)_commoditiesFeedEntryWrapper.GetFeedEntry(row.ProductID.ToString()); /* payload.commodity = new CommodityFeedEntry(); * payload.commodity.UUID = GetUuid(row.ProductID.ToString(), "", SupportedResourceKinds.commodities);*/ payload.salesOrder = new SalesOrderFeedEntry(); payload.salesOrder.UUID = GetUuid(row.OrderID.ToString(), "", SupportedResourceKinds.salesOrders); payload.unitOfMeasure = (UnitOfMeasureFeedEntry)_unitsOfMeasureFeedEntryWrapper.GetFeedEntry(row.ProductID.ToString()); /*payload.unitOfMeasure = new UnitOfMeasureFeedEntry(); * 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.orderLineDiscountPercent = row.IsDiscountNull() ? (decimal)0 : Convert.ToDecimal(row.Discount); payload.discountTotal = payload.initialPrice * (decimal)payload.orderLineDiscountPercent; payload.costTotal = (decimal)payload.initialPrice * (1 - payload.orderLineDiscountPercent); payload.netTotal = Convert.ToDecimal(payload.quantity) * Convert.ToDecimal(payload.costTotal); SetCommonProperties(id, payload, SupportedResourceKinds.salesOrderLines); return(payload); }
public override SdataTransactionResult Update(Sage.Common.Syndication.FeedEntry payload) { SdataTransactionResult tmpTransactionResult; if (!(payload is SalesOrderLineFeedEntry)) { tmpTransactionResult = new SdataTransactionResult(); tmpTransactionResult.HttpMethod = HttpMethod.PUT; tmpTransactionResult.ResourceKind = _resourceKind; tmpTransactionResult.HttpStatus = System.Net.HttpStatusCode.BadRequest; tmpTransactionResult.HttpMessage = ("salesorder payload missing"); return(tmpTransactionResult); } SalesOrderLineFeedEntry soLine = payload as SalesOrderLineFeedEntry; Sage.Integration.Northwind.Adapter.Data.SalesOrders.DataSets.OrderTableAdapters.Order_DetailsTableAdapter detailsTableAdapter = new Order_DetailsTableAdapter(); Sage.Integration.Northwind.Adapter.Data.SalesOrders.DataSets.Order order = new Sage.Integration.Northwind.Adapter.Data.SalesOrders.DataSets.Order(); int productId; int orderId; if (GetLocalIds(payload.Key, out orderId, out productId)) { using (OleDbConnection connection = new OleDbConnection(_context.Config.ConnectionString)) { try { detailsTableAdapter.Connection = connection; int recordCount = detailsTableAdapter.FillBy(order.Order_Details, orderId); if (recordCount == 0) { tmpTransactionResult = new SdataTransactionResult(); tmpTransactionResult.LocalId = payload.Key; tmpTransactionResult.HttpMethod = HttpMethod.PUT; tmpTransactionResult.ResourceKind = _resourceKind; tmpTransactionResult.HttpStatus = System.Net.HttpStatusCode.BadRequest; tmpTransactionResult.HttpMessage = ("salesorder not found"); return(tmpTransactionResult); } foreach (Sage.Integration.Northwind.Adapter.Data.SalesOrders.DataSets.Order.Order_DetailsRow detailsRow in order.Order_Details.Rows) { if (detailsRow.ProductID == productId) { detailsRow.ModifyUser = _context.Config.CrmUser; detailsRow.ModifyID = _context.Config.SequenceNumber; if (soLine.IsPropertyChanged("quantity")) { detailsRow.Quantity = Convert.ToInt16(soLine.quantity); } else { detailsRow.Quantity = 0; } if (soLine.IsPropertyChanged("initialPrice")) { detailsRow.UnitPrice = (Decimal)soLine.initialPrice; } else { detailsRow.UnitPrice = 0; } if ((!soLine.IsPropertyChanged("discountTotal")) || (detailsRow.Quantity == 0) || (detailsRow.UnitPrice == 0)) { detailsRow.Discount = (float)0; } else { // discountPC = discountsum / qunatity * listprice //detailRow.Discount = Convert.ToSingle((decimal)lineItemDoc.discountsum.Value / ((decimal)detailRow.Quantity * detailRow.UnitPrice)); float discount = Convert.ToSingle((decimal)soLine.discountTotal / (detailsRow.UnitPrice)); if (discount > 1) { discount = 0; } detailsRow.Discount = discount; } break; } } detailsTableAdapter.Update(order.Order_Details); tmpTransactionResult = new SdataTransactionResult(); tmpTransactionResult.LocalId = payload.Key; tmpTransactionResult.HttpMethod = HttpMethod.PUT; tmpTransactionResult.ResourceKind = _resourceKind; tmpTransactionResult.HttpStatus = System.Net.HttpStatusCode.OK; return(tmpTransactionResult); } catch (Exception e) { tmpTransactionResult = new SdataTransactionResult(); tmpTransactionResult.LocalId = payload.Key; tmpTransactionResult.HttpMethod = HttpMethod.PUT; tmpTransactionResult.ResourceKind = _resourceKind; tmpTransactionResult.HttpStatus = System.Net.HttpStatusCode.BadRequest; tmpTransactionResult.HttpMessage = e.Message; return(tmpTransactionResult); } } } tmpTransactionResult = new SdataTransactionResult(); tmpTransactionResult.LocalId = payload.Key; tmpTransactionResult.HttpMethod = HttpMethod.PUT; tmpTransactionResult.ResourceKind = _resourceKind; tmpTransactionResult.HttpStatus = System.Net.HttpStatusCode.BadRequest; tmpTransactionResult.HttpMessage = "Not found"; return(tmpTransactionResult); }
private SalesOrderLineFeedEntry GetLineItem(Sage.Integration.Northwind.Adapter.Data.SalesOrders.DataSets.Order.CalculatedOrderDetailsRow row, NorthwindConfig config) { #region Declarations SalesOrderLineFeedEntry payload; string id; decimal discountPercentage; #endregion id = row.OrderID.ToString() + "-" + row.ProductID.ToString(); payload = new SalesOrderLineFeedEntry(); payload.UUID = GetUuid(id, "", SupportedResourceKinds.salesOrderLines); payload.commodity = (CommodityFeedEntry)_commoditiesFeedEntryWrapper.GetFeedEntry(row.ProductID.ToString()); /* payload.commodity = new CommodityFeedEntry(); payload.commodity.UUID = GetUuid(row.ProductID.ToString(), "", SupportedResourceKinds.commodities);*/ payload.salesOrder = new SalesOrderFeedEntry(); payload.salesOrder.UUID = GetUuid(row.OrderID.ToString(), "", SupportedResourceKinds.salesOrders); payload.unitOfMeasure = (UnitOfMeasureFeedEntry)_unitsOfMeasureFeedEntryWrapper.GetFeedEntry(row.ProductID.ToString()); /*payload.unitOfMeasure = new UnitOfMeasureFeedEntry(); 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.orderLineDiscountPercent = row.IsDiscountNull() ? (decimal)0 : Convert.ToDecimal(row.Discount); payload.discountTotal = payload.initialPrice * (decimal)payload.orderLineDiscountPercent; payload.costTotal = (decimal)payload.initialPrice * (1 - payload.orderLineDiscountPercent); payload.netTotal = Convert.ToDecimal(payload.quantity) * Convert.ToDecimal(payload.costTotal); SetCommonProperties(id, payload, SupportedResourceKinds.salesOrderLines); return payload; }
private SalesOrderFeedEntry GetPayload(Sage.Integration.Northwind.Adapter.Data.SalesOrders.DataSets.Order.CalculatedOrdersRow row, Sage.Integration.Northwind.Adapter.Data.SalesOrders.DataSets.Order.CalculatedOrderDetailsDataTable detailDataTable, NorthwindConfig config) { #region Declarations SalesOrderFeedEntry payload; string id; CountryCodes countryCodes = new CountryCodes(); #endregion id = row.OrderID.ToString(); payload = new SalesOrderFeedEntry(); payload.UUID = GetUuid(id, "", SupportedResourceKinds.salesOrders); payload.active = true; payload.currency = config.CurrencyCode; payload.pricelist = new PriceListFeedEntry(); payload.pricelist.UUID = GetUuid(id, "", SupportedResourceKinds.priceLists); if (!row.IsCustomerIDNull()) { /*payload.tradingAccount = new TradingAccountFeedEntry(); * payload.tradingAccount.Key = Sage.Integration.Northwind.Application.API.Constants.CustomerIdPrefix + row.CustomerID; * payload.tradingAccount.UUID = GetUuid(payload.tradingAccount.Key, "", SupportedResourceKinds.tradingAccounts); * payload.tradingAccount.Id = GetSDataId(payload.tradingAccount.Key, SupportedResourceKinds.tradingAccounts); * payload.tradingAccount.Uri = payload.tradingAccount.Id;*/ payload.tradingAccount = (TradingAccountFeedEntry)_tradingAccountsFeedEntryWrapper.GetFeedEntry(Sage.Integration.Northwind.Application.API.Constants.CustomerIdPrefix + row.CustomerID); } if (!row.IsOrderDateNull()) { payload.date = row.OrderDate; } //payload.lineCount = detailDataTable.Rows.Count; 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.dueDate = row.RequiredDate; } if (!row.IsShipViaNull()) { payload.deliveryMethod = row.ShipVia.ToString();; } PostalAddressFeedEntry address = new PostalAddressFeedEntry(); address.active = true; address.address1 = row.IsShipAddressNull() ? null : row.ShipAddress; address.country = row.IsShipCountryNull() ? null : row.ShipCountry; address.townCity = row.IsShipCityNull() ? null : row.ShipCity; address.zipPostCode = row.IsShipPostalCodeNull() ? null : row.ShipPostalCode; address.type = postalAddressTypeenum.Shipping; payload.postalAddresses = new PostalAddressFeed(); //TODO: check if valid Address? payload.postalAddresses.Entries.Add(address); payload.salesOrderLines = new SalesOrderLineFeed(); foreach (Sage.Integration.Northwind.Adapter.Data.SalesOrders.DataSets.Order.CalculatedOrderDetailsRow detailRow in detailDataTable.Rows) { SalesOrderLineFeedEntry soPayload = GetLineItem(detailRow, config); payload.salesOrderLines.Entries.Add(soPayload); } return(payload); }