Class: SalesMailer

Inherits:
InternalNotificationMailer show all
Defined in:
app/mailers/sales_mailer.rb

Overview

Sales ops: commissions, rewards, merges, copies, activity assignment.

Extracted from the former InternalMailer god object.

See Also:

  • InternalNotificationMailer
  • doc/tasks/202606131218_INTERNAL_MAILER_DECOMPOSITIONdoc/tasks/202606131218_INTERNAL_MAILER_DECOMPOSITION.md

Instance Method Summary collapse

Methods inherited from InternalNotificationMailer

#default_url_options

Methods included from SendgridSmtpApi::InternalMailerHeaders

#mail

Methods inherited from ApplicationMailer

#null_mail

Instance Method Details

#confirm_quote_planning(rep, forecasts) ⇒ Object



100
101
102
103
104
105
106
107
108
109
# File 'app/mailers/sales_mailer.rb', line 100

def confirm_quote_planning(rep, forecasts)
  return null_mail if forecasts.blank?

  @rep = rep
  @forecasts = forecasts
  mail(from: ACCOUNTS_PAYABLE_EMAIL,
       to: @rep.email_with_name,
       cc: ACCOUNTS_PAYABLE_EMAIL,
       subject: 'Quote Stock Reservation Reminder')
end

#customer_merge_complete(customer_master, user_email: nil, report: {}) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
# File 'app/mailers/sales_mailer.rb', line 64

def customer_merge_complete(customer_master, user_email: nil, report: {})
  user_email ||= 'heatwaveteam@warmlyyours.com'
  @customer_master = customer_master
  @report = report
  if @report[:customer_errors].blank? && @report[:execution_errors].blank?
    recipients = [user_email, @customer_master.primary_sales_rep&.email].compact.uniq.join(',')
    mail(from: user_email, to: recipients, subject: "Merge Complete: #{@customer_master} #{@customer_master.full_name}")
  else
    mail(from: user_email, to: 'heatwaveteam@warmlyyours.com', cc: user_email, subject: 'Merge Failed')
  end
end

#new_buying_group_created(buying_group) ⇒ Object



9
10
11
12
13
14
# File 'app/mailers/sales_mailer.rb', line 9

def new_buying_group_created(buying_group)
  @buying_group = buying_group
  mail(from: 'Heatwave Team <heatwaveteam@warmlyyours.com>',
       to: 'epasek@warmlyyours.com',
       subject: "New Buying Group Needs Review - #{@buying_group.name}")
end

#notify_allocate_reward_to_complete(employee_review) ⇒ Object



16
17
18
19
20
21
22
23
# File 'app/mailers/sales_mailer.rb', line 16

def notify_allocate_reward_to_complete(employee_review)
  @employee_review = employee_review
  @review_date = @employee_review.updated_at
  @salutation = employee_review.employee_record.party.first_name
  sender = @employee_review.reviewer_email
  recipient = @employee_review.employee_email
  mail(from: sender, to: recipient, cc: 'charity@warmlyyours.com', subject: 'Please complete the reward allocation for your review')
end

#notify_of_activity_assigned(party_assigned, activity) ⇒ Object



111
112
113
114
115
116
117
118
119
# File 'app/mailers/sales_mailer.rb', line 111

def notify_of_activity_assigned(party_assigned, activity)
  @party = party_assigned
  @activity = activity
  cc = (@party&.employee_record&.department == 'Tech Support' ? 'techteam@warmlyyours.com' : nil)
  mail(from: ADMINISTRATOR_EMAIL,
       to: party_assigned.email,
       cc: cc,
       subject: "Activity Assigned: #{activity.display_type}")
end

#notify_process_reward_to_complete(employee_review) ⇒ Object



25
26
27
28
29
30
31
# File 'app/mailers/sales_mailer.rb', line 25

def notify_process_reward_to_complete(employee_review)
  @employee_review = employee_review
  @reviewee_name = employee_review.employee_record.party.full_name
  sender = @employee_review.reviewer_email
  recipient = 'jbillen@warmlyyours.com'
  mail(from: sender, to: recipient, subject: "Please process the reward allocation for #{@reviewee_name}")
end

#notify_sales_commission_to_pending_accounting_review(sales_commission_rep) ⇒ Object



