Module: CustomerOrganization

Extended by:
ActiveSupport::Concern
Included in:
Customer
Defined in:
app/models/concerns/customer_organization.rb

Overview

Parent/child orgs, buying groups, marketplace predicates, company determination.

See Also:

Instance Method Summary collapse

Instance Method Details

#abbreviation_for_packing_listObject



29
30
31
32
33
# File 'app/models/concerns/customer_organization.rb', line 29

def abbreviation_for_packing_list
  abbreviation = name.length <= 18 ? name : nil
  abbreviation ||= name.split.filter_map(&:first).join
  marketplace_packing_abbreviation || abbreviation
end

#all_or_none_are_blank_in_address?Boolean

Returns:

  • (Boolean)


196
197
198
# File 'app/models/concerns/customer_organization.rb', line 196

def all_or_none_are_blank_in_address?
  zip.present? || street1.present? || street2.present? || street3.present? || city.present?
end

#amazon_com?Boolean

Returns:

  • (Boolean)


79
80
81
# File 'app/models/concerns/customer_organization.rb', line 79

def amazon_com?
  amazon_com_by_id? || amazon_com_by_parent_or_billing? || amazon_com_vendor_or_seller_ids?
end

#amazon_seller_central?Boolean

Returns:

  • (Boolean)


83
84
85
# File 'app/models/concerns/customer_organization.rb', line 83

def amazon_seller_central?
  CustomerConstants::AMAZON_SELLER_CENTRAL_CUSTOMER_IDS.include?(id)
end

#amazon_vendor_central?Boolean

Returns:

  • (Boolean)


87
88
89
# File 'app/models/concerns/customer_organization.rb', line 87

def amazon_vendor_central?
  CustomerConstants::AMAZON_VENDOR_CENTRAL_CUSTOMER_IDS.include?(id)
end

#broadcast_buying_group_changed(buying_group_id_added: nil, buying_group_id_removed: nil) ⇒ Object



173
174
175
176
# File 'app/models/concerns/customer_organization.rb', line 173

def broadcast_buying_group_changed(buying_group_id_added: nil,
                                   buying_group_id_removed: nil)
  CustomerBuyingGroupUpdater.broadcast(self, added: buying_group_id_added, removed: buying_group_id_removed)
end

#build_com?Boolean

Returns:

  • (Boolean)


127
128
129
# File 'app/models/concerns/customer_organization.rb', line 127

def build_com?
  id == CustomerConstants::BUILD_COM_ID
end

#buying_group_company?Boolean

Returns:

  • (Boolean)


145
146
147
# File 'app/models/concerns/customer_organization.rb', line 145

def buying_group_company?
  profile&.name&.include?('Buying Group') && !buying_group
end

#buying_group_nameObject



21
22
23
# File 'app/models/concerns/customer_organization.rb', line 21

def buying_group_name
  buying_group&.name
end

#buying_groups_options_for_selectObject



17
18
19
# File 'app/models/concerns/customer_organization.rb', line 17

def buying_groups_options_for_select
  BuyingGroup.options_for_select(include_id: buying_group_id, company_id: determine_company_id)
end

#canadian_tire?Boolean

Returns:

  • (Boolean)


123
124
125
# File 'app/models/concerns/customer_organization.rb', line 123

def canadian_tire?
  id == CustomerConstants::CANADIAN_TIRE_ID
end

#certified_installer?Boolean

Returns:

  • (Boolean)


135
136
137
# File 'app/models/concerns/customer_organization.rb', line 135

def certified_installer?
  certifications.active.any?
end

#company_nameObject



43
44
45
# File 'app/models/concerns/customer_organization.rb', line 43

def company_name
  full_name if organization?
end

#company_name=(val) ⇒ Object



47
48
49
# File 'app/models/concerns/customer_organization.rb', line 47

def company_name=(val)
  self.full_name = val.presence
end

#costco_ca?Boolean

Returns:

  • (Boolean)


95
96
97
# File 'app/models/concerns/customer_organization.rb', line 95

def costco_ca?
  id == CustomerConstants::COSTCO_CA_ID
end

#customer_segmentObject



178
179
180
181
182
183
184
# File 'app/models/concerns/customer_organization.rb', line 178

def customer_segment
  if organization?
    buying_group.nil? ? 'TP' : 'BG'
  else
    'HO'
  end
end

#dealer_or_trade_pro_for_locator?Boolean

Returns:

  • (Boolean)


190
191
192
193
194
# File 'app/models/concerns/customer_organization.rb', line 190

def dealer_or_trade_pro_for_locator?
  profile&.jde_code_1.present? && %w[DL TP].include?(profile.jde_code_1)
rescue StandardError
  false
end

#determine_company_idObject



13
14
15
# File 'app/models/concerns/customer_organization.rb', line 13

def determine_company_id
  company_id || catalog&.company_id
end

#direct_buy?Boolean

Returns:

  • (Boolean)


149
150
151
# File 'app/models/concerns/customer_organization.rb', line 149

def direct_buy?
  buying_group&.is_direct_buy?
end

#direct_buy_can?Boolean

Returns:

  • (Boolean)


157
158
159
# File 'app/models/concerns/customer_organization.rb', line 157

def direct_buy_can?
  buying_group&.is_direct_buy_can?
end

#direct_buy_usa?Boolean

Returns:

  • (Boolean)


153
154
155
# File 'app/models/concerns/customer_organization.rb', line 153

def direct_buy_usa?
  buying_group&.is_direct_buy_usa?
end

#e_commerce_misc?Boolean

Returns:

  • (Boolean)


