private Document GetDocumentLineItem(DataSets.Order.CalculatedOrderDetailsRow row, Token lastToken, NorthwindConfig config) { #region Declarations LineItemDocument doc; string id; decimal discountPercentage; #endregion id = row.OrderID.ToString() + "-" + row.ProductID.ToString(); doc = new LineItemDocument(); doc.Id = id; if (lastToken.InitRequest) { doc.LogState = LogState.Created; } else if ((row.CreateID >= lastToken.SequenceNumber) && (row.CreateUser != config.CrmUser)) { doc.LogState = LogState.Created; } else if ((row.ModifyID >= lastToken.SequenceNumber) && (row.ModifyUser != config.CrmUser)) { doc.LogState = LogState.Updated; } doc.productid.Value = row.ProductID; //doc.orderquouteid.Value = row.OrderID; doc.uomid.Value = row.ProductID; doc.quantity.Value = row.IsQuantityNull() ? Convert.ToInt16(0) : row.Quantity; doc.listprice.Value = row.IsUnitPriceNull() ? new decimal(0) : row.UnitPrice; discountPercentage = row.IsDiscountNull() ? (decimal)0 : Convert.ToDecimal(row.Discount); //doc.discountsum.Value = (decimal)(short)doc.Quantity.Value * (decimal)doc.ListPrice.Value * discountPercentage; doc.discountsum.Value = (decimal)doc.listprice.Value * discountPercentage; doc.quotedprice.Value = (decimal)doc.listprice.Value * (1 - discountPercentage); //doc.quotedprice.Value = row.IsQuotePriceNull() ? new decimal(0) : Convert.ToDecimal(row.QuotePrice); doc.taxrate.Value = "0"; doc.tax.Value = new decimal(0); doc.quotedpricetotal.Value = Convert.ToDecimal(doc.quantity.Value) * Convert.ToDecimal(doc.quotedprice.Value); return(doc); }
public SalesOrderFeedEntry GetTransformedPayload(OrderDocument document) { SalesOrderFeedEntry payload = new SalesOrderFeedEntry(); #warning TODO: the actual transformation?! #region salesorder lines int salesOrderLinesCount = document.orderitems.documents.Count; payload.salesOrderLines = new SalesOrderLineFeed(); for (int index = 0; index < salesOrderLinesCount; index++) { LineItemDocument lineItem = document.orderitems.documents[index] as LineItemDocument; SalesOrderLineFeedEntry salesOrderLinePayload; salesOrderLinePayload = _salesOrderLineTransform.GetTransformedPayload(lineItem); payload.salesOrderLines.Entries.Add(salesOrderLinePayload); } #endregion return(payload); }
public SalesOrderPayload GetTransformedPayload(OrderDocument document, out List <SyncFeedEntryLink> links) { SalesOrderPayload payload = new SalesOrderPayload(); salesOrdertype salesOrder = new salesOrdertype(); #region initial values //salesOrder.active = true; //salesOrder.activeSpecified = true; //salesOrder.allocationStatus = null; //salesOrder.allocationStatusSpecified = false; //salesOrder.applicationID = null; //salesOrder.buyerContact = new contacttype(); //salesOrder.carrierCompany = new operatingCompanylist(); //salesOrder.carrierNetPrice = null; //salesOrder.carrierNetPriceSpecified = false; //salesOrder.carrierPurchaseInvoice = new purchaseInvoicelist(); //salesOrder.carrierReference = null; //salesOrder.carrierSalesInvoice = new salesInvoicelist(); //salesOrder.carrierTaxCodes = new taxCodelist(); //salesOrder.carrierTaxPrice = null; //salesOrder.carrierTaxPriceSpecified = false; //salesOrder.carrierTotalPrice = null; //salesOrder.carrierTotalPriceSpecified = false; //salesOrder.carrierTradingAccount = new tradingAccountlist(); //salesOrder.cases = new caselist(); //salesOrder.chargesTotal = null; //salesOrder.chargesTotalSpecified = false; //salesOrder.contract = null; //salesOrder.copyFlag = false; //salesOrder.copyFlagSpecified = false; //salesOrder.costTotal = null; //salesOrder.costTotalSpecified = false; //salesOrder. //salesOrder.accountingType = tradingAccountAccountingTypeenum.Unknown; //salesOrder.customerSupplierFlag = (document.type.IsNull) ? null : document.type.Value.ToString(); //salesOrder.active = true; //salesOrder.postalAddresses = new postalAddresslist(); //salesOrder.contacts = new contactlist(); //salesOrder.phones = new phoneNumberlist(); //salesOrder.deleted = false; //salesOrder.deliveryContact = null; //salesOrder.deliveryMethod = null; //salesOrder.deliveryRule = false; //salesOrder.emails = new emaillist(); //salesOrder.applicationID = document.Id; //salesOrder.uuid = GetUuid(document.Id, document.CrmId).ToString(); //salesOrder.label = SupportedResourceKinds.TradingAccounts.ToString(); //salesOrder.name = (document.name.IsNull) ? null : document.name.Value.ToString(); //Many more things should set to default values #endregion #region salesorder lines int salesOrderLinesCount = document.orderitems.documents.Count; salesOrder.salesOrderLines = new salesOrderLinetype[salesOrderLinesCount]; for (int index = 0; index < salesOrderLinesCount; index++) { List <SyncFeedEntryLink> dummyLinks; LineItemDocument lineItem = document.orderitems.documents[index] as LineItemDocument; SalesOrderLinePayload salesOrderLinePayload; salesOrderLinePayload = _salesOrderLineTransformation.GetTransformedPayload(lineItem, out dummyLinks); salesOrder.salesOrderLines[index] = salesOrderLinePayload.SalesOrderLinetype; } #endregion payload.SalesOrdertype = salesOrder; links = new List <SyncFeedEntryLink>(); SyncFeedEntryLink selfLink = SyncFeedEntryLink.CreateSelfLink(String.Format("{0}{1}('{2}')", _datasetLink, SupportedResourceKinds.salesOrders, document.Id)); links.Add(selfLink); return(payload); }
private Document GetDocument(DataSets.Order.CalculatedOrdersRow row, DataSets.Order.CalculatedOrderDetailsDataTable detailDataTable, DataSets.Order.DeletedOrderDetailsDataTable deletedOrderDetailsDataTable, Token lastToken, NorthwindConfig config) { #region Declarations OrderDocument doc; string id; LogState logState = LogState.Updated; Document lineItemDoc; CountryCodes countryCodes = new CountryCodes(); #endregion id = row.OrderID.ToString(); if (lastToken.InitRequest) { logState = LogState.Created; } else if (row.IsCreateIDNull() || row.IsModifyIDNull() || row.IsCreateUserNull() || row.IsModifyUserNull()) { logState = LogState.Created; } else if ((row.CreateID > lastToken.SequenceNumber) && (row.CreateUser != config.CrmUser)) { logState = LogState.Created; } else if ((row.CreateID == lastToken.SequenceNumber) && (row.CreateUser != config.CrmUser) && (id.CompareTo(lastToken.Id.Id) > 0)) { logState = LogState.Created; } else if ((row.ModifyID >= lastToken.SequenceNumber) && (row.ModifyUser != config.CrmUser)) { logState = LogState.Updated; } doc = new OrderDocument(); doc.Id = id; doc.LogState = logState; doc.currency.Value = config.CurrencyCode; doc.pricinglistid.Value = Constants.DefaultValues.PriceList.ID; doc.reference.Value = id; if (row.IsCustomerIDNull()) { doc.accountid.Value = null; } else { doc.accountid.Value = Constants.CustomerIdPrefix + row.CustomerID; } if (row.IsOrderDateNull()) { doc.opened.Value = null; } else { doc.opened.Value = row.OrderDate; } if (row.IsShippedDateNull()) { doc.status.Value = Constants.OrderStatus.Active; } else { doc.status.Value = Constants.OrderStatus.Completed; } //doc.DiscountPercentage.Value = new decimal(0); //doc.grossamt.Value = row.IsTotalQuotedPriceNull() ? new decimal(0) : Convert.ToDecimal(row.TotalQuotedPrice); doc.discountamt.Value = new decimal(0); doc.lineitemdisc.Value = row.IsDiscountAmountNull() ? new decimal(0) : Convert.ToDecimal(row.DiscountAmount); doc.nettamt.Value = row.IsTotalNetPriceNull() ? new decimal(0) : Convert.ToDecimal(row.TotalNetPrice); doc.freight.Value = row.IsFreightNull() ? new decimal(0) : row.Freight; doc.tax.Value = new decimal(0); doc.grossamt.Value = doc.nettamt.Value; if (row.IsRequiredDateNull()) { doc.deliverydate.Value = null; } else { doc.deliverydate.Value = row.RequiredDate; } if (row.IsEmployeeIDNull()) { doc.salesrepr.Value = null; } else { doc.salesrepr.Value = Convert.ToString(row.EmployeeID); } if (row.IsShipViaNull()) { doc.shippedvia.Value = null; } else { doc.shippedvia.Value = row.ShipVia; } OrderAddress orderAddress = new OrderAddress(); orderAddress.SetNorthwindAddress(row.IsShipAddressNull() ? "" : row.ShipAddress, row.IsShipCityNull() ? "" : row.ShipCity, row.IsShipPostalCodeNull() ? "" : row.ShipPostalCode, row.IsShipCountryNull() ? "" : row.ShipCountry); doc.shipaddress.Value = orderAddress.CrmOrderAddress; foreach (DataSets.Order.CalculatedOrderDetailsRow detailRow in detailDataTable.Rows) { lineItemDoc = GetDocumentLineItem(detailRow, lastToken, config); if ((doc.LogState != LogState.Created) && (lineItemDoc.HasNoLogStatus)) { continue; } doc.orderitems.Add(lineItemDoc); } 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(doc); }