Class: Liquid::QuoteDrop

Inherits:
Drop
  • Object
show all
Includes:
Memery
Defined in:
app/models/liquid/quote_drop.rb

Instance Attribute Summary collapse

Delegated Instance Attributes collapse

Instance Method Summary collapse

Constructor Details

#initialize(quote) ⇒ QuoteDrop

Returns a new instance of QuoteDrop.



27
28
29
# File 'app/models/liquid/quote_drop.rb', line 27

def initialize(quote)
  @quote = quote
end

Instance Attribute Details

#quoteObject (readonly)

Returns the value of attribute quote.



6
7
8
# File 'app/models/liquid/quote_drop.rb', line 6

def quote
  @quote
end

Instance Method Details

#can_be_paid_online?Boolean

Returns:

  • (Boolean)


128
129
130
# File 'app/models/liquid/quote_drop.rb', line 128

def can_be_paid_online?
  quote.complete? || quote.awaiting_transmission?
end

#completed?Boolean

Returns:

  • (Boolean)


123
124
125
# File 'app/models/liquid/quote_drop.rb', line 123

def completed?
  quote.complete?
end

#country_iso3Object



147
148
149
# File 'app/models/liquid/quote_drop.rb', line 147

def country_iso3
  quote.store.country_iso3
end

#coupon_totalObject



66
67
68
# File 'app/models/liquid/quote_drop.rb', line 66

def coupon_total
  quote.line_discounts.sum(:amount)
end

#couponsObject



138
139
140
141
142
143
144
# File 'app/models/liquid/quote_drop.rb', line 138

def coupons
  coupons = []
  quote.discounts_grouped_by_coupon.each do |code, vals|
    coupons << { 'code' => code, 'title' => vals[:title], 'amount' => ActionController::Base.helpers.number_to_currency(vals[:amount]) }
  end
  coupons
end

#customerObject

Alias for Quote#customer

Returns:

  • (Object)

    Quote#customer

See Also:



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/models/liquid/quote_drop.rb', line 8

delegate :reference_number,
:reference_number_with_name,
:reference_number_with_opp_name_when_specified,
:customer,
:lookup_link,
:opportunity,
:line_total,
:total_amps,
:total,
:tax_total,
:expiration_date,
:recipient_name,
:recipient_email,
:suffix,
:primary_sales_rep,
to: :quote

#disclaimerObject



88
89
90
# File 'app/models/liquid/quote_drop.rb', line 88

def disclaimer
  GENERAL_DISCLAIMER_ON_PRODUCT_INSTALLATION_AND_LOCAL_CODES
end

#expiration_dateObject

Alias for Quote#expiration_date

Returns:

  • (Object)

    Quote#expiration_date

See Also:



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/models/liquid/quote_drop.rb', line 8

delegate :reference_number,
:reference_number_with_name,
:reference_number_with_opp_name_when_specified,
:customer,
:lookup_link,
:opportunity,
:line_total,
:total_amps,
:total,
:tax_total,
:expiration_date,
:recipient_name,
:recipient_email,
:suffix,
:primary_sales_rep,
to: :quote

#expiration_date_formattedObject



39
40
41
# File 'app/models/liquid/quote_drop.rb', line 39

def expiration_date_formatted
  quote.expiration_date.strftime('%B %-d')
end

#for_direct_pro?Boolean

Returns:

  • (Boolean)


209
210
211
# File 'app/models/liquid/quote_drop.rb', line 209

def for_direct_pro?
  customer.is_direct_pro?
end

#for_homeowner?Boolean

Returns:

  • (Boolean)


204
205
206
# File 'app/models/liquid/quote_drop.rb', line 204

def for_homeowner?
  customer.is_homeowner?
end

#formatted_coupon_totalObject



61
62
63
# File 'app/models/liquid/quote_drop.rb', line 61

def formatted_coupon_total
  ActionController::Base.helpers.number_to_currency(quote.line_discounts.sum(:amount))
end

#formatted_tax_totalObject



56
57
58
# File 'app/models/liquid/quote_drop.rb', line 56

def formatted_tax_total
  ActionController::Base.helpers.number_to_currency(quote.tax_total)
end

#friendly_shipping_methodObject



78
79
80
81
82
83
84
85
86
# File 'app/models/liquid/quote_drop.rb', line 78

