add price plan option for prepaid packages to cancel instead of suspend
authorivan <ivan>
Sun, 22 Oct 2006 05:18:37 +0000 (05:18 +0000)
committerivan <ivan>
Sun, 22 Oct 2006 05:18:37 +0000 (05:18 +0000)
FS/FS/part_pkg/prepaid.pm
FS/bin/freeside-prepaidd

index 5e7d2ba..ca4acb5 100644 (file)
@@ -1,20 +1,30 @@
 package FS::part_pkg::prepaid;
 
 use strict;
-use vars qw(@ISA %info);
+use vars qw(@ISA %info %recur_action);
+use Tie::IxHash;
 use FS::part_pkg::flat;
 
 @ISA = qw(FS::part_pkg::flat);
 
+tie %recur_action, 'Tie::IxHash',
+  'suspend' => 'suspend',
+  'cancel'  => 'cancel',
+;
+
 %info = (
   'name' => 'Prepaid, flat rate',
   'fields' => {
-    'setup_fee' => { 'name' => 'One-time setup fee for this package',
-                     'default' => 0,
-                   },
-    'recur_fee' => { 'name' => 'Initial and recharge fee for this package',
-                     'default' => 0,
-                   }
+    'setup_fee'   =>  { 'name' => 'One-time setup fee for this package',
+                        'default' => 0,
+                      },
+    'recur_fee'   =>  { 'name' => 'Initial and recharge fee for this package',
+                        'default' => 0,
+                      },
+    'recur_action' => { 'name' => 'Action to take upon reaching end of prepaid preiod',
+                        'type' => 'select',
+                       'select_options' => \%recur_action,
+                     },
   },
   'fieldorder' => [ 'setup_fee', 'recur_fee', ],
   'weight' => 25,
index e51a563..1f57316 100644 (file)
@@ -37,8 +37,12 @@ while (1) {
                      " AND ( cancel IS NULL OR cancel = 0)"
     } )
   ) {
-    my $error = $cust_pkg->suspend;
-    warn "Error suspended package ". $cust_pkg->pkgnum.
+
+    my $action = $cust_pkg->part_pkg->option('recur_action') || 'suspend';
+
+    my $error = $cust_pkg->$action();
+
+    warn "Error ${action}ing package ". $cust_pkg->pkgnum.
          " for custnum ". $cust_pkg->custnum.
          ": $error\n"
       if $error;
@@ -65,8 +69,8 @@ freeside-prepaidd - Real-time daemon for prepaid packages
 
 =head1 DESCRIPTION
 
-Runs continuously and suspendes any prepaid customer packages which have
-passed their renewal date (next bill date).
+Runs continuously and suspends or cancels any prepaid customer packages which
+have passed their renewal date (next bill date).
 
 =head1 SEE ALSO