1 package FS::part_pkg::delayed_Mixin;
10 'free_days' => { 'name' => 'Initial free days',
13 'delay_setup' => { 'name' => 'Delay setup fee in addition to recurring fee',
16 'recur_notify' => { 'name' => 'Number of days before recurring billing'.
17 ' commences to notify customer. (0 means'.
22 'fieldorder' => [ 'free_days', 'delay_setup', 'recur_notify', ],
27 my( $cust_pkg, $time ) = @_;
29 unless ( $self->option('delay_setup', 1) ) {
30 my $d = $cust_pkg->bill || $time;
31 $d += 86400 * $self->option('free_days');
35 $self->NEXT::calc_setup(@_);
39 my ($self, $cust_pkg, %options) = @_;
41 unless ( $self->option('delay_setup', 1) ) {
42 my $last_bill = $cust_pkg->last_bill || 0;
43 my $next_bill = $cust_pkg->getfield('bill') || 0;
44 my $free_days = $self->option('free_days');
46 return 0 if $last_bill + (86400 * $free_days) == $next_bill
47 && $last_bill == $cust_pkg->setup;
50 return $self->NEXT::calc_remain($cust_pkg, %options);
53 sub can_start_date { ! shift->option('delay_setup', 1) }