42
43
44
45
46
47
# File 'app/mailers/sales_mailer.rb', line 42

def notify_sales_commission_to_pending_accounting_review(sales_commission_rep)
  @sales_commission_rep = sales_commission_rep
  sender = Employee.find_by(id: @sales_commission_rep.employee_id)&.email || 'heatwaveteam@warmlyyours.com'
  recipient = 'vadepu@warmlyyours.com'
  mail(from: sender, to: recipient, cc: 'epasek@warmlyyours.com,accounting@warmlyyours.com,jbillen@warmlyyours.com', subject: 'Your commission report is now under review')
end

#notify_sales_commission_to_pending_pay_out(sales_commission_rep) ⇒ Object



49
50
51
52
53
54
# File 'app/mailers/sales_mailer.rb', line 49

def notify_sales_commission_to_pending_pay_out(sales_commission_rep)
  @sales_commission_rep = sales_commission_rep
  sender = Employee.find_by(id: @sales_commission_rep.employee_id)&.email || 'heatwaveteam@warmlyyours.com'
  recipient = 'epasek@warmlyyours.com'
  mail(from: sender, to: recipient, cc: 'epasek@warmlyyours.com,jbillen@warmlyyours.com', subject: 'Your commission has now been filed for payment')
end

#notify_sales_commission_to_pending_rep_approval(sales_commission_rep) ⇒ Object



33
34
35
36
37
38
39
40
# File 'app/mailers/sales_mailer.rb', line 33

def notify_sales_commission_to_pending_rep_approval(sales_commission_rep)
  @sales_commission_rep = sales_commission_rep
  sender = Employee.find_by(id: @sales_commission_rep.updater_id)&.email || 'heatwaveteam@warmlyyours.com'
  recipient = Employee.find_by(id: @sales_commission_rep.employee_id)&.email
  return unless recipient

  mail(from: sender, to: recipient, cc: 'epasek@warmlyyours.com,jbillen@warmlyyours.com', subject: "Please approve your commission report for #{@sales_commission_rep.commission_date.strftime('%b-%Y')}")
end

#notify_sales_manager_of_drop_event(customer_drop_event) ⇒ Object



56
57
58
59
60
61
62
# File 'app/mailers/sales_mailer.rb', line 56

def notify_sales_manager_of_drop_event(customer_drop_event)
  @customer_drop_event = customer_drop_event
  @customer = @customer_drop_event.customer
  sender = @customer_drop_event&.creator&.email || 'heatwaveteam@warmlyyours.com'
  recipient = 'epasek@warmlyyours.com'
  mail(from: sender, to: recipient, subject: "Customer Drop Event Triggered for #{@customer.full_name} [#{@customer.reference_number}] ")
end

#opportunity_copy_complete(target_customer, new_opportunity, user_email: nil, report: {}) ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
# File 'app/mailers/sales_mailer.rb', line 76

def opportunity_copy_complete(target_customer, new_opportunity, user_email: nil, report: {})
  user_email ||= 'heatwaveteam@warmlyyours.com'
  @target_customer = target_customer
  @opportunity_created = new_opportunity
  @report = report
  if @opportunity_created.present? && @report[:errors].blank?
    mail(from: user_email, to: user_email, subject: "Opportunity Copy Complete: #{@opportunity_created.name} #{@opportunity_created.reference_number}")
  else
    mail(from: user_email, to: 'heatwaveteam@warmlyyours.com', cc: user_email, subject: 'Opportunity Copy Failed')
  end
end

#quote_copy_complete(target_opportunity, new_quote, user_email: nil, report: {}) ⇒ Object



88
89
90
91
92
93
94
95
96
97
98
# File 'app/mailers/sales_mailer.rb', line 88

def quote_copy_complete(target_opportunity, new_quote, user_email: nil, report: {})
  user_email ||= 'heatwaveteam@warmlyyours.com'
  @target_opportunity = target_opportunity
  @quote_created = new_quote
  @report = report
  if @quote_created.present? && @report[:errors].blank?
    mail(from: user_email, to: user_email, subject: "Quote Copy Complete: #{@quote_created.reference_number_with_name}")
  else
    mail(from: user_email, to: 'heatwaveteam@warmlyyours.com', cc: user_email, subject: 'Quote Copy Failed')
  end
end