RT#38217 Send email when logging conditions are met [default template & dump-email_to...
[freeside.git] / FS / FS / part_event / Action / pkg_referral_credit.pm
1 package FS::part_event::Action::pkg_referral_credit;
2
3 use strict;
4 use base qw( FS::part_event::Action::Mixin::credit_flat
5              FS::part_event::Action  );
6
7 sub description { 'Credit the referring customer a specific amount'; }
8
9 sub eventtable_hashref {
10   { 'cust_pkg' => 1 };
11 }
12
13 sub do_action {
14   my( $self, $cust_pkg, $cust_event ) = @_;
15
16   my $cust_main = $self->cust_main($cust_pkg);
17
18 #  my $part_pkg = $cust_pkg->part_pkg;
19
20   return 'No referring customer' unless $cust_main->referral_custnum;
21
22   my $referring_cust_main = $cust_main->referring_cust_main;
23   return 'Referring customer is cancelled'
24     if $referring_cust_main->status eq 'cancelled';
25
26   my $warning = '';
27   my $amount    = $self->_calc_credit($cust_pkg, $referring_cust_main, \$warning);
28   return $warning unless $amount > 0;
29
30   my $reasonnum = $self->option('reasonnum');
31
32   my $error = $referring_cust_main->credit(
33     $amount, 
34     \$reasonnum,
35     'eventnum' => $cust_event->eventnum,
36     'addlinfo' => 'for customer #'. $cust_main->display_custnum.
37                                ': '.$cust_main->name,
38   );
39   die "Error crediting customer ". $cust_main->referral_custnum.
40       " for referral: $error"
41     if $error;
42
43 }
44
45 1;