59
60
61
# File 'app/models/concerns/customer_organization.rb', line 59

def e_commerce_misc?
  profile&.e_commerce_misc?
end

#e_commerce_misc_or_direct_pro?Boolean

Returns:

  • (Boolean)


63
64
65
# File 'app/models/concerns/customer_organization.rb', line 63

def e_commerce_misc_or_direct_pro?
  profile && (profile.e_commerce_misc? || profile.direct_pro?)
end

#effective_report_groupingObject



39
40
41
# File 'app/models/concerns/customer_organization.rb', line 39

def effective_report_grouping
  Customer::ReportGrouping.get_report_grouping_for_customer(self)
end

#home_depot_can?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'app/models/concerns/customer_organization.rb', line 71

def home_depot_can?
  id == CustomerConstants::HOME_DEPOT_CAN_ID
end

#home_depot_usa?Boolean

Returns:

  • (Boolean)


67
68
69
# File 'app/models/concerns/customer_organization.rb', line 67

def home_depot_usa?
  id == CustomerConstants::HOME_DEPOT_USA_ID
end

#homeowner?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'app/models/concerns/customer_organization.rb', line 55

def homeowner?
  profile_id == ProfileConstants::HOMEOWNER
end

#houzz?Boolean

Returns:

  • (Boolean)


119
120
121
# File 'app/models/concerns/customer_organization.rb', line 119

def houzz?
  id == CustomerConstants::HOUZZ_ID
end

#include_po_prefix?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'app/models/concerns/customer_organization.rb', line 35

def include_po_prefix?
  CustomerConstants::SKIP_PREFIX_IN_PO_NUMBER_FOR_BILLING_ENTITY.exclude?(id)
end

#organization?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'app/models/concerns/customer_organization.rb', line 51

def organization?
  !homeowner?
end

#overstock_com?Boolean

Returns:

  • (Boolean)


139
140
141
142
143
# File 'app/models/concerns/customer_organization.rb', line 139

def overstock_com?
  name.to_s.casecmp('overstock.com').zero? ||
    (id == 303_919) ||
    catalog.name.to_s.casecmp('overstock.com').zero?
end

#parent_organization_nameObject



25
26
27
# File 'app/models/concerns/customer_organization.rb', line 25

def parent_organization_name
  parent_organization&.name
end

#part_of_lowes_ca?Boolean

Returns:

  • (Boolean)


99
100
101
# File 'app/models/concerns/customer_organization.rb', line 99

def part_of_lowes_ca?
  [CustomerConstants::LOWES_CA_ID, CustomerConstants::RONA_CA_ID, CustomerConstants::RENO_CA_ID].include?(id)
end

#part_of_lowes_com?Boolean

Returns:

  • (Boolean)


103
104
105
# File 'app/models/concerns/customer_organization.rb', line 103

def part_of_lowes_com?
  [CustomerConstants::LOWES_COM_ID].include?(id)
end

#person?Boolean

Returns:

  • (Boolean)


186
187
188
# File 'app/models/concerns/customer_organization.rb', line 186

def person?
  homeowner?
end

#self_and_children_idsObject



9
10
11
# File 'app/models/concerns/customer_organization.rb', line 9

def self_and_children_ids
  [id] + child_organizations.pluck(:id)
end

#update_buying_group(buying_group_id) ⇒ Object



169
170
171
# File 'app/models/concerns/customer_organization.rb', line 169

def update_buying_group(buying_group_id)
  CustomerBuyingGroupUpdater.call(self, buying_group_id)
end

#use_parent_billing_addressObject



161
162
163
# File 'app/models/concerns/customer_organization.rb', line 161

def use_parent_billing_address
  parent_organization&.billing_address_id && (parent_organization.billing_address_id == billing_address_id)
end

#use_parent_billing_address=(val) ⇒ Object



165
166
167
# File 'app/models/concerns/customer_organization.rb', line 165

def use_parent_billing_address=(val)
  self.record_parent_billing_address = ((val == '1') && val.present?)
end

#walmart_ca?Boolean

Returns:

  • (Boolean)


75
76
77
# File 'app/models/concerns/customer_organization.rb', line 75

def walmart_ca?
  id == CustomerConstants::WALMART_CA_ID
end

#wasn4_or_wat0f?Boolean

Returns:

  • (Boolean)


91
92
93
# File 'app/models/concerns/customer_organization.rb', line 91

def wasn4_or_wat0f?
  [CustomerConstants::AMAZON_VENDOR_CENTRAL_WASN4_CUSTOMER_ID, CustomerConstants::AMAZON_VENDOR_CENTRAL_WAT0F_CUSTOMER_ID].include?(id)
end

#wayfair?Boolean

Returns:

  • (Boolean)


107
108
109
# File 'app/models/concerns/customer_organization.rb', line 107

def wayfair?
  [CustomerConstants::WAYFAIR_USA_ID, CustomerConstants::WAYFAIR_CA_ID].include?(id)
end

#wayfair_ca?Boolean

Returns:

  • (Boolean)


115
116
117
# File 'app/models/concerns/customer_organization.rb', line 115

def wayfair_ca?
  id == CustomerConstants::WAYFAIR_CA_ID
end

#wayfair_usa?Boolean

Returns:

  • (Boolean)


111
112
113
# File 'app/models/concerns/customer_organization.rb', line 111

def wayfair_usa?
  id == CustomerConstants::WAYFAIR_USA_ID
end

#zoro?Boolean

Returns:

  • (Boolean)


131
132
133
# File 'app/models/concerns/customer_organization.rb', line 131

def zoro?
  id == CustomerConstants::ZORO_ID
end