Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #4
0
        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);
        }