import torrus 1.0.9
[freeside.git] / FS / FS / part_pkg / flat_delayed.pm
index cf4ffef..b4be72b 100644 (file)
@@ -3,28 +3,30 @@ package FS::part_pkg::flat_delayed;
 use strict;
 use vars qw(@ISA %info);
 #use FS::Record qw(qsearch qsearchs);
-use FS::part_pkg;
+use FS::part_pkg::flat;
 
-@ISA = qw(FS::part_pkg);
+@ISA = qw(FS::part_pkg::flat);
 
 %info = (
-    'name' => 'Free (or setup fee) for X days, then flat rate'.
-              ' (anniversary billing)',
-    'fields' =>  {
-      'setup_fee' => { 'name' => 'Setup fee for this package',
-                       'default' => 0,
-                     },
-      'free_days' => { 'name' => 'Initial free days',
-                       'default' => 0,
-                     },
-      'recur_fee' => { 'name' => 'Recurring fee for this package',
-                       'default' => 0,
-                      },
-    },
-    'fieldorder' => [ 'free_days', 'setup_fee', 'recur_fee' ],
-    #'setup' => '\'my $d = $cust_pkg->bill || $time; $d += 86400 * \' + what.free_days.value + \'; $cust_pkg->bill($d); $cust_pkg_mod_flag=1; \' + what.setup_fee.value',
-    #'recur' => 'what.recur_fee.value',
-    'weight' => 50,
+  'name' => 'Free (or setup fee) for X days, then flat rate'.
+            ' (anniversary billing)',
+  'shortname' => 'Anniversary, with intro period',
+  'inherit_fields' => [ 'global_Mixin' ],
+  'fields' =>  {
+    'free_days' => { 'name' => 'Initial free days',
+                     'default' => 0,
+                   },
+    'recur_notify' => { 'name' => 'Number of days before recurring billing'.
+                                  ' commences to notify customer. (0 means'.
+                                  ' no warning)',
+                     'default' => 0,
+                    },
+      },
+  'fieldorder' => [ 'free_days', 'recur_notify',
+                  ],
+  #'setup' => '\'my $d = $cust_pkg->bill || $time; $d += 86400 * \' + what.free_days.value + \'; $cust_pkg->bill($d); $cust_pkg_mod_flag=1; \' + what.setup_fee.value',
+  #'recur' => 'what.recur_fee.value',
+  'weight' => 12,
 );
 
 sub calc_setup {
@@ -37,9 +39,16 @@ sub calc_setup {
   $self->option('setup_fee');
 }
 
-sub calc_recur {
-  my($self, $cust_pkg ) = @_;
-  $self->option('recur_fee');
+sub calc_remain {
+  my ($self, $cust_pkg, %options) = @_;
+  my $next_bill = $cust_pkg->getfield('bill') || 0;
+  my $last_bill = $cust_pkg->last_bill || 0;
+  my $free_days = $self->option('free_days');
+
+  return 0 if    $last_bill + (86400 * $free_days) == $next_bill
+              && $last_bill == $cust_pkg->setup;
+
+  return $self->SUPER::calc_remain($cust_pkg, %options);
 }
 
 1;