diff options
Diffstat (limited to 'FS')
| -rw-r--r-- | FS/FS/cust_pay.pm | 139 | 
1 files changed, 73 insertions, 66 deletions
diff --git a/FS/FS/cust_pay.pm b/FS/FS/cust_pay.pm index 7739203c4..285ab3f3c 100644 --- a/FS/FS/cust_pay.pm +++ b/FS/FS/cust_pay.pm @@ -664,11 +664,75 @@ sub send_receipt {         || ! $cust_bill       )    { -    my $msgnum = $conf->config('payment_receipt_msgnum', $cust_main->agentnum); +    $error = $self->send_message_receipt( +        'cust_main'      => $cust_main, +        'cust_bill'      => $opt->{cust_bill}, +        'cust_pkg'       => $opt->{cust_pkg}, +        'invoicing_list' => @invoicing_list, +        'msgnum'         => $conf->config('payment_receipt_msgnum', $cust_main->agentnum) +    ); + +  } elsif ( ! $cust_main->invoice_noemail ) { #not manual + +    # check to see if they want to send specific message template as receipt for auto payments +    if ( $conf->config('payment_receipt_msgnum_auto', $cust_main->agentnum) ) { +      $error = $self->send_message_receipt( +        'cust_main' => $cust_main, +        'cust_bill' => $opt->{cust_bill}, +        'msgnum'    => $conf->config('payment_receipt_msgnum_auto', $cust_main->agentnum), +      ); +    } +    else { +      my $queue = new FS::queue { +        'job'     => 'FS::cust_bill::queueable_email', +        'paynum'  => $self->paynum, +        'custnum' => $cust_main->custnum, +      }; + +      my %opt = ( +        'invnum'      => $cust_bill->invnum, +        'no_coupon'   => 1, +      ); + +      if ( my $mode = $conf->config('payment_receipt_statement_mode') ) { +        $opt{'mode'} = $mode; +      } else { +        # backward compatibility, no good fix for this yet as some people may +        # still have "invoice_latex_statement" and such options +        $opt{'template'} = 'statement'; +        $opt{'notice_name'} = 'Statement'; +      } + +      $error = $queue->insert(%opt); +    } + + + +  } + +  warn "send_receipt: $error\n" if $error; +} + +=item send_message_receipt + +sends out a message receipt. +send_message_receipt($cust_main, $msgnum); + +=cut + +sub send_message_receipt { +  my ($self, %opt) = @_; +  my $cust_main      = $opt{'cust_main'}; +  my $cust_bill      = $opt{'cust_bill'}; +  my $cust_pkg       = $opt{'cust_pkg'}; +  my @invoicing_list = $opt{'invoicing_list'}; +  my $msgnum         = $opt{'msgnum'}; +  my $error = ''; +      if ( $msgnum ) {        my %substitutions = (); -      $substitutions{invnum} = $opt->{cust_bill}->invnum if $opt->{cust_bill}; +      $substitutions{invnum} = $cust_bill->invnum if $cust_bill;        my $queue = new FS::queue {          'job'     => 'FS::Misc::process_send_email', @@ -684,7 +748,6 @@ sub send_receipt {          ),          'msgtype' => 'receipt', # override msg_template's default        ); -      } elsif ( $conf->exists('payment_receipt_email') ) {        my $receipt_template = new Text::Template ( @@ -716,13 +779,13 @@ sub send_receipt {          'company_name' => $conf->config('company_name', $cust_main->agentnum),        ); -      $fill_in{'invnum'} = $opt->{cust_bill}->invnum if $opt->{cust_bill}; +      $fill_in{'invnum'} = $cust_bill->invnum if $cust_bill; -      if ( $opt->{'cust_pkg'} ) { -        $fill_in{'pkg'} = $opt->{'cust_pkg'}->part_pkg->pkg; +      if ( $cust_pkg ) { +        $fill_in{'pkg'} = $cust_pkg->part_pkg->pkg;          #setup date, other things?        } - +              my $queue = new FS::queue {          'job'     => 'FS::Misc::process_send_generated_email',          'paynum'  => $self->paynum, @@ -735,69 +798,13 @@ sub send_receipt {          'to'      => \@invoicing_list,          'subject' => 'Payment receipt',          'body'    => [ $receipt_template->fill_in( HASH => \%fill_in ) ], -      ); - +      );        } else { -        warn "payment_receipt is on, but no payment_receipt_msgnum\n"; - -    } - -  } elsif ( ! $cust_main->invoice_noemail ) { #not manual - -    # check to see if they want to send specific message template as receipt for auto payments -    my $msgnum = $conf->config('payment_receipt_msgnum_auto', $cust_main->agentnum); -    if ( $msgnum ) { - -      my %substitutions = (); -      $substitutions{invnum} = $opt->{cust_bill}->invnum if $opt->{cust_bill}; - -      my $queue = new FS::queue { -        'job'     => 'FS::Misc::process_send_email', -        'paynum'  => $self->paynum, -        'custnum' => $cust_main->custnum, -      }; - -      $error = $queue->insert( -        FS::msg_template->by_key($msgnum)->prepare( -          'cust_main'     => $cust_main, -          'object'        => $self, -          'from_config'   => 'payment_receipt_from', -          'substitutions' => \%substitutions, -        ), -        'msgtype' => 'receipt', # override msg_template's default -      ); - -    } -    else { -      my $queue = new FS::queue { -        'job'     => 'FS::cust_bill::queueable_email', -        'paynum'  => $self->paynum, -        'custnum' => $cust_main->custnum, -      }; - -      my %opt = ( -        'invnum'      => $cust_bill->invnum, -        'no_coupon'   => 1, -      ); - -      if ( my $mode = $conf->config('payment_receipt_statement_mode') ) { -        $opt{'mode'} = $mode; -      } else { -        # backward compatibility, no good fix for this yet as some people may -        # still have "invoice_latex_statement" and such options -        $opt{'template'} = 'statement'; -        $opt{'notice_name'} = 'Statement'; -      } - -      $error = $queue->insert(%opt); +      $error = "payment_receipt is on, but no payment_receipt_msgnum";      } - - -  } -   -  warn "send_receipt: $error\n" if $error; +  return $error;  }  =item cust_bill_pay  | 