def friendly_shipping_method
  if quote.is_warehouse_pickup?
    'Warehouse Pickup'
  elsif quote.friendly_shipping_method == 'Override'
    'Shipping'
  else
    quote.friendly_shipping_method
  end
end

#has_dropship_items?Boolean

Returns:

  • (Boolean)


92
93
94
# File 'app/models/liquid/quote_drop.rb', line 92

def has_dropship_items?
  quote.line_items.any?(&:dropship?)
end

#has_floor_heating?Boolean

Returns:

  • (Boolean)


194
195
196
# File 'app/models/liquid/quote_drop.rb', line 194

def has_floor_heating?
  quote.line_items.floor_heating_elements.exists?
end

#has_out_of_stock_items?Boolean

Returns:

  • (Boolean)


97
98
99
100
# File 'app/models/liquid/quote_drop.rb', line 97

def has_out_of_stock_items?
  item_availability = LineItem.availability_hash(quote.line_items)
  quote.line_items.any? { |li| li.show_out_of_stock?(item_availability) }
end

#has_rep?Boolean

Returns:

  • (Boolean)


118
119
120
# File 'app/models/liquid/quote_drop.rb', line 118

def has_rep?
  quote.customer.primary_sales_rep.present?
end

#has_service_items?Boolean

Returns:

  • (Boolean)


103
104
105
# File 'app/models/liquid/quote_drop.rb', line 103

def has_service_items?
  quote.line_items.any?(&:is_service?)
end

#has_smartplans?Boolean

Returns:

  • (Boolean)


189
190
191
# File 'app/models/liquid/quote_drop.rb', line 189

def has_smartplans?
  quote.room_configurations.any?(&:installation_plan_image)
end

#has_snow_melting?Boolean

Returns:

  • (Boolean)


199
200
201
# File 'app/models/liquid/quote_drop.rb', line 199

def has_snow_melting?
  quote.line_items.snow_melting_elements.exists?
end

#idObject

Alias for Quote#id

Returns:

  • (Object)

    Quote#id

See Also:



230
# File 'app/models/liquid/quote_drop.rb', line 230

delegate :id, to: :quote

#is_canada_quote?Boolean

Returns:

  • (Boolean)


156
157
158
# File 'app/models/liquid/quote_drop.rb', line 156

def is_canada_quote?
  country_iso3 == 'CAN'
end

#is_pickup?Boolean

Returns:

  • (Boolean)


160
161
162
# File 'app/models/liquid/quote_drop.rb', line 160

def is_pickup?
  quote.is_warehouse_pickup?
end

#is_usa_quote?Boolean

Returns:

  • (Boolean)


152
153
154
# File 'app/models/liquid/quote_drop.rb', line 152

def is_usa_quote?
  country_iso3 == 'USA'
end

#job_nameObject



47
48
49
# File 'app/models/liquid/quote_drop.rb', line 47

def job_name
  opportunity.name
end

#line_totalObject

Alias for Quote#line_total

Returns:

  • (Object)

    Quote#line_total

See Also:



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/models/liquid/quote_drop.rb', line 8

delegate :reference_number,
:reference_number_with_name,
:reference_number_with_opp_name_when_specified,
:customer,
:lookup_link,
:opportunity,
:line_total,
:total_amps,
:total,
:tax_total,
:expiration_date,
:recipient_name,
:recipient_email,
:suffix,
:primary_sales_rep,
to: :quote

Alias for Quote#lookup_link

Returns:

  • (Object)

    Quote#lookup_link

See Also:



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/models/liquid/quote_drop.rb', line 8

delegate :reference_number,
:reference_number_with_name,
:reference_number_with_opp_name_when_specified,
:customer,
:lookup_link,
:opportunity,
:line_total,
:total_amps,
:total,
:tax_total,
:expiration_date,
:recipient_name,
:recipient_email,
:suffix,
:primary_sales_rep,
to: :quote

#opportunityObject

Alias for Quote#opportunity

Returns:

  • (Object)

    Quote#opportunity

See Also:



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/models/liquid/quote_drop.rb', line 8

delegate :reference_number,
:reference_number_with_name,
:reference_number_with_opp_name_when_specified,
:customer,
:lookup_link,
:opportunity,
:line_total,
:total_amps,
:total,
:tax_total,
:expiration_date,
:recipient_name,
:recipient_email,
:suffix,
:primary_sales_rep,
to: :quote

#pre_planning_invite_urlObject



