class Workarea::Avatax::TaxRequest::OrderLines
Attributes
order[R]
shippings[R]
Public Class Methods
new(order, shippings)
click to toggle source
# File lib/workarea/avatax/tax_request/order_lines.rb, line 6 def initialize(order, shippings) @order = order @shippings = shippings end
Public Instance Methods
lines()
click to toggle source
# File lib/workarea/avatax/tax_request/order_lines.rb, line 24 def lines (order_line_items + shipping_line_items).map.with_index(1) do |line_item, index| line_item.tap { |li| li.line_number = index } end end
order_line_items()
click to toggle source
# File lib/workarea/avatax/tax_request/order_lines.rb, line 11 def order_line_items @order_line_items ||= if shippings.any?(&:partial?) split_shipping_lines else single_shipping_lines end.map.with_index(1) { |line, index| line.tap { |li| li.line_number = index } } end
shipping_line_items()
click to toggle source
# File lib/workarea/avatax/tax_request/order_lines.rb, line 20 def shipping_line_items @shipping_line_item ||= shippings.map { |shipping| TaxRequest::ShippingLineItem.new(shipping: shipping) } end
Private Instance Methods
grouped_order_price_adjustments()
click to toggle source
# File lib/workarea/avatax/tax_request/order_lines.rb, line 36 def grouped_order_price_adjustments order_price_adjustments.grouped_by_parent end
order_price_adjustments()
click to toggle source
# File lib/workarea/avatax/tax_request/order_lines.rb, line 32 def order_price_adjustments order.price_adjustments end
single_shipping_lines()
click to toggle source
# File lib/workarea/avatax/tax_request/order_lines.rb, line 40 def single_shipping_lines grouped_order_price_adjustments.flat_map do |item, set| set.map do |adjustment| next unless adjustment.data["tax_code"].present? TaxRequest::OrderLineItem.new(order_item: item, adjustment: adjustment, adjustment_set: set) end end.compact end
split_shipping_lines()
click to toggle source
# File lib/workarea/avatax/tax_request/order_lines.rb, line 50 def split_shipping_lines shippings.flat_map do |shipping| shipping.quantities.flat_map do |order_item_id, quantity| item = order.items.detect { |oi| oi.id.to_s == order_item_id } adjustment_set = grouped_order_price_adjustments[item] adjustment_set.map do |adjustment| TaxRequest::OrderLineItem.new( order_item: item, adjustment: adjustment, adjustment_set: adjustment_set, quantity: quantity, shipping: shipping ) end end end end