本文整理汇总了C#中SmartStore.Core.Domain.Orders.Order.GetOrderNumber方法的典型用法代码示例。如果您正苦于以下问题:C# Order.GetOrderNumber方法的具体用法?C# Order.GetOrderNumber怎么用?C# Order.GetOrderNumber使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SmartStore.Core.Domain.Orders.Order
的用法示例。
在下文中一共展示了Order.GetOrderNumber方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AddOrderTokens
//codehint: sm-add end
public virtual void AddOrderTokens(IList<Token> tokens, Order order, int languageId)
{
tokens.Add(new Token("Order.OrderNumber", order.GetOrderNumber()));
tokens.Add(new Token("Order.CustomerFullName", string.Format("{0} {1}", order.BillingAddress.FirstName, order.BillingAddress.LastName)));
tokens.Add(new Token("Order.CustomerEmail", order.BillingAddress.Email));
tokens.Add(new Token("Order.BillingFirstName", order.BillingAddress.FirstName));
tokens.Add(new Token("Order.BillingLastName", order.BillingAddress.LastName));
tokens.Add(new Token("Order.BillingPhoneNumber", order.BillingAddress.PhoneNumber));
tokens.Add(new Token("Order.BillingEmail", order.BillingAddress.Email));
tokens.Add(new Token("Order.BillingFaxNumber", order.BillingAddress.FaxNumber));
tokens.Add(new Token("Order.BillingCompany", order.BillingAddress.Company));
tokens.Add(new Token("Order.BillingAddress1", order.BillingAddress.Address1));
tokens.Add(new Token("Order.BillingAddress2", order.BillingAddress.Address2));
tokens.Add(new Token("Order.BillingCity", order.BillingAddress.City));
tokens.Add(new Token("Order.BillingStateProvince", order.BillingAddress.StateProvince != null ? order.BillingAddress.StateProvince.GetLocalized(x => x.Name) : ""));
tokens.Add(new Token("Order.BillingZipPostalCode", order.BillingAddress.ZipPostalCode));
tokens.Add(new Token("Order.BillingCountry", order.BillingAddress.Country != null ? order.BillingAddress.Country.GetLocalized(x => x.Name) : ""));
tokens.Add(new Token("Order.ShippingMethod", order.ShippingMethod));
tokens.Add(new Token("Order.ShippingFirstName", order.ShippingAddress != null ? order.ShippingAddress.FirstName : ""));
tokens.Add(new Token("Order.ShippingLastName", order.ShippingAddress != null ? order.ShippingAddress.LastName : ""));
tokens.Add(new Token("Order.ShippingPhoneNumber", order.ShippingAddress != null ? order.ShippingAddress.PhoneNumber : ""));
tokens.Add(new Token("Order.ShippingEmail", order.ShippingAddress != null ? order.ShippingAddress.Email : ""));
tokens.Add(new Token("Order.ShippingFaxNumber", order.ShippingAddress != null ? order.ShippingAddress.FaxNumber : ""));
tokens.Add(new Token("Order.ShippingCompany", order.ShippingAddress != null ? order.ShippingAddress.Company : ""));
tokens.Add(new Token("Order.ShippingAddress1", order.ShippingAddress != null ? order.ShippingAddress.Address1 : ""));
tokens.Add(new Token("Order.ShippingAddress2", order.ShippingAddress != null ? order.ShippingAddress.Address2 : ""));
tokens.Add(new Token("Order.ShippingCity", order.ShippingAddress != null ? order.ShippingAddress.City : ""));
tokens.Add(new Token("Order.ShippingStateProvince", order.ShippingAddress != null && order.ShippingAddress.StateProvince != null ? order.ShippingAddress.StateProvince.GetLocalized(x => x.Name) : ""));
tokens.Add(new Token("Order.ShippingZipPostalCode", order.ShippingAddress != null ? order.ShippingAddress.ZipPostalCode : ""));
tokens.Add(new Token("Order.ShippingCountry", order.ShippingAddress != null && order.ShippingAddress.Country != null ? order.ShippingAddress.Country.GetLocalized(x => x.Name) : ""));
var paymentMethod = _paymentService.LoadPaymentMethodBySystemName(order.PaymentMethodSystemName);
var paymentMethodName = paymentMethod != null ? GetLocalizedValue(paymentMethod.Metadata, "FriendlyName", x => x.FriendlyName) : order.PaymentMethodSystemName;
tokens.Add(new Token("Order.PaymentMethod", paymentMethodName));
tokens.Add(new Token("Order.VatNumber", order.VatNumber));
tokens.Add(new Token("Order.Product(s)", ProductListToHtmlTable(order, languageId), true));
tokens.Add(new Token("Order.CustomerComment", order.CustomerOrderComment, true));
var language = _languageService.GetLanguageById(languageId);
if (language != null && !String.IsNullOrEmpty(language.LanguageCulture))
{
DateTime createdOn = _dateTimeHelper.ConvertToUserTime(order.CreatedOnUtc, TimeZoneInfo.Utc, _dateTimeHelper.GetCustomerTimeZone(order.Customer));
tokens.Add(new Token("Order.CreatedOn", createdOn.ToString("D", new CultureInfo(language.LanguageCulture))));
}
else
{
tokens.Add(new Token("Order.CreatedOn", order.CreatedOnUtc.ToString("D")));
}
//TODO add a method for getting URL (use routing because it handles all SEO friendly URLs)
tokens.Add(new Token("Order.OrderURLForCustomer", string.Format("{0}order/details/{1}", _webHelper.GetStoreLocation(false), order.Id), true));
tokens.Add(new Token("Order.Disclaimer", TopicToHtml("Disclaimer", languageId), true));
tokens.Add(new Token("Order.ConditionsOfUse", TopicToHtml("ConditionsOfUse", languageId), true));
//event notification
_eventPublisher.EntityTokensAdded(order, tokens);
}
示例2: ReduceRewardPoints
/// <summary>
/// Reduce reward points
/// </summary>
/// <param name="order">Order</param>
/// <param name="amount">The amount. OrderTotal is used if null.</param>
protected void ReduceRewardPoints(Order order, decimal? amount = null)
{
if (!_rewardPointsSettings.Enabled)
return;
if (_rewardPointsSettings.PointsForPurchases_Amount <= decimal.Zero)
return;
//ensure that reward points were already earned for this order before
if (!order.RewardPointsWereAdded)
return;
//Ensure that reward points are applied only to registered users
if (order.Customer == null || order.Customer.IsGuest())
return;
// Truncate increases the risk of inaccuracy of rounding
//int points = (int)Math.Truncate((amount ?? order.OrderTotal) / _rewardPointsSettings.PointsForPurchases_Amount * _rewardPointsSettings.PointsForPurchases_Points);
int points = (int)Math.Round((amount ?? order.OrderTotal) / _rewardPointsSettings.PointsForPurchases_Amount * _rewardPointsSettings.PointsForPurchases_Points);
if (order.RewardPointsRemaining.HasValue && order.RewardPointsRemaining.Value < points)
points = order.RewardPointsRemaining.Value;
if (points == 0)
return;
//reduce reward points
order.Customer.AddRewardPointsHistoryEntry(-points, string.Format(_localizationService.GetResource("RewardPoints.Message.ReducedForOrder"), order.GetOrderNumber()));
if (!order.RewardPointsRemaining.HasValue)
order.RewardPointsRemaining = (int)Math.Round(order.OrderTotal / _rewardPointsSettings.PointsForPurchases_Amount * _rewardPointsSettings.PointsForPurchases_Points);
order.RewardPointsRemaining = Math.Max(order.RewardPointsRemaining.Value - points, 0);
_orderService.UpdateOrder(order);
}
示例3: Capture
/// <summary>
/// Capture an order (from admin panel)
/// </summary>
/// <param name="order">Order</param>
/// <returns>A list of errors; empty list if no errors</returns>
public virtual IList<string> Capture(Order order)
{
if (order == null)
throw new ArgumentNullException("order");
if (!CanCapture(order))
throw new SmartException("Cannot do capture for order.");
var request = new CapturePaymentRequest();
CapturePaymentResult result = null;
try
{
//old info from placing order
request.Order = order;
result = _paymentService.Capture(request);
if (result.Success)
{
var paidDate = order.PaidDateUtc;
if (result.NewPaymentStatus == PaymentStatus.Paid)
paidDate = DateTime.UtcNow;
order.CaptureTransactionId = result.CaptureTransactionId;
order.CaptureTransactionResult = result.CaptureTransactionResult;
order.PaymentStatus = result.NewPaymentStatus;
order.PaidDateUtc = paidDate;
_orderService.UpdateOrder(order);
//add a note
order.OrderNotes.Add(new OrderNote()
{
Note = T("OrderCaptured"),
DisplayToCustomer = false,
CreatedOnUtc = DateTime.UtcNow
});
_orderService.UpdateOrder(order);
CheckOrderStatus(order);
//raise event
if (order.PaymentStatus == PaymentStatus.Paid)
{
_eventPublisher.PublishOrderPaid(order);
}
}
}
catch (Exception exc)
{
if (result == null)
result = new CapturePaymentResult();
result.AddError(string.Format("Error: {0}. Full exception: {1}", exc.Message, exc.ToString()));
}
//process errors
string error = "";
for (int i = 0; i < result.Errors.Count; i++)
{
error += string.Format("Error {0}: {1}", i, result.Errors[i]);
if (i != result.Errors.Count - 1)
error += ". ";
}
if (!String.IsNullOrEmpty(error))
{
//add a note
order.OrderNotes.Add(new OrderNote()
{
Note = string.Format("Unable to capture order. {0}", error),
DisplayToCustomer = false,
CreatedOnUtc = DateTime.UtcNow
});
_orderService.UpdateOrder(order);
//log it
string logError = string.Format(T("OrderCaptureError"), order.GetOrderNumber(), error);
_logger.InsertLog(LogLevel.Error, logError, logError);
}
return result.Errors;
}
示例4: Void
/// <summary>
/// Voids order (from admin panel)
/// </summary>
/// <param name="order">Order</param>
/// <returns>Voided order</returns>
public virtual IList<string> Void(Order order)
{
if (order == null)
throw new ArgumentNullException("order");
if (!CanVoid(order))
throw new SmartException("Cannot do void for order.");
var request = new VoidPaymentRequest();
VoidPaymentResult result = null;
try
{
request.Order = order;
result = _paymentService.Void(request);
if (result.Success)
{
//update order info
order.PaymentStatus = result.NewPaymentStatus;
_orderService.UpdateOrder(order);
//add a note
order.OrderNotes.Add(new OrderNote()
{
Note = T("OrderVoided"),
DisplayToCustomer = false,
CreatedOnUtc = DateTime.UtcNow
});
_orderService.UpdateOrder(order);
//check order status
CheckOrderStatus(order);
}
}
catch (Exception exc)
{
if (result == null)
result = new VoidPaymentResult();
result.AddError(string.Format("Error: {0}. Full exception: {1}", exc.Message, exc.ToString()));
}
//process errors
string error = "";
for (int i = 0; i < result.Errors.Count; i++)
{
error += string.Format("Error {0}: {1}", i, result.Errors[i]);
if (i != result.Errors.Count - 1)
error += ". ";
}
if (!String.IsNullOrEmpty(error))
{
//add a note
order.OrderNotes.Add(new OrderNote()
{
Note = string.Format(T("OrderVoidError"), error),
DisplayToCustomer = false,
CreatedOnUtc = DateTime.UtcNow
});
_orderService.UpdateOrder(order);
//log it
string logError = string.Format("Error voiding order '{0}'. Error: {1}", order.GetOrderNumber(), error);
_logger.InsertLog(LogLevel.Error, logError, logError);
}
return result.Errors;
}
示例5: AwardRewardPoints
/// <summary>
/// Award reward points
/// </summary>
/// <param name="order">Order</param>
/// <param name="amount">The amount. OrderTotal is used if null.</param>
protected void AwardRewardPoints(Order order, decimal? amount = null)
{
if (!_rewardPointsSettings.Enabled)
return;
if (_rewardPointsSettings.PointsForPurchases_Amount <= decimal.Zero)
return;
//Ensure that reward points are applied only to registered users
if (order.Customer == null || order.Customer.IsGuest())
return;
//Ensure that reward points were not added before. We should not add reward points if they were already earned for this order
if (order.RewardPointsWereAdded)
return;
// Truncate increases the risk of inaccuracy of rounding
//int points = (int)Math.Truncate((amount ?? order.OrderTotal) / _rewardPointsSettings.PointsForPurchases_Amount * _rewardPointsSettings.PointsForPurchases_Points);
// why are points awarded for OrderTotal? wouldn't be OrderSubtotalInclTax better?
int points = (int)Math.Round((amount ?? order.OrderTotal) / _rewardPointsSettings.PointsForPurchases_Amount * _rewardPointsSettings.PointsForPurchases_Points);
if (points == 0)
return;
//add reward points
order.Customer.AddRewardPointsHistoryEntry(points, string.Format(_localizationService.GetResource("RewardPoints.Message.EarnedForOrder"), order.GetOrderNumber()));
order.RewardPointsWereAdded = true;
_orderService.UpdateOrder(order);
}
示例6: PartiallyRefund
/// <summary>
/// Partially refunds an order (from admin panel)
/// </summary>
/// <param name="order">Order</param>
/// <param name="amountToRefund">Amount to refund</param>
/// <returns>A list of errors; empty list if no errors</returns>
public virtual IList<string> PartiallyRefund(Order order, decimal amountToRefund)
{
if (order == null)
throw new ArgumentNullException("order");
if (!CanPartiallyRefund(order, amountToRefund))
throw new SmartException("Cannot do partial refund for order.");
var request = new RefundPaymentRequest();
RefundPaymentResult result = null;
try
{
request.Order = order;
request.AmountToRefund = amountToRefund;
request.IsPartialRefund = true;
result = _paymentService.Refund(request);
if (result.Success)
{
//total amount refunded
decimal totalAmountRefunded = order.RefundedAmount + amountToRefund;
//update order info
order.RefundedAmount = totalAmountRefunded;
order.PaymentStatus = result.NewPaymentStatus;
_orderService.UpdateOrder(order);
//add a note
order.OrderNotes.Add(new OrderNote()
{
Note = string.Format(T("OrderPartiallyRefunded"), _priceFormatter.FormatPrice(amountToRefund, true, false)),
DisplayToCustomer = false,
CreatedOnUtc = DateTime.UtcNow
});
_orderService.UpdateOrder(order);
//check order status
CheckOrderStatus(order);
}
}
catch (Exception exc)
{
if (result == null)
result = new RefundPaymentResult();
result.AddError(string.Format("Error: {0}. Full exception: {1}", exc.Message, exc.ToString()));
}
//process errors
string error = "";
for (int i = 0; i < result.Errors.Count; i++)
{
error += string.Format("Error {0}: {1}", i, result.Errors[i]);
if (i != result.Errors.Count - 1)
error += ". ";
}
if (!String.IsNullOrEmpty(error))
{
//add a note
order.OrderNotes.Add(new OrderNote()
{
Note = string.Format(T("OrderPartiallyRefundError"), error),
DisplayToCustomer = false,
CreatedOnUtc = DateTime.UtcNow
});
_orderService.UpdateOrder(order);
//log it
string logError = string.Format("Error refunding order '{0}'. Error: {1}", order.GetOrderNumber(), error);
_logger.InsertLog(LogLevel.Error, logError, logError);
}
return result.Errors;
}
示例7: PlaceOrder
//.........这里部分代码省略.........
{
var duh = new DiscountUsageHistory()
{
Discount = discount,
Order = order,
CreatedOnUtc = utcNow
};
_discountService.InsertDiscountUsageHistory(duh);
}
}
//gift card usage history
if (!processPaymentRequest.IsRecurringPayment && appliedGiftCards != null)
{
foreach (var agc in appliedGiftCards)
{
decimal amountUsed = agc.AmountCanBeUsed;
var gcuh = new GiftCardUsageHistory()
{
GiftCard = agc.GiftCard,
UsedWithOrder = order,
UsedValue = amountUsed,
CreatedOnUtc = utcNow
};
agc.GiftCard.GiftCardUsageHistory.Add(gcuh);
_giftCardService.UpdateGiftCard(agc.GiftCard);
}
}
//reward points history
if (redeemedRewardPointsAmount > decimal.Zero)
{
customer.AddRewardPointsHistoryEntry(-redeemedRewardPoints,
string.Format(_localizationService.GetResource("RewardPoints.Message.RedeemedForOrder", order.CustomerLanguageId), order.GetOrderNumber()),
order,
redeemedRewardPointsAmount);
_customerService.UpdateCustomer(customer);
}
//recurring orders
if (!processPaymentRequest.IsRecurringPayment && isRecurringShoppingCart)
{
//create recurring payment (the first payment)
var rp = new RecurringPayment()
{
CycleLength = processPaymentRequest.RecurringCycleLength,
CyclePeriod = processPaymentRequest.RecurringCyclePeriod,
TotalCycles = processPaymentRequest.RecurringTotalCycles,
StartDateUtc = utcNow,
IsActive = true,
CreatedOnUtc = utcNow,
InitialOrder = order,
};
_orderService.InsertRecurringPayment(rp);
var recurringPaymentType = _paymentService.GetRecurringPaymentType(processPaymentRequest.PaymentMethodSystemName);
switch (recurringPaymentType)
{
case RecurringPaymentType.NotSupported:
{
//not supported
}
break;
case RecurringPaymentType.Manual:
{
//first payment
示例8: PrepareOrderDetailsModel
protected OrderDetailsModel PrepareOrderDetailsModel(Order order)
{
if (order == null)
throw new ArgumentNullException("order");
var store = _storeService.GetStoreById(order.StoreId) ?? _services.StoreContext.CurrentStore;
var orderSettings = _services.Settings.LoadSetting<OrderSettings>(store.Id);
var catalogSettings = _services.Settings.LoadSetting<CatalogSettings>(store.Id);
var taxSettings = _services.Settings.LoadSetting<TaxSettings>(store.Id);
var pdfSettings = _services.Settings.LoadSetting<PdfSettings>(store.Id);
var addressSettings = _services.Settings.LoadSetting<AddressSettings>(store.Id);
var companyInfoSettings = _services.Settings.LoadSetting<CompanyInformationSettings>(store.Id);
var model = new OrderDetailsModel();
model.MerchantCompanyInfo = companyInfoSettings;
model.Id = order.Id;
model.StoreId = order.StoreId;
model.OrderNumber = order.GetOrderNumber();
model.CreatedOn = _dateTimeHelper.ConvertToUserTime(order.CreatedOnUtc, DateTimeKind.Utc);
model.OrderStatus = order.OrderStatus.GetLocalizedEnum(_services.Localization, _services.WorkContext);
model.IsReOrderAllowed = orderSettings.IsReOrderAllowed;
model.IsReturnRequestAllowed = _orderProcessingService.IsReturnRequestAllowed(order);
model.DisplayPdfInvoice = pdfSettings.Enabled;
model.RenderOrderNotes = pdfSettings.RenderOrderNotes;
//shipping info
model.ShippingStatus = order.ShippingStatus.GetLocalizedEnum(_services.Localization, _services.WorkContext);
if (order.ShippingStatus != ShippingStatus.ShippingNotRequired)
{
model.IsShippable = true;
model.ShippingAddress.PrepareModel(order.ShippingAddress, false, addressSettings);
model.ShippingMethod = order.ShippingMethod;
//shipments (only already shipped)
var shipments = order.Shipments.Where(x => x.ShippedDateUtc.HasValue).OrderBy(x => x.CreatedOnUtc).ToList();
foreach (var shipment in shipments)
{
var shipmentModel = new OrderDetailsModel.ShipmentBriefModel
{
Id = shipment.Id,
TrackingNumber = shipment.TrackingNumber,
};
if (shipment.ShippedDateUtc.HasValue)
shipmentModel.ShippedDate = _dateTimeHelper.ConvertToUserTime(shipment.ShippedDateUtc.Value, DateTimeKind.Utc);
if (shipment.DeliveryDateUtc.HasValue)
shipmentModel.DeliveryDate = _dateTimeHelper.ConvertToUserTime(shipment.DeliveryDateUtc.Value, DateTimeKind.Utc);
model.Shipments.Add(shipmentModel);
}
}
//billing info
model.BillingAddress.PrepareModel(order.BillingAddress, false, addressSettings);
//VAT number
model.VatNumber = order.VatNumber;
//payment method
var paymentMethod = _paymentService.LoadPaymentMethodBySystemName(order.PaymentMethodSystemName);
model.PaymentMethod = paymentMethod != null ? _pluginMediator.GetLocalizedFriendlyName(paymentMethod.Metadata) : order.PaymentMethodSystemName;
model.CanRePostProcessPayment = _paymentService.CanRePostProcessPayment(order);
//purchase order number (we have to find a better to inject this information because it's related to a certain plugin)
if (paymentMethod != null && paymentMethod.Metadata.SystemName.Equals("Payments.PurchaseOrder", StringComparison.InvariantCultureIgnoreCase))
{
model.DisplayPurchaseOrderNumber = true;
model.PurchaseOrderNumber = order.PurchaseOrderNumber;
}
// totals
switch (order.CustomerTaxDisplayType)
{
case TaxDisplayType.ExcludingTax:
{
//order subtotal
var orderSubtotalExclTaxInCustomerCurrency = _currencyService.ConvertCurrency(order.OrderSubtotalExclTax, order.CurrencyRate);
model.OrderSubtotal = _priceFormatter.FormatPrice(orderSubtotalExclTaxInCustomerCurrency, true, order.CustomerCurrencyCode, _services.WorkContext.WorkingLanguage, false, false);
//discount (applied to order subtotal)
var orderSubTotalDiscountExclTaxInCustomerCurrency = _currencyService.ConvertCurrency(order.OrderSubTotalDiscountExclTax, order.CurrencyRate);
if (orderSubTotalDiscountExclTaxInCustomerCurrency > decimal.Zero)
{
model.OrderSubTotalDiscount = _priceFormatter.FormatPrice(-orderSubTotalDiscountExclTaxInCustomerCurrency, true,
order.CustomerCurrencyCode, _services.WorkContext.WorkingLanguage, false, false);
}
//order shipping
var orderShippingExclTaxInCustomerCurrency = _currencyService.ConvertCurrency(order.OrderShippingExclTax, order.CurrencyRate);
model.OrderShipping = _priceFormatter.FormatShippingPrice(orderShippingExclTaxInCustomerCurrency, true, order.CustomerCurrencyCode, _services.WorkContext.WorkingLanguage, false, false);
//payment method additional fee
var paymentMethodAdditionalFeeExclTaxInCustomerCurrency = _currencyService.ConvertCurrency(order.PaymentMethodAdditionalFeeExclTax, order.CurrencyRate);
if (paymentMethodAdditionalFeeExclTaxInCustomerCurrency != decimal.Zero)
model.PaymentMethodAdditionalFee = _priceFormatter.FormatPaymentMethodAdditionalFee(paymentMethodAdditionalFeeExclTaxInCustomerCurrency, true, order.CustomerCurrencyCode, _services.WorkContext.WorkingLanguage, false, false);
}
break;
//.........这里部分代码省略.........
示例9: GetEcommerceScript
private string GetEcommerceScript(Order order)
{
var googleAnalyticsSettings = _settingService.LoadSetting<GoogleAnalyticsSettings>(_storeContext.CurrentStore.Id);
var usCulture = new CultureInfo("en-US");
string analyticsTrackingScript = "";
analyticsTrackingScript = googleAnalyticsSettings.TrackingScript + "\n";
analyticsTrackingScript = analyticsTrackingScript.Replace("{GOOGLEID}", googleAnalyticsSettings.GoogleId);
string analyticsEcommerceScript = "";
if (order != null)
{
analyticsEcommerceScript = googleAnalyticsSettings.EcommerceScript + "\n";
analyticsEcommerceScript = analyticsEcommerceScript.Replace("{GOOGLEID}", googleAnalyticsSettings.GoogleId);
analyticsEcommerceScript = analyticsEcommerceScript.Replace("{ORDERID}", order.GetOrderNumber());
analyticsEcommerceScript = analyticsEcommerceScript.Replace("{SITE}", _storeContext.CurrentStore.Url.Replace("http://", "").Replace("/", ""));
analyticsEcommerceScript = analyticsEcommerceScript.Replace("{TOTAL}", order.OrderTotal.ToString("0.00", usCulture));
analyticsEcommerceScript = analyticsEcommerceScript.Replace("{TAX}", order.OrderTax.ToString("0.00", usCulture));
analyticsEcommerceScript = analyticsEcommerceScript.Replace("{SHIP}", order.OrderShippingInclTax.ToString("0.00", usCulture));
analyticsEcommerceScript = analyticsEcommerceScript.Replace("{CITY}", order.BillingAddress == null ? "" : FixIllegalJavaScriptChars(order.BillingAddress.City));
analyticsEcommerceScript = analyticsEcommerceScript.Replace("{STATEPROVINCE}", order.BillingAddress == null || order.BillingAddress.StateProvince == null ? "" : FixIllegalJavaScriptChars(order.BillingAddress.StateProvince.Name));
analyticsEcommerceScript = analyticsEcommerceScript.Replace("{COUNTRY}", order.BillingAddress == null || order.BillingAddress.Country == null ? "" : FixIllegalJavaScriptChars(order.BillingAddress.Country.Name));
analyticsEcommerceScript = analyticsEcommerceScript.Replace("{CURRENCY}", order.CustomerCurrencyCode);
var sb = new StringBuilder();
foreach (var item in order.OrderItems)
{
string analyticsEcommerceDetailScript = googleAnalyticsSettings.EcommerceDetailScript;
//get category
string categ = "";
var defaultProductCategory = _categoryService.GetProductCategoriesByProductId(item.ProductId).FirstOrDefault();
if (defaultProductCategory != null)
categ = defaultProductCategory.Category.Name;
analyticsEcommerceDetailScript = analyticsEcommerceDetailScript.Replace("{ORDERID}", order.GetOrderNumber());
//The SKU code is a required parameter for every item that is added to the transaction
item.Product.MergeWithCombination(item.AttributesXml);
analyticsEcommerceDetailScript = analyticsEcommerceDetailScript.Replace("{PRODUCTSKU}", FixIllegalJavaScriptChars(item.Product.Sku));
analyticsEcommerceDetailScript = analyticsEcommerceDetailScript.Replace("{PRODUCTNAME}", FixIllegalJavaScriptChars(item.Product.Name));
analyticsEcommerceDetailScript = analyticsEcommerceDetailScript.Replace("{CATEGORYNAME}", FixIllegalJavaScriptChars(categ));
analyticsEcommerceDetailScript = analyticsEcommerceDetailScript.Replace("{UNITPRICE}", item.UnitPriceInclTax.ToString("0.00", usCulture));
analyticsEcommerceDetailScript = analyticsEcommerceDetailScript.Replace("{QUANTITY}", item.Quantity.ToString());
sb.AppendLine(analyticsEcommerceDetailScript);
}
analyticsEcommerceScript = analyticsEcommerceScript.Replace("{DETAILS}", sb.ToString());
analyticsTrackingScript = analyticsTrackingScript.Replace("{ECOMMERCE}", analyticsEcommerceScript);
}
return analyticsTrackingScript;
}
示例10: PrepareOrderDetailsModel
protected void PrepareOrderDetailsModel(OrderModel model, Order order)
{
if (order == null)
throw new ArgumentNullException("order");
if (model == null)
throw new ArgumentNullException("model");
var store = _storeService.GetStoreById(order.StoreId);
var primaryStoreCurrency = _currencyService.GetCurrencyById(_currencySettings.PrimaryStoreCurrencyId);
model.Id = order.Id;
model.OrderStatus = order.OrderStatus.GetLocalizedEnum(_localizationService, _workContext);
model.OrderNumber = order.GetOrderNumber();
model.OrderGuid = order.OrderGuid;
model.StoreName = (store != null ? store.Name : "".NaIfEmpty());
model.CustomerId = order.CustomerId;
model.CustomerName = order.Customer.GetFullName();
model.CustomerIp = order.CustomerIp;
model.VatNumber = order.VatNumber;
model.CreatedOn = _dateTimeHelper.ConvertToUserTime(order.CreatedOnUtc, DateTimeKind.Utc);
model.UpdatedOn = _dateTimeHelper.ConvertToUserTime(order.UpdatedOnUtc, DateTimeKind.Utc);
model.DisplayPdfInvoice = _pdfSettings.Enabled;
model.AllowCustomersToSelectTaxDisplayType = _taxSettings.AllowCustomersToSelectTaxDisplayType;
model.TaxDisplayType = _taxSettings.TaxDisplayType;
model.AffiliateId = order.AffiliateId;
model.CustomerComment = order.CustomerOrderComment;
if (order.AffiliateId != 0)
{
var affiliate = _affiliateService.GetAffiliateById(order.AffiliateId);
if (affiliate != null && affiliate.Address != null)
model.AffiliateFullName = affiliate.Address.GetFullName();
}
#region Order totals
//subtotal
model.OrderSubtotalInclTax = _priceFormatter.FormatPrice(order.OrderSubtotalInclTax, true, primaryStoreCurrency, _workContext.WorkingLanguage, true);
model.OrderSubtotalExclTax = _priceFormatter.FormatPrice(order.OrderSubtotalExclTax, true, primaryStoreCurrency, _workContext.WorkingLanguage, false);
model.OrderSubtotalInclTaxValue = order.OrderSubtotalInclTax;
model.OrderSubtotalExclTaxValue = order.OrderSubtotalExclTax;
//discount (applied to order subtotal)
string orderSubtotalDiscountInclTaxStr = _priceFormatter.FormatPrice(order.OrderSubTotalDiscountInclTax, true, primaryStoreCurrency, _workContext.WorkingLanguage, true);
string orderSubtotalDiscountExclTaxStr = _priceFormatter.FormatPrice(order.OrderSubTotalDiscountExclTax, true, primaryStoreCurrency, _workContext.WorkingLanguage, false);
if (order.OrderSubTotalDiscountInclTax > decimal.Zero)
model.OrderSubTotalDiscountInclTax = orderSubtotalDiscountInclTaxStr;
if (order.OrderSubTotalDiscountExclTax > decimal.Zero)
model.OrderSubTotalDiscountExclTax = orderSubtotalDiscountExclTaxStr;
model.OrderSubTotalDiscountInclTaxValue = order.OrderSubTotalDiscountInclTax;
model.OrderSubTotalDiscountExclTaxValue = order.OrderSubTotalDiscountExclTax;
//shipping
model.OrderShippingInclTax = _priceFormatter.FormatShippingPrice(order.OrderShippingInclTax, true, primaryStoreCurrency, _workContext.WorkingLanguage, true);
model.OrderShippingExclTax = _priceFormatter.FormatShippingPrice(order.OrderShippingExclTax, true, primaryStoreCurrency, _workContext.WorkingLanguage, false);
model.OrderShippingInclTaxValue = order.OrderShippingInclTax;
model.OrderShippingExclTaxValue = order.OrderShippingExclTax;
//payment method additional fee
if (order.PaymentMethodAdditionalFeeInclTax != decimal.Zero)
{
model.PaymentMethodAdditionalFeeInclTax = _priceFormatter.FormatPaymentMethodAdditionalFee(order.PaymentMethodAdditionalFeeInclTax, true,
primaryStoreCurrency, _workContext.WorkingLanguage, true);
model.PaymentMethodAdditionalFeeExclTax = _priceFormatter.FormatPaymentMethodAdditionalFee(order.PaymentMethodAdditionalFeeExclTax, true,
primaryStoreCurrency, _workContext.WorkingLanguage, false);
}
model.PaymentMethodAdditionalFeeInclTaxValue = order.PaymentMethodAdditionalFeeInclTax;
model.PaymentMethodAdditionalFeeExclTaxValue = order.PaymentMethodAdditionalFeeExclTax;
//tax
model.Tax = _priceFormatter.FormatPrice(order.OrderTax, true, false);
SortedDictionary<decimal, decimal> taxRates = order.TaxRatesDictionary;
bool displayTaxRates = _taxSettings.DisplayTaxRates && taxRates.Count > 0;
bool displayTax = !displayTaxRates;
foreach (var tr in order.TaxRatesDictionary)
{
model.TaxRates.Add(new OrderModel.TaxRate()
{
Rate = _priceFormatter.FormatTaxRate(tr.Key),
Value = _priceFormatter.FormatPrice(tr.Value, true, false),
});
}
model.DisplayTaxRates = displayTaxRates;
model.DisplayTax = displayTax;
model.TaxValue = order.OrderTax;
model.TaxRatesValue = order.TaxRates;
//discount
if (order.OrderDiscount > 0)
model.OrderTotalDiscount = _priceFormatter.FormatPrice(-order.OrderDiscount, true, false);
model.OrderTotalDiscountValue = order.OrderDiscount;
//gift cards
foreach (var gcuh in order.GiftCardUsageHistory)
{
model.GiftCards.Add(new OrderModel.GiftCard()
{
CouponCode = gcuh.GiftCard.GiftCardCouponCode,
Amount = _priceFormatter.FormatPrice(-gcuh.UsedValue, true, false),
});
//.........这里部分代码省略.........
示例11: ReduceRewardPoints
/// <summary>
/// Award reward points
/// </summary>
/// <param name="order">Order</param>
protected void ReduceRewardPoints(Order order)
{
if (!_rewardPointsSettings.Enabled)
return;
if (_rewardPointsSettings.PointsForPurchases_Amount <= decimal.Zero)
return;
//Ensure that reward points are applied only to registered users
if (order.Customer == null || order.Customer.IsGuest())
return;
int points = (int)Math.Truncate(order.OrderTotal / _rewardPointsSettings.PointsForPurchases_Amount * _rewardPointsSettings.PointsForPurchases_Points);
if (points == 0)
return;
//ensure that reward points were already earned for this order before
if (!order.RewardPointsWereAdded)
return;
//reduce reward points
order.Customer.AddRewardPointsHistoryEntry(-points, string.Format(_localizationService.GetResource("RewardPoints.Message.ReducedForOrder"), order.GetOrderNumber()));
_orderService.UpdateOrder(order);
}
示例12: ProcessErrors
private void ProcessErrors(Order order, IList<string> errors, string messageKey)
{
if (errors.Any())
{
var msg = string.Concat(T(messageKey, order.GetOrderNumber()), " ", string.Join(" ", errors));
_orderService.AddOrderNote(order, msg);
_logger.InsertLog(LogLevel.Error, msg, msg);
}
}