コード例 #1
0
        private SalesInvoiceLinePayload GetLineItem(DataSets.Order.CalculatedOrderDetailsRow row, NorthwindConfig config)
        {
            #region Declarations
            SalesInvoiceLinePayload payload;
            string  id;
            decimal discountPercentage;
            #endregion



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

            payload         = new SalesInvoiceLinePayload();
            payload.LocalID = id;
            //payload.SyncUuid = GetUuid(id, "", SupportedResourceKinds.salesOrderLines);
            payload.SalesInvoiceLinetype.applicationID = id;

            payload.ForeignIds.Add("commodity", row.ProductID.ToString());
            payload.ForeignIds.Add("salesOrder", row.OrderID.ToString());
            payload.ForeignIds.Add("unitOfMeasure", row.ProductID.ToString());

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

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

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

            payload.SalesInvoiceLinetype.discountTotalSpecified = true;
            payload.SalesInvoiceLinetype.discountTotal          = (decimal)payload.SalesInvoiceLinetype.initialPrice * (decimal)payload.SalesInvoiceLinetype.invoiceLineDiscountPercent;

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



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

            return(payload);
        }
コード例 #2
0
        private SalesInvoicePayload GetPayload(DataSets.Order.CalculatedOrdersRow row,
                                               DataSets.Order.CalculatedOrderDetailsDataTable detailDataTable,
                                               //DataSets.Order.DeletedOrderDetailsDataTable deletedOrderDetailsDataTable,
                                               NorthwindConfig config)
        {
            #region Declarations
            SalesInvoicePayload payload;
            string       id;
            CountryCodes countryCodes = new CountryCodes();
            #endregion

            id = row.OrderID.ToString();

            payload          = new SalesInvoicePayload();
            payload.LocalID  = id;
            payload.SyncUuid = GetUuid(id, "", SupportedResourceKinds.salesOrders);
            payload.SalesInvoicetype.active        = true;
            payload.SalesInvoicetype.applicationID = id;

            payload.SalesInvoicetype.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.SalesInvoicetype.date          = row.OrderDate;
                payload.SalesInvoicetype.dateSpecified = true;
            }

            payload.SalesInvoicetype.lineCountSpecified = true;
            payload.SalesInvoicetype.lineCount          = detailDataTable.Rows.Count;

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

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

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

            payload.SalesInvoicetype.grossTotalSpecified = true;
            payload.SalesInvoicetype.grossTotal          = payload.SalesInvoicetype.netTotal;



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



            if (!row.IsShipViaNull())
            {
                payload.SalesInvoicetype.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.SalesInvoicetype.postalAddresses    = new postalAddresstype[1];
            payload.SalesInvoicetype.postalAddresses[0] = address;


            payload.SalesInvoicetype.salesInvoiceLines = new salesInvoiceLinetype[detailDataTable.Rows.Count];
            int index = 0;
            foreach (DataSets.Order.CalculatedOrderDetailsRow detailRow in detailDataTable.Rows)
            {
                SalesInvoiceLinePayload soPayload = GetLineItem(detailRow, config);
                payload.ForeignIds.Add(
                    String.Format("salesInvoiceLines[{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("salesInvoiceLines[{0}]/{1}",
                                          index.ToString(),
                                          key),
                            value);
                    }
                }
                payload.SalesInvoicetype.salesInvoiceLines[index] = soPayload.SalesInvoiceLinetype;
                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);
        }