@inherits Dynamicweb.Rendering.RazorTemplateBase> @using System.Collections @using System.Linq @functions { Dynamicweb.Content.Paragraph shoppingCart; private Dynamicweb.Content.Paragraph GetShoppingCartApp() { var cartParagraph = Dynamicweb.Services.Paragraphs.GetParagraphsByItemTypes(new[] { "Swift_CartApp" }).FirstOrDefault(p => p.Page.Active); if (cartParagraph == null) return null; var checkoutPageId = Dynamicweb.Core.Converter.ToInt32(Pageview.User != null ? cartParagraph.Item["CheckoutSignedInPageLink"] : cartParagraph.Item["CheckoutAnonymousPageLink"]); return Dynamicweb.Services.Paragraphs.GetParagraphsByPageId(checkoutPageId)?.FirstOrDefault(p => p.ItemType.Equals("Swift_CheckoutApp")); } private string GetPaymentTypeAvailability(string paymentMethodId) { if (shoppingCart == null) return "Cannot find active Shopping Cart App"; var selectAll = Dynamicweb.Core.Converter.ToBoolean(shoppingCart.ModuleProperties["SelectAllPayments"]); return selectAll ? "True" : Dynamicweb.Core.Converter.ToString(shoppingCart.ModuleProperties["PaymetTypes"].Contains(paymentMethodId)); } private string GetShippingTypeAvailability(string shippingMethodId) { if (shoppingCart == null) return "Cannot find active Shopping Cart App"; var selectAll = Dynamicweb.Core.Converter.ToBoolean(shoppingCart.ModuleProperties["SelectAllDeliveries"]); return selectAll ? "True" : Dynamicweb.Core.Converter.ToString(shoppingCart.ModuleProperties["DeliveryTypes"].Contains(shippingMethodId)); } }
@if (Dynamicweb.Ecommerce.Common.Context.Cart != null || Dynamicweb.Context.Current.Request["OrderID"] != null) { shoppingCart = GetShoppingCartApp();

@Translate("Cart Cheat Sheet")

@Translate("Hover over text for more details")

@Translate("Cart ID"): @GetString("Ecom:Order.ID")

@foreach (var orderline in GetLoop("OrderLines")) { var rowCssClass = orderline.GetBoolean("Ecom:Order:OrderLine.IsDiscount") ? "bg-secondary text-white" : orderline.GetBoolean("Ecom:Order:OrderLine.IsTax") ? "bg-light text-dark" : "bg-primary text-white"; var isDiscount = orderline.GetBoolean("Ecom:Order:OrderLine.IsDiscount"); var discountText = isDiscount ? $"{Translate("DISCOUNT")}: " : ""; var orderlineTypeName = ""; var orderlineType = orderline.GetInteger("Ecom:Order:OrderLine.Type"); var orderlineTypeEnum = (Dynamicweb.Ecommerce.Orders.OrderLineType)orderlineType; orderlineTypeName = orderlineTypeEnum.ToString(); var isChildOrderline = !string.IsNullOrEmpty(orderline.GetString("Ecom:Order:OrderLine.ParentLineID")); var productNameIndent = isChildOrderline ? "ps-4" : ""; var hasDiscount = (!isDiscount && orderline.GetDouble("Ecom:Order:OrderLine.UnitPrice.PriceWithVAT.Value") != orderline.GetDouble("Ecom:Product.Discount.Price.PriceWithVAT.Value")); if (orderlineTypeEnum == Dynamicweb.Ecommerce.Orders.OrderLineType.Tax) { hasDiscount = false; } }
@Translate("Name") @Translate("Qty") @Translate("Unit price") @Translate("Total price")
@Translate("Original") @Translate("Discount") @Translate("With Discount / Price") @Translate("Original") @Translate("Discount") @Translate("With Discount / Price")
@if (isDiscount) { @discountText @orderline.GetString("Ecom:Order:OrderLine.ProductName") } else { @orderline.GetString("Ecom:Order:OrderLine.ProductName")
@orderline.GetString("Ecom:Order:OrderLine.ProductNumber") - @orderline.GetString("Ecom:Order:OrderLine.ProductVariantText") foreach (var productDiscount in orderline.GetLoop("ProductDiscounts")) {
@Translate("DISCOUNT"): "@productDiscount.GetString("Ecom:Product.Discount.Name")": @productDiscount.GetString("Ecom:Product.Discount.Amount.PriceWithVATFormatted") @{ if (productDiscount.GetString("Ecom:Product.Discount.Type") == "PERCENT") { (@productDiscount.GetString("Ecom:Product.Discount.PercentWithVAT")%) } } } }
@Translate("Orderline type"): @orderlineTypeName (@orderlineType)
@Translate("Orderline Id"): @orderline.GetString("Ecom:Order:OrderLine.Id") @if (isChildOrderline) {
@Translate("Parent Orderline Id"): @orderline.GetString("Ecom:Order:OrderLine.ParentLineID") }
@orderline.GetString("Ecom:Order:OrderLine.Quantity") @RenderPrices(orderline, "Ecom:Order:OrderLine.UnitPrice", false, true) @RenderPrices(orderline, "Ecom:Product.Discount.TotalAmount", isDiscount, hasDiscount) @RenderPrices(orderline, "Ecom:Product.Discount.Price", isDiscount, hasDiscount) @RenderPrices(orderline, "Ecom:Order:OrderLine.Price", isDiscount, true) @{ if (isDiscount) { @RenderPrices(orderline, "Ecom:Order:OrderLine.TotalPriceWithProductDiscounts", false, true) } else { @RenderPrices(orderline, "Ecom:Order:OrderLine.TotalDiscount", false, true) } } @RenderPrices(orderline, "Ecom:Order:OrderLine.TotalPriceWithProductDiscounts", isDiscount, true)
@Translate("Total of original price / Total product discounts / Total with all product discounts*")
@Translate("*Price after product discounts, before order discounts, fees and taxes")
@RenderPrices("Ecom:Order.TotalPriceWithoutDiscountsFeesAndTaxes") @RenderPrices("Ecom:Order.TotalProductDiscount") @Dynamicweb.Ecommerce.Services.Currencies.Format(Dynamicweb.Ecommerce.Common.Context.Currency, (GetDouble("Ecom:Order.TotalPriceWithoutDiscountsFeesAndTaxes.Price.Value") + GetDouble("Ecom:Order.TotalProductDiscount.Price.Value")), true)
@Translate("NO AVAILABLE TAG")
@Translate("CALCULATED PRICE")
@Translate("Order discount total")
@Translate("Sum of all order discounts (inclusive and exclusive)")
@RenderPrices("Ecom:Order.TotalOrderDiscount")
@Translate("Sub totals")
@Translate("Sum of all original prices, discounts and discounted price. Before fees and taxes")
@RenderPrices("Ecom:Order.TotalPriceWithoutDiscountsFeesAndTaxes") @RenderPrices("Ecom:Order.TotalDiscount") @RenderPrices("Ecom:Order.TotalPriceWithoutFeesAndTaxes")
@Translate("Payment")
@GetString("Ecom:Order.PaymentMethod")
@RenderPrices("Ecom:Order.PaymentFee")
@Translate("Shipping")
@GetString("Ecom:Order.ShippingMethod")
@RenderPrices("Ecom:Order.ShippingFee")
@Translate("Taxes")
@RenderPrices("Ecom:Order.Taxes.Total")
@Translate("Total") (Ecom:Order.Price)
@Translate("This is the order.Price and what counts!")
@RenderPrices("Ecom:Order.Price")
@Translate("Product orderline") @Translate("Discount orderline") @Translate("Tax orderline") @Translate("Product discount price") @Translate("Order discount price") @Translate("Product price - with or without discount") @Translate("Subtotals of product prices, discounts and product prices with discount - before any fees") @Translate("Total order price with discounts, vat, taxes, fees and all.")

@Translate("Billing Address")

@RenderAddress("Ecom:Order.Customer")

@Translate("Shipping/Delivery Address")

@RenderAddress("Ecom:Order.Delivery")

@Translate("Payment methods")

@foreach (var payment in GetLoop("Paymethods")) { }
@Translate("Icon") @Translate("Name") @Translate("Price") @Translate("Terms") @Translate("Is available in current cart")
@if (!string.IsNullOrEmpty(payment.GetString("Ecom:Cart.Paymethod.Icon.Clean")) && !payment.GetString("Ecom:Cart.Paymethod.Icon.Clean").Equals("/Files")) { }
@payment.GetString("Ecom:Cart.Paymethod.Name") - @payment.GetString("Ecom:Cart.Paymethod.ID")
@Translate("Description"): @payment.GetString("Ecom:Cart.Paymethod.Description")
@Translate("Code"): @payment.GetString("Ecom:Cart.Paymethod.Code")
@RenderPrices(payment, "Ecom:Cart.Paymethod.Price", false, true) @Translate("Code"): @payment.GetString("Ecom:Cart.Paymethod.TermsCode")
@Translate("Description"): @payment.GetString("Ecom:Cart.Paymethod.TermsDescription")
@GetPaymentTypeAvailability(payment.GetString("Ecom:Cart.Paymethod.ID"))

@Translate("Shipping methods")

@foreach (var shipping in GetLoop("Shippingmethods")) { }
@Translate("Icon") @Translate("Name") @Translate("Price") @Translate("PriceOverMaxWeight") @Translate("Agent") @Translate("Errors") @Translate("Is available in current cart")
@if (!string.IsNullOrEmpty(shipping.GetString("Ecom:Cart.Shippingmethod.Icon.Clean")) && !shipping.GetString("Ecom:Cart.Shippingmethod.Icon.Clean").Equals("/Files")) { }
@shipping.GetString("Ecom:Cart.Shippingmethod.Name") - @shipping.GetString("Ecom:Cart.Shippingmethod.ID")
@Translate("Description"): @shipping.GetString("Ecom:Cart.Shippingmethod.Description")
@Translate("Code"): @shipping.GetString("Ecom:Cart.Shippingmethod.Code")
@Translate("EligibleForFreeShipping"): @shipping.GetString("Ecom:Cart.Shippingmethod.EligibleForFreeShipping")
@RenderPrices(shipping, "Ecom:Cart.ShippingMethod.Price", false, true)
@RenderPrices(shipping, "Ecom:Cart.Shippingmethod.PriceOverMaxWeight", false, true) @Translate("Name"): @shipping.GetString("Ecom:Cart.Shippingmethod.AgentName")
@Translate("Code"): @shipping.GetString("Ecom:Cart.Shippingmethod.AgentCode")
@Translate("Service Code"): @shipping.GetString("Ecom:Cart.Shippingmethod.AgentServiceCode")
@Translate("Service Description"): @shipping.GetString("Ecom:Cart.Shippingmethod.AgentServiceDescription")
@shipping.GetString("Ecom:Cart.Shippingmethod.Error") @shipping.GetString("Ecom:Cart.Shippingmethod.Warning") @GetShippingTypeAvailability(shipping.GetString("Ecom:Cart.Shippingmethod.ID"))

@Translate("Payment Transaction Info")

@RenderTransactionLine("TransactionAmount") @RenderTransactionLine("TransactionCardNumber") @RenderTransactionLine("TransactionCardType") @RenderTransactionLine("TransactionNumber") @RenderTransactionLine("TransactionPayGatewayCode") @RenderTransactionLine("TransactionStatus") @RenderTransactionLine("TransactionType") @RenderTransactionLine("TransactionValue")

@Translate("Track & Trace")

@foreach (var parameter in GetLoop("TrackTraceParameters")) { @if (parameter.Index == 1) { } }
@Translate("TrackTraceName") @Translate("TrackTraceURL") @Translate("TrackTraceParameters")
@Translate("Name") @Translate("Value") @Translate("Description")
@GetString("Ecom:Order.TrackTraceName") @if (!string.IsNullOrEmpty(GetString("Ecom:Order.TrackTraceNumber"))) {
@Translate("TrackTraceNumber"): @GetString("Ecom:Order.TrackTraceNumber")
}
@GetString("Ecom:Order.TrackTraceURL")@parameter.GetString("Ecom:Order.TrackTraceParameter.Name") @parameter.GetString("Ecom:Order.TrackTraceParameter.Value") @parameter.GetString("Ecom:Order.TrackTraceParameter.Description")

@Translate("Standard fields")

@RenderStandardField("Ecom:Order.ID") @RenderStandardField("Ecom:Order.IntegrationID") @RenderStandardField("Ecom:Order.Customer.AccessUserID") @RenderStandardField("Ecom:Order.Customer.AccessUserUserName") @RenderStandardField("Ecom:Order.Customer.SecondaryUserID") @RenderStandardField("Ecom:Order.Customer.SecondaryUserName") @RenderStandardField("Ecom:Order.Reference") @RenderStandardField("Ecom:Order.ShopID") @RenderStandardField("Ecom:Order.StateID") @RenderStandardField("Ecom:Order:Orderstate.Name") @RenderStandardField("Ecom:Order.DisplayName") @RenderStandardField("Ecom:Order.SavedCardName")
@Translate("SystemName") @Translate("Value")
@RenderStandardField("Ecom:Order.Date") @RenderStandardField("Ecom:Order.Modified") @RenderStandardField("Ecom:Order.Completed") @RenderStandardField("Ecom:Order.ShippingDate") @RenderStandardField("Ecom:Order.Delivery.isPickupPoint") @RenderStandardField("Ecom:Order.Comment") @RenderStandardField("Ecom:Order.Customer.Comment") @RenderStandardField("Ecom:Order.IsBasedOnRecurringOrder") @RenderStandardField("Ecom:Order.IsRecurringOrder") @RenderStandardField("Ecom:Order.PointsToUse") @RenderStandardField("Ecom:Order.RewardTotalPoints") @RenderStandardField("Ecom:Order.TotalPoints")
@Translate("SystemName") @Translate("Value")
@RenderStandardField("Ecom:Order.Volume") @RenderStandardField("Ecom:Order.Weight") @RenderStandardField("Ecom:Order.Customer.Accepted") @RenderStandardField("Ecom:Order.Customer.EAN") @RenderStandardField("Ecom:Order.Customer.RefID") @RenderStandardField("Ecom:Order.Customer.VatRegNumber") @RenderStandardField("Ecom:Order.ExternalFee") @RenderStandardField("Ecom:Order.Requisition") @RenderStandardField("Ecom:Order.Customer.VoucherCode") @RenderStandardField("Ecom:Order.GifTCardCode")
@Translate("SystemName") @Translate("Value")

@Translate("Custom fields")

@{ var order = Dynamicweb.Ecommerce.Services.Orders.GetById(GetString("Ecom:Order.ID")); foreach (var field in order.OrderFieldValues) { } }
@Translate("Name") @Translate("SystemName") @Translate("Type") @Translate("Value")
@field.OrderField.Name @field.OrderField.SystemName @field.OrderField.TypeName @(field.Value?.ToString() ?? "")
} else { }
@helper RenderPrices(LoopItem orderline, string name, bool isDiscount, bool hasDiscount) { if (!isDiscount && hasDiscount) { var isPriceZero = orderline.GetDouble(name + ".Price.Value") == 0.00; var PriceWithVATFormatted = name + ".PriceWithVATFormatted"; var VATPercentFormatted = name + ".VATPercentFormatted"; var VATFormatted = name + ".VATFormatted"; var PriceWithoutVATFormatted = name + ".PriceWithoutVATFormatted";
@orderline.GetString(PriceWithVATFormatted)
@Translate("VAT"): @orderline.GetString(VATPercentFormatted) @orderline.GetString(VATFormatted)
@orderline.GetString(PriceWithoutVATFormatted)
} } @helper RenderPrices(string name) { var isPriceZero = GetDouble(name + ".Price.Value") == 0.00; var PriceWithVATFormatted = name + ".PriceWithVATFormatted"; var VATPercentFormatted = name + ".VATPercentFormatted"; var VATFormatted = name + ".VATFormatted"; var PriceWithoutVATFormatted = name + ".PriceWithoutVATFormatted"; var justPrice = name;
@GetString(PriceWithVATFormatted)
@Translate("DISPLAY PRICE"): @GetString(justPrice)
@Translate("VAT"): @GetString(VATPercentFormatted) @GetString(VATFormatted)
@GetString(PriceWithoutVATFormatted)
} @helper RenderAddress(string prefix) {
@Translate("Name") @GetString($"{prefix}.Name")
@Translate("FirstName") @GetString($"{prefix}.FirstName")
@Translate("MiddleName") @GetString($"{prefix}.MiddleName")
@Translate("Surname") @GetString($"{prefix}.Surname")
@Translate("Initials") @GetString($"{prefix}.Initials")
@Translate("Title") @GetString($"{prefix}.Title")
@Translate("Prefix") @GetString($"{prefix}.Prefix")
@Translate("Address") @GetString($"{prefix}.Address")
@Translate("Address2") @GetString($"{prefix}.Address2")
@Translate("HouseNumber") @GetString($"{prefix}.HouseNumber")
@Translate("City") @GetString($"{prefix}.City")
@Translate("Region") @GetString($"{prefix}.Region")
@Translate("Zip") @GetString($"{prefix}.Zip")
@Translate("Country") @GetString($"{prefix}.Country")
@Translate("Country.Code") @GetString($"{prefix}.Country.Code")
@Translate("Company") @GetString($"{prefix}.Company")
@Translate("Email") @GetString($"{prefix}.Email")
@Translate("Phone") @GetString($"{prefix}.Phone")
@Translate("Cell") @GetString($"{prefix}.Cell")
@Translate("Fax") @GetString($"{prefix}.Fax")
} @helper RenderStandardField(string systemName) { @systemName @GetString(systemName) } @helper RenderTransactionLine(string tag) { var prefix = "Ecom:Order."; var value = GetString(prefix + tag); @tag @value }