correctly pass arguments when manually re-emailing/printing invoices, #26076
authorMark Wells <mark@freeside.biz>
Tue, 7 Jan 2014 19:48:58 +0000 (11:48 -0800)
committerMark Wells <mark@freeside.biz>
Tue, 7 Jan 2014 19:48:58 +0000 (11:48 -0800)
FS/FS/cust_bill.pm
FS/FS/cust_event.pm

index cdce7be..1569ef4 100644 (file)
@@ -1396,7 +1396,7 @@ sub email {
   my $self = shift;
   return if $self->hide;
   my $conf = $self->conf;
   my $self = shift;
   return if $self->hide;
   my $conf = $self->conf;
-  my $opt = shift;
+  my $opt = shift || {};
   if ($opt and !ref($opt)) {
     die "FS::cust_bill::email called with positional parameters";
   }
   if ($opt and !ref($opt)) {
     die "FS::cust_bill::email called with positional parameters";
   }
@@ -1471,7 +1471,7 @@ I<notice_name>, if specified, overrides "Invoice" as the name of the sent docume
 sub lpr_data {
   my $self = shift;
   my $conf = $self->conf;
 sub lpr_data {
   my $self = shift;
   my $conf = $self->conf;
-  my $opt = shift;
+  my $opt = shift || {};
   if ($opt and !ref($opt)) {
     # nobody does this anyway
     die "FS::cust_bill::lpr_data called with positional parameters";
   if ($opt and !ref($opt)) {
     # nobody does this anyway
     die "FS::cust_bill::lpr_data called with positional parameters";
@@ -1497,7 +1497,7 @@ sub print {
   my $self = shift;
   return if $self->hide;
   my $conf = $self->conf;
   my $self = shift;
   return if $self->hide;
   my $conf = $self->conf;
-  my $opt = shift;
+  my $opt = shift || {};
   if ($opt and !ref($opt)) {
     die "FS::cust_bill::print called with positional parameters";
   }
   if ($opt and !ref($opt)) {
     die "FS::cust_bill::print called with positional parameters";
   }
@@ -1532,7 +1532,7 @@ sub fax_invoice {
   my $self = shift;
   return if $self->hide;
   my $conf = $self->conf;
   my $self = shift;
   return if $self->hide;
   my $conf = $self->conf;
-  my $opt = shift;
+  my $opt = shift || {};
   if ($opt and !ref($opt)) {
     die "FS::cust_bill::fax_invoice called with positional parameters";
   }
   if ($opt and !ref($opt)) {
     die "FS::cust_bill::fax_invoice called with positional parameters";
   }
index 6a67c08..78d4217 100644 (file)
@@ -479,9 +479,15 @@ sub re_X {
     my $cust_X = $cust_event->cust_X; # cust_bill
     next unless $cust_X->can($method);
 
     my $cust_X = $cust_event->cust_X; # cust_bill
     next unless $cust_X->can($method);
 
-    $cust_X->$method( $cust_event->part_event->templatename
-                      || $cust_X->agent_template
-                    );
+    my $part_event = $cust_event->part_event;
+    my $template = $part_event->templatename
+                   || $cust_X->agent_template;
+    my $modenum = $part_event->option('modenum') || '';
+    my $invoice_from = $part_event->option('agent_invoice_from') || '';
+    $cust_X->set('mode' => $modenum);
+    $cust_X->$method( { template      => $template,
+                        modenum       => $modenum,
+                        invoice_from  => $invoice_from } );
 
     if ( $job ) { #progressbar foo
       $num++;
 
     if ( $job ) { #progressbar foo
       $num++;