220
221
222
223
224
225
226
227
228
# File 'app/models/liquid/quote_drop.rb', line 220

def pre_planning_invite_url
  uri = Addressable::URI.parse(ContactConstants::ZOOM_PRE_PLANNING)
  uri.query_values = {
    name: recipient_name,
    email: recipient_email,
    a1: reference_number
  }
  uri.to_s
end

#primary_sales_repObject

Alias for Quote#primary_sales_rep

Returns:

  • (Object)

    Quote#primary_sales_rep

See Also:



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/models/liquid/quote_drop.rb', line 8

delegate :reference_number,
:reference_number_with_name,
:reference_number_with_opp_name_when_specified,
:customer,
:lookup_link,
:opportunity,
:line_total,
:total_amps,
:total,
:tax_total,
:expiration_date,
:recipient_name,
:recipient_email,
:suffix,
:primary_sales_rep,
to: :quote


176
177
178
179
180
181
# File 'app/models/liquid/quote_drop.rb', line 176

def public_link
  a = customer.
  return nil unless a.present?

  "https://#{WEB_HOSTNAME}#{public_path}"
end


183
184
185
186
187
# File 'app/models/liquid/quote_drop.rb', line 183

def 
  return nil unless customer && customer..present?

  customer..email
end

#public_pathObject



170
171
172
173
174
# File 'app/models/liquid/quote_drop.rb', line 170

def public_path
  return nil unless customer..present?

  UrlHelper.instance.(quote)
end

#quote_numberObject



43
44
45
# File 'app/models/liquid/quote_drop.rb', line 43

def quote_number
  quote.reference_number
end

#quote_suffixObject

Alias for Quote#suffix

Returns:

  • (Object)

    Quote#quote_suffix

See Also:



25
# File 'app/models/liquid/quote_drop.rb', line 25

delegate :suffix, to: :quote, prefix: true

#recipient_emailObject

Alias for Quote#recipient_email

Returns:

  • (Object)

    Quote#recipient_email

See Also:



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/models/liquid/quote_drop.rb', line 8

delegate :reference_number,
:reference_number_with_name,
:reference_number_with_opp_name_when_specified,
:customer,
:lookup_link,
:opportunity,
:line_total,
:total_amps,
:total,
:tax_total,
:expiration_date,
:recipient_name,
:recipient_email,
:suffix,
:primary_sales_rep,
to: :quote

#recipient_nameObject

Alias for Quote#recipient_name

Returns:

  • (Object)

    Quote#recipient_name

See Also:



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/models/liquid/quote_drop.rb', line 8

delegate :reference_number,
:reference_number_with_name,
:reference_number_with_opp_name_when_specified,
:customer,
:lookup_link,
:opportunity,
:line_total,
:total_amps,
:total,
:tax_total,
:expiration_date,
:recipient_name,
:recipient_email,
:suffix,
:primary_sales_rep,
to: :quote

#reference_numberObject

Alias for Quote#reference_number

Returns:

  • (Object)

    Quote#reference_number

See Also:



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/models/liquid/quote_drop.rb', line 8

delegate :reference_number,
:reference_number_with_name,
:reference_number_with_opp_name_when_specified,
:customer,
:lookup_link,
:opportunity,
:line_total,
:total_amps,
:total,
:tax_total,
:expiration_date,
:recipient_name,
:recipient_email,
:suffix,
:primary_sales_rep,
to: :quote

#reference_number_with_nameObject

Alias for Quote#reference_number_with_name

Returns:

  • (Object)

    Quote#reference_number_with_name

See Also:



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/models/liquid/quote_drop.rb', line 8

delegate :reference_number,
:reference_number_with_name,
:reference_number_with_opp_name_when_specified,
:customer,
:lookup_link,
:opportunity,
:line_total,
:total_amps,
:total,
:tax_total,
:expiration_date,
:recipient_name,
:recipient_email,
:suffix,
:primary_sales_rep,
to: :quote

#reference_number_with_opp_name_when_specifiedObject

Alias for Quote#reference_number_with_opp_name_when_specified

Returns:

  • (Object)

    Quote#reference_number_with_opp_name_when_specified

See Also:



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/models/liquid/quote_drop.rb', line 8

delegate :reference_number,
:reference_number_with_name,
:reference_number_with_opp_name_when_specified,
:customer,
:lookup_link,
:opportunity,
:line_total,
:total_amps,
:total,
:tax_total,
:expiration_date,
:recipient_name,
:recipient_email,
:suffix,
:primary_sales_rep,
to: :quote

#rep_emailObject



113
114
115
# File 'app/models/liquid/quote_drop.rb', line 113

def rep_email
  quote.customer.primary_sales_rep&.email || INFO_EMAIL
end

#rep_nameObject



133
134
135
# File 'app/models/liquid/quote_drop.rb', line 133

def rep_name
  quote.customer.primary_sales_rep&.full_name
end


31
32
33
# File 'app/models/liquid/quote_drop.rb', line 31

def schedule_meeting_link
  primary_sales_rep&.effective_scheduler_link
end

#service_only_quote?Boolean

Returns:

  • (Boolean)


108
109
110
# File 'app/models/liquid/quote_drop.rb', line 108

def service_only_quote?
  quote.line_items.non_shipping.any? && quote.line_items.non_shipping.all?(&:is_service?)
end

#show_pre_planning_meeting?Boolean

Returns:

  • (Boolean)


214
215
216
217
# File 'app/models/liquid/quote_drop.rb', line 214

def show_pre_planning_meeting?
  # We're starting simply
  quote.total > 500
end


35
36
37
# File 'app/models/liquid/quote_drop.rb', line 35

def show_schedule_meeting_link
  schedule_meeting_link.present?
end

#suffixObject

Alias for Quote#suffix

Returns:

  • (Object)

    Quote#suffix

See Also:



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/models/liquid/quote_drop.rb', line 8

delegate :reference_number,
:reference_number_with_name,
:reference_number_with_opp_name_when_specified,
:customer,
:lookup_link,
:opportunity,
:line_total,
:total_amps,
:total,
:tax_total,
:expiration_date,
:recipient_name,
:recipient_email,
:suffix,
:primary_sales_rep,
to: :quote

#tax_totalObject

Alias for Quote#tax_total

Returns:

  • (Object)

    Quote#tax_total

See Also:



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/models/liquid/quote_drop.rb', line 8

delegate :reference_number,
:reference_number_with_name,
:reference_number_with_opp_name_when_specified,
:customer,
:lookup_link,
:opportunity,
:line_total,
:total_amps,
:total,
:tax_total,
:expiration_date,
:recipient_name,
:recipient_email,
:suffix,
:primary_sales_rep,
to: :quote

#taxesObject



70
71
72
73
74
75
76
# File 'app/models/liquid/quote_drop.rb', line 70

def taxes
  taxes = {}
  quote.taxes_grouped_by_type.each_value do |tax_info|
    taxes[tax_info[:name]] = ActionController::Base.helpers.number_to_currency(tax_info[:tax_amount])
  end
  taxes
end

#totalObject

Alias for Quote#total

Returns:

  • (Object)

    Quote#total

See Also:



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/models/liquid/quote_drop.rb', line 8

delegate :reference_number,
:reference_number_with_name,
:reference_number_with_opp_name_when_specified,
:customer,
:lookup_link,
:opportunity,
:line_total,
:total_amps,
:total,
:tax_total,
:expiration_date,
:recipient_name,
:recipient_email,
:suffix,
:primary_sales_rep,
to: :quote

#total_ampsObject

Alias for Quote#total_amps

Returns:

  • (Object)

    Quote#total_amps

See Also:



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/models/liquid/quote_drop.rb', line 8

delegate :reference_number,
:reference_number_with_name,
:reference_number_with_opp_name_when_specified,
:customer,
:lookup_link,
:opportunity,
:line_total,
:total_amps,
:total,
:tax_total,
:expiration_date,
:recipient_name,
:recipient_email,
:suffix,
:primary_sales_rep,
to: :quote

#total_formattedObject



51
52
53
# File 'app/models/liquid/quote_drop.rb', line 51

def total_formatted
  ActionController::Base.helpers.number_to_currency(quote.total)
end

#total_operating_cost_dollars_per_hour_blurbObject



164
165
166
167
# File 'app/models/liquid/quote_drop.rb', line 164

def total_operating_cost_dollars_per_hour_blurb
  tot_op_cost_rate = quote.room_configurations.to_a.sum(&:calculate_operating_cost_rate_using_hep)
  "#{ActionController::Base.helpers.number_to_currency(tot_op_cost_rate)}/hour @ #{ActionController::Base.helpers.number_to_currency(ElectricityRate::US_AVERAGE_RATE)}/kWh"
end