/// <summary> /// Gets a collection of <see cref="IReplaceablePattern"/> for the invoice /// </summary> /// <param name="invoice"> /// The invoice. /// </param> /// <returns> /// The collection of replaceable patterns /// </returns> internal static IEnumerable <IReplaceablePattern> ReplaceablePatterns(this IInvoice invoice) { // TODO localization needed on pricing and datetime var patterns = new List <IReplaceablePattern> { ReplaceablePattern.GetConfigurationReplaceablePattern("InvoiceNumber", invoice.PrefixedInvoiceNumber()), ReplaceablePattern.GetConfigurationReplaceablePattern("InvoiceDate", invoice.InvoiceDate.ToShortDateString()), ReplaceablePattern.GetConfigurationReplaceablePattern("BillToName", invoice.BillToName), ReplaceablePattern.GetConfigurationReplaceablePattern("BillToAddress1", invoice.BillToAddress1), ReplaceablePattern.GetConfigurationReplaceablePattern("BillToAddress2", invoice.BillToAddress2), ReplaceablePattern.GetConfigurationReplaceablePattern("BillToLocality", invoice.BillToLocality), ReplaceablePattern.GetConfigurationReplaceablePattern("BillToRegion", invoice.BillToRegion), ReplaceablePattern.GetConfigurationReplaceablePattern("BillToPostalCode", invoice.BillToPostalCode), ReplaceablePattern.GetConfigurationReplaceablePattern("BillToCountryCode", invoice.BillToCountryCode), ReplaceablePattern.GetConfigurationReplaceablePattern("BillToEmail", invoice.BillToEmail), ReplaceablePattern.GetConfigurationReplaceablePattern("BillToPhone", invoice.BillToPhone), ReplaceablePattern.GetConfigurationReplaceablePattern("BillToCompany", invoice.BillToCompany), ReplaceablePattern.GetConfigurationReplaceablePattern("TotalPrice", invoice.Total.ToString("C")), ReplaceablePattern.GetConfigurationReplaceablePattern("InvoiceStatus", invoice.InvoiceStatus.Name) }; patterns.AddRange(invoice.LineItemReplaceablePatterns()); return(patterns); }
/// <summary> /// Gets a collection of <see cref="IReplaceablePattern"/> for each line item in the <see cref="LineItemCollection"/> /// </summary> /// <param name="container"> /// The container. /// </param> /// <returns> /// A collection of replaceable patterns /// </returns> internal static IEnumerable <IReplaceablePattern> LineItemReplaceablePatterns(this ILineItemContainer container) { var patterns = new List <IReplaceablePattern>(); var token = container.GetFormatterIterationIdentifier(); // TODO localization needed on pricing and datetime for (var i = 0; i < container.Items.Count; i++) { var sku = new ReplaceablePattern(string.Format("{0}.{1}.{2}", token, "Sku", i), string.Format("{0}Item.Sku.{1}{2}", "{{", i, "}}"), container.Items[i].LineItemType == LineItemType.Shipping ? string.Empty : container.Items[i].Sku); var unitPrice = new ReplaceablePattern(string.Format("{0}.{1}.{2}", token, "UnitPrice", i), string.Format("{0}Item.UnitPrice.{1}{2}", "{{", i, "}}"), container.Items[i].Price.ToString("C")); var name = new ReplaceablePattern(string.Format("{0}.{1}.{2}", token, "Name", i), string.Format("{0}Item.Name.{1}{2}", "{{", i, "}}"), container.Items[i].Name); var qty = new ReplaceablePattern(string.Format("{0}.{1}.{2}", token, "Quantity", i), string.Format("{0}Item.Quantity.{1}{2}", "{{", i, "}}"), container.Items[i].Quantity.ToString(CultureInfo.InvariantCulture)); var totalPrice = new ReplaceablePattern(string.Format("{0}.{1}.{2}", token, "TotalPrice", i), string.Format("{0}Item.TotalPrice.{1}{2}", "{{", i, "}}"), container.Items[i].TotalPrice.ToString("C")); patterns.Add(sku); patterns.Add(name); patterns.Add(unitPrice); patterns.Add(qty); patterns.Add(totalPrice); } //var shippingLineItems = container.ShippingLineItems().ToArray(); //// TODO - needs work once we expose multiple shipments to do an array if multiple destinations are detected //if (shippingLineItems.Any()) //{ // var shipment = shippingLineItems.First().ExtendedData.GetShipment<InvoiceLineItem>(); // patterns.Add(ReplaceablePattern.GetConfigurationReplaceablePattern("ShipToName", shipment.ToName)); //} return(patterns); }
/// <summary> /// Gets a collection of <see cref="IReplaceablePattern"/> for the invoice /// </summary> /// <param name="invoice"> /// The invoice. /// </param> /// <param name="currencySymbol"> /// The currency symbol /// </param> /// <returns> /// The collection of replaceable patterns /// </returns> internal static IEnumerable <IReplaceablePattern> ReplaceablePatterns(this IInvoice invoice, string currencySymbol) { var patterns = new List <IReplaceablePattern> { ReplaceablePattern.GetConfigurationReplaceablePattern("InvoiceKey", invoice.Key.ToString()), ReplaceablePattern.GetConfigurationReplaceablePattern("InvoiceNumber", invoice.PrefixedInvoiceNumber()), ReplaceablePattern.GetConfigurationReplaceablePattern("InvoiceDate", invoice.InvoiceDate.FormatAsStoreDate()), ReplaceablePattern.GetConfigurationReplaceablePattern("BillToName", invoice.BillToName), ReplaceablePattern.GetConfigurationReplaceablePattern("BillToAddress1", invoice.BillToAddress1), ReplaceablePattern.GetConfigurationReplaceablePattern("BillToAddress2", invoice.BillToAddress2), ReplaceablePattern.GetConfigurationReplaceablePattern("BillToLocality", invoice.BillToLocality), ReplaceablePattern.GetConfigurationReplaceablePattern("BillToRegion", invoice.BillToRegion), ReplaceablePattern.GetConfigurationReplaceablePattern("BillToPostalCode", invoice.BillToPostalCode), ReplaceablePattern.GetConfigurationReplaceablePattern("BillToCountryCode", invoice.BillToCountryCode), ReplaceablePattern.GetConfigurationReplaceablePattern("BillToEmail", invoice.BillToEmail), ReplaceablePattern.GetConfigurationReplaceablePattern("BillToPhone", invoice.BillToPhone), ReplaceablePattern.GetConfigurationReplaceablePattern("BillToCompany", invoice.BillToCompany), ReplaceablePattern.GetConfigurationReplaceablePattern("TotalItemPlusCustom", (invoice.TotalCustomItemPrice() + invoice.TotalItemPrice()).FormatAsPrice(currencySymbol)), ReplaceablePattern.GetConfigurationReplaceablePattern("TotalDiscountPrice", invoice.TotalDiscounts().FormatAsPrice(currencySymbol)), ReplaceablePattern.GetConfigurationReplaceablePattern("TotalItemPrice", invoice.TotalItemPrice().FormatAsPrice(currencySymbol)), ReplaceablePattern.GetConfigurationReplaceablePattern("TotalShippingPrice", invoice.TotalShipping().FormatAsPrice(currencySymbol)), ReplaceablePattern.GetConfigurationReplaceablePattern("TotalCustomPrice", invoice.TotalCustomItemPrice().FormatAsPrice(currencySymbol)), ReplaceablePattern.GetConfigurationReplaceablePattern("TotalTaxPrice", invoice.TotalTax().FormatAsPrice(currencySymbol)), ReplaceablePattern.GetConfigurationReplaceablePattern("TotalPrice", invoice.Total.FormatAsPrice(currencySymbol)), ReplaceablePattern.GetConfigurationReplaceablePattern("InvoiceStatus", invoice.InvoiceStatus.Name) }; patterns.AddRange(invoice.LineItemReplaceablePatterns(currencySymbol)); return(patterns.Where(x => x != null)); }
/// <summary> /// Replaces shipmethod values. /// </summary> /// <param name="shipMethod"> /// The ship method. /// </param> /// <returns> /// The <see cref="IEnumerable{IReplaceablePattern}"/>. /// </returns> internal static IEnumerable <IReplaceablePattern> ReplaceablePatterns(this IShipMethod shipMethod) { var patterns = new List <IReplaceablePattern> { ReplaceablePattern.GetConfigurationReplaceablePattern("ShipMethodName", shipMethod.Name), }; return(patterns); }
/// <summary> /// The replaceable patterns. /// </summary> /// <param name="payment"> /// The payment. /// </param> /// <param name="currencySymbol"> /// The currency symbol. /// </param> /// <returns> /// The <see cref="IEnumerable{IReplaceablePattern}"/>. /// </returns> internal static IEnumerable <IReplaceablePattern> ReplaceablePatterns(this IPayment payment, string currencySymbol) { var patterns = new List <IReplaceablePattern> { ReplaceablePattern.GetConfigurationReplaceablePattern("PamentReferenceNumber", payment.ReferenceNumber), ReplaceablePattern.GetConfigurationReplaceablePattern("PaymentAmount", payment.Amount.FormatAsPrice(currencySymbol)), ReplaceablePattern.GetConfigurationReplaceablePattern("PaymentMethodName", payment.PaymentMethodName), }; return(patterns); }
/// <summary> /// Adds shipment replaceable patters. /// </summary> /// <param name="shipment"> /// The shipment. /// </param> /// <param name="currencySymbol"> /// The currency Symbol. /// </param> /// <returns> /// The <see cref="IEnumerable{IReplaceablePattern}"/>. /// </returns> internal static IEnumerable <IReplaceablePattern> ReplaceablePatterns(this IShipment shipment, string currencySymbol) { var patterns = new List <IReplaceablePattern> { ReplaceablePattern.GetConfigurationReplaceablePattern("ShippedDate", shipment.ShippedDate.FormatAsStoreDate()), ReplaceablePattern.GetConfigurationReplaceablePattern("ShipToOrganization", shipment.ToOrganization), ReplaceablePattern.GetConfigurationReplaceablePattern("ShipToName", shipment.ToName), ReplaceablePattern.GetConfigurationReplaceablePattern("ShipToAddress1", shipment.ToAddress1), ReplaceablePattern.GetConfigurationReplaceablePattern("ShipToAddress2", shipment.ToAddress2), ReplaceablePattern.GetConfigurationReplaceablePattern("ShipToLocality", shipment.ToLocality), ReplaceablePattern.GetConfigurationReplaceablePattern("ShipToRegion", shipment.ToRegion), ReplaceablePattern.GetConfigurationReplaceablePattern("ShipToPostalCode", shipment.ToPostalCode), ReplaceablePattern.GetConfigurationReplaceablePattern("ShipToCountryCode", shipment.ToCountryCode), ReplaceablePattern.GetConfigurationReplaceablePattern("ShipToEmail", shipment.Email), ReplaceablePattern.GetConfigurationReplaceablePattern("ShipToPhone", shipment.Phone), ReplaceablePattern.GetConfigurationReplaceablePattern("ShipToOrganization", shipment.ToOrganization), ReplaceablePattern.GetConfigurationReplaceablePattern("TrackingCode", shipment.TrackingCode) }; patterns.AddRange(shipment.LineItemReplaceablePatterns(currencySymbol)); return(patterns.Where(x => x != null)); }
/// <summary> /// Gets a collection of <see cref="IReplaceablePattern"/> for each line item in the <see cref="LineItemCollection"/> /// </summary> /// <param name="container"> /// The container. /// </param> /// <returns> /// A collection of replaceable patterns /// </returns> internal static IEnumerable <IReplaceablePattern> LineItemReplaceablePatterns(this ILineItemContainer container) { var patterns = new List <IReplaceablePattern>(); var token = container.GetFormatterIterationIdentifier(); // TODO localization needed on pricing and datetime for (var i = 0; i < container.Items.Count; i++) { var sku = new ReplaceablePattern(string.Format("{0}.{1}.{2}", token, "Sku", i), string.Format("{0}Item.Sku.{1}{2}", "{{", i, "}}"), container.Items[i].LineItemType == LineItemType.Shipping ? string.Empty : container.Items[i].Sku); var unitPrice = new ReplaceablePattern(string.Format("{0}.{1}.{2}", token, "UnitPrice", i), string.Format("{0}Item.UnitPrice.{1}{2}", "{{", i, "}}"), container.Items[i].Price.ToString("C")); var name = new ReplaceablePattern(string.Format("{0}.{1}.{2}", token, "Name", i), string.Format("{0}Item.Name.{1}{2}", "{{", i, "}}"), container.Items[i].Name); var qty = new ReplaceablePattern(string.Format("{0}.{1}.{2}", token, "Quantity", i), string.Format("{0}Item.Quantity.{1}{2}", "{{", i, "}}"), container.Items[i].Quantity.ToString(CultureInfo.InvariantCulture)); var totalPrice = new ReplaceablePattern(string.Format("{0}.{1}.{2}", token, "TotalPrice", i), string.Format("{0}Item.TotalPrice.{1}{2}", "{{", i, "}}"), container.Items[i].TotalPrice.ToString("C")); patterns.Add(sku); patterns.Add(name); patterns.Add(unitPrice); patterns.Add(qty); patterns.Add(totalPrice); } return(patterns); }
/// <summary> /// Gets a collection of <see cref="IReplaceablePattern"/> for the invoice /// </summary> /// <param name="invoice"> /// The invoice. /// </param> /// <returns> /// The collection of replaceable patterns /// </returns> internal static IEnumerable <IReplaceablePattern> ReplaceablePatterns(this IShipment shipment) { // TODO localization needed on pricing and datetime var patterns = new List <IReplaceablePattern> { ReplaceablePattern.GetConfigurationReplaceablePattern("ShippedDate", shipment.ShippedDate.ToShortDateString()), ReplaceablePattern.GetConfigurationReplaceablePattern("ShipToOrganization", shipment.ToOrganization), ReplaceablePattern.GetConfigurationReplaceablePattern("ShipToName", shipment.ToName), ReplaceablePattern.GetConfigurationReplaceablePattern("ShipToAddress1", shipment.ToAddress1), ReplaceablePattern.GetConfigurationReplaceablePattern("ShipToAddress2", shipment.ToAddress2), ReplaceablePattern.GetConfigurationReplaceablePattern("ShipToLocality", shipment.ToLocality), ReplaceablePattern.GetConfigurationReplaceablePattern("ShipToRegion", shipment.ToRegion), ReplaceablePattern.GetConfigurationReplaceablePattern("ShipToPostalCode", shipment.ToPostalCode), ReplaceablePattern.GetConfigurationReplaceablePattern("ShipToCountryCode", shipment.ToCountryCode), ReplaceablePattern.GetConfigurationReplaceablePattern("ShipToEmail", shipment.Email), ReplaceablePattern.GetConfigurationReplaceablePattern("ShipToPhone", shipment.Phone), ReplaceablePattern.GetConfigurationReplaceablePattern("ShipToOrganization", shipment.ToOrganization), ReplaceablePattern.GetConfigurationReplaceablePattern("TrackingCode", shipment.TrackingCode) }; patterns.AddRange(shipment.LineItemReplaceablePatterns()); return(patterns); }