Class: Centra::Rule::OrderCalculator

Inherits:
Object
  • Object
show all
Defined in:
lib/centra/rule/order_calculator.rb

Instance Method Summary collapse

Constructor Details

#initialize(order_matcher) ⇒ OrderCalculator

Returns a new instance of OrderCalculator.



4
5
6
7
8
9
10
11
# File 'lib/centra/rule/order_calculator.rb', line 4

def initialize(order_matcher)
  @order_matcher = order_matcher

  @email_orders = nil
  @centra_orders = nil
  @email_delays = nil
  @average_delay = nil
end

Instance Method Details

#average_delayObject



51
52
53
# File 'lib/centra/rule/order_calculator.rb', line 51

def average_delay
  @average_delay ||= email_delays.sum.to_f / matched.length
end

#average_orders_per_emailObject



55
56
57
# File 'lib/centra/rule/order_calculator.rb', line 55

def average_orders_per_email
  centra_orders.length / email_orders.length.to_f
end

#centra_ordersObject



25
26
27
# File 'lib/centra/rule/order_calculator.rb', line 25

def centra_orders
  @centra_orders ||= @order_matcher.data.centra_orders
end

#email_delaysObject



33
34
35
36
37
# File 'lib/centra/rule/order_calculator.rb', line 33

def email_delays
  @email_delays ||= matched.map do |match|
    match[:centra].delay_in_minutes(match[:rule])
  end
end

#email_ordersObject



21
22
23
# File 'lib/centra/rule/order_calculator.rb', line 21

def email_orders
  @email_orders ||= @order_matcher.data.email_orders
end

#matchedObject



17
18
19
# File 'lib/centra/rule/order_calculator.rb', line 17

def matched
  @order_matcher.matched
end

#miss_percentageObject



29
30
31
# File 'lib/centra/rule/order_calculator.rb', line 29

def miss_percentage
  (missing.length.to_f / centra_orders.length) * 100
end

#missingObject



13
14
15
# File 'lib/centra/rule/order_calculator.rb', line 13

def missing
  @order_matcher.missing
end

#missing_total_order_value_mkr_sekObject



47
48
49
# File 'lib/centra/rule/order_calculator.rb', line 47

def missing_total_order_value_mkr_sek
  @missing_total_order_value_mkr_sek ||= missing.map(&:total_order_value_sek).sum / 1_000_000
end

#total_order_value_mkr_sekObject



43
44
45
# File 'lib/centra/rule/order_calculator.rb', line 43

def total_order_value_mkr_sek
  @total_order_value_mkr_sek ||= centra_orders.map(&:total_order_value_sek).sum / 1_000_000
end

#total_pcsObject



39
40
41
# File 'lib/centra/rule/order_calculator.rb', line 39

def total_pcs
  @total_pcs ||= centra_orders.map(&:pcs).sum
end