add a config option to set the Business::OnlinePayment description field,
authorivan <ivan>
Sat, 6 Apr 2002 22:32:43 +0000 (22:32 +0000)
committerivan <ivan>
Sat, 6 Apr 2002 22:32:43 +0000 (22:32 +0000)
and make some useful data available for the config option.
closes: Bug#378

FS/FS/Conf.pm
FS/FS/cust_bill.pm
FS/FS/cust_bill_pkg.pm
FS/FS/cust_main.pm

index bda19c0..74e28d8 100644 (file)
@@ -269,6 +269,13 @@ httemplate/docs/config.html
   },
 
   {
+    'key'         => 'business-onlinepayment-description',
+    'section'     => 'billing',
+    'description' => 'String passed as the description field to <a href="http://search.cpan.org/search?mode=module&query=Business%3A%3AOnlinePayment">Business::OnlinePayment</a>.  Evaluated as a double-quoted perl string, with the following variables available: <code>$agent</code> (the agent name), and <code>$pkgs</code> (a comma-separated list of packages to which the invoiced being charged applies)',
+    'type'        => 'textarea',
+  },
+
+  {
     'key'         => 'bsdshellmachines',
     'section'     => 'shell',
     'description' => 'Your BSD flavored shell (and mail) machines, one per line.  This enables export of `/etc/passwd\' and `/etc/master.passwd\'.',
index 0a8d4a4..2461e42 100644 (file)
@@ -478,6 +478,19 @@ sub realtime_card {
   my $email = $invoicing_list[0];
 
   my( $action1, $action2 ) = split(/\s*\,\s*/, $bop_action );
+
+  my $description = 'Internet Services';
+  if ( $conf->exists('business-onlinepayment-description') ) {
+    my $dtempl = $conf->config('business-onlinepayment-description');
+
+    my $agent = $self->cust_main->agent->agent;
+    my $pkgs = join(', ',
+      map { $_->cust_pkg->part_pkg->pkg }
+        grep { $_->pkgnum } $self->cust_bill_pkg
+    );
+    $description = eval qq("$dtempl");
+
+  }
   
   my $transaction =
     new Business::OnlinePayment( $bop_processor, @bop_options );
@@ -486,7 +499,7 @@ sub realtime_card {
     'login'          => $bop_login,
     'password'       => $bop_password,
     'action'         => $action1,
-    'description'    => 'Internet Services',
+    'description'    => $description,
     'amount'         => $amount,
     'invoice_number' => $self->invnum,
     'customer_id'    => $self->custnum,
@@ -520,7 +533,7 @@ sub realtime_card {
       order_number   => $ordernum,
       amount         => $amount,
       authorization  => $auth,
-      description    => 'Internet Services',
+      description    => $description,
     );
 
     $capture->submit();
@@ -887,7 +900,7 @@ sub print_text {
 
 =head1 VERSION
 
-$Id: cust_bill.pm,v 1.24 2002-03-18 21:40:17 ivan Exp $
+$Id: cust_bill.pm,v 1.25 2002-04-06 22:32:43 ivan Exp $
 
 =head1 BUGS
 
index b3d3fcd..72f9ce4 100644 (file)
@@ -125,11 +125,22 @@ sub check {
   ''; #no error
 }
 
+=item cust_pkg
+
+Returns the package (see L<FS::cust_pkg>) for this invoice line item.
+
+=cut
+
+sub cust_pkg {
+  my $self = shift;
+  qsearchs( 'cust_pkg', { 'pkgnum' => $self->pkgnum } );
+}
+
 =back
 
 =head1 VERSION
 
-$Id: cust_bill_pkg.pm,v 1.2 2001-02-11 17:34:44 ivan Exp $
+$Id: cust_bill_pkg.pm,v 1.3 2002-04-06 22:32:43 ivan Exp $
 
 =head1 BUGS
 
index b59b0d1..499d149 100644 (file)
@@ -817,6 +817,17 @@ sub cancel {
   grep { $_->cancel } $self->ncancelled_pkgs;
 }
 
+=item agent
+
+Returns the agent (see L<FS::agent>) for this customer.
+
+=cut
+
+sub agent {
+  my $self = shift;
+  qsearchs( 'agent', { 'agent' => $self->agentnum } );
+}
+
 =item bill OPTIONS
 
 Generates invoices (see L<FS::cust_bill>) for this customer.  Usually used in