diff options
| -rw-r--r-- | FS/FS/Schema.pm | 1 | ||||
| -rw-r--r-- | FS/FS/cust_pkg.pm | 1 | ||||
| -rw-r--r-- | FS/FS/part_event/Condition/pkg_dundate.pm | 32 | ||||
| -rwxr-xr-x | httemplate/misc/delay_susp_pkg.html | 4 | ||||
| -rwxr-xr-x | httemplate/misc/process/delay_susp_pkg.html | 22 | ||||
| -rw-r--r-- | httemplate/view/cust_main/packages/status.html | 9 | 
6 files changed, 59 insertions, 10 deletions
diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index 25912a22f..9dc5dc6f8 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -1436,6 +1436,7 @@ sub tables_hashref {          'cancel',         @date_type,             '', '',           'expire',         @date_type,             '', '',           'contract_end',   @date_type,             '', '', +        'dundate',        @date_type,             '', '',          'change_date',    @date_type,             '', '',          'change_pkgnum',       'int', 'NULL', '', '', '',          'change_pkgpart',      'int', 'NULL', '', '', '', diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm index deb1cf1fe..872a6446a 100644 --- a/FS/FS/cust_pkg.pm +++ b/FS/FS/cust_pkg.pm @@ -596,6 +596,7 @@ sub check {      || $self->ut_numbern('cancel')      || $self->ut_numbern('adjourn')      || $self->ut_numbern('expire') +    || $self->ut_numbern('dundate')      || $self->ut_enum('no_auto', [ '', 'Y' ])      || $self->ut_enum('waive_setup', [ '', 'Y' ])      || $self->ut_numbern('agent_pkgid') diff --git a/FS/FS/part_event/Condition/pkg_dundate.pm b/FS/FS/part_event/Condition/pkg_dundate.pm new file mode 100644 index 000000000..08b4e0abc --- /dev/null +++ b/FS/FS/part_event/Condition/pkg_dundate.pm @@ -0,0 +1,32 @@ +package FS::part_event::Condition::pkg_dundate; +use base qw( FS::part_event::Condition ); + +use strict; + +sub description { +  "Skip until package suspension delay date"; +} + +sub eventtable_hashref { +  { 'cust_main' => 0, +    'cust_bill' => 0, +    'cust_pkg'  => 1, +  }; +} + +sub condition { +  my($self, $cust_pkg, %opt) = @_; + +  #my $cust_main = $self->cust_main($cust_pkg); + +  $cust_pkg->dundate <= $opt{time}; + +} + +#sub condition_sql { +#  my( $self, $table ) = @_; +# +#  'true'; +#} + +1; diff --git a/httemplate/misc/delay_susp_pkg.html b/httemplate/misc/delay_susp_pkg.html index 8adc40d55..e5f1d8cb3 100755 --- a/httemplate/misc/delay_susp_pkg.html +++ b/httemplate/misc/delay_susp_pkg.html @@ -68,6 +68,10 @@ my $title = 'Delay Suspension of Package';  my $cust_pkg = qsearchs('cust_pkg', {'pkgnum' => $pkgnum})    or die "Unknown pkgnum: $pkgnum"; +$date = time2str($date_format, $cust_pkg->dundate)  +  if $cust_pkg->dundate +  && ! $cgi->param('error'); +  my $part_pkg = $cust_pkg->part_pkg;  </%init> diff --git a/httemplate/misc/process/delay_susp_pkg.html b/httemplate/misc/process/delay_susp_pkg.html index 8649cc235..675da0496 100755 --- a/httemplate/misc/process/delay_susp_pkg.html +++ b/httemplate/misc/process/delay_susp_pkg.html @@ -1,4 +1,4 @@ -<% header("Package suspension delayed") %> +<% header($msg) %>    <SCRIPT TYPE="text/javascript">      window.top.location.reload();    </SCRIPT> @@ -21,21 +21,27 @@ $cgi->param('pkgnum') =~ /^(\d+)$/ or die "Illegal pkgnum";  $pkgnum = $1;  #untaint date -parse_datetime($cgi->param('date')) =~ /^(\d+)$/ or die "Illegal date"; -my $date = $1; +my $date = ''; +my $msg = ''; +if ( $cgi->param('date') ) { +  parse_datetime($cgi->param('date')) =~ /^(\d+)$/ or die "Illegal date"; +  $date = $1; +  $msg = 'Package suspension delayed'; +} else { +  $msg = 'Suspension delay removed'; +}  $cust_pkg = qsearchs( 'cust_pkg', {'pkgnum'=>$pkgnum} );  if ($cust_pkg) { -  $cust_main = $cust_pkg->cust_main; -  $cust_main->dundate( $date ); -  $error = $cust_main->replace; +  $cust_pkg->dundate( $date ); +  $error = $cust_pkg->replace;  } else { -  $error = "Invalid pkgnum"; +  $error = "Unknown pkgnum";  }  if ($error) {    $cgi->param('error', $error); -  print $cgi->redirect(popurl(2). "cancel_pkg.html?". $cgi->query_string ); +  print $cgi->redirect(popurl(2). "delay_susp_pkg.html?". $cgi->query_string );  }  </%init> diff --git a/httemplate/view/cust_main/packages/status.html b/httemplate/view/cust_main/packages/status.html index 4492dad89..537554e86 100644 --- a/httemplate/view/cust_main/packages/status.html +++ b/httemplate/view/cust_main/packages/status.html @@ -172,6 +172,7 @@        <% pkg_status_row_if( $cust_pkg, $last_bill_or_renewed, 'last_bill', %opt, curuser=>$curuser ) %>        <% pkg_status_row_if( $cust_pkg, $next_bill_or_prepaid_until, 'bill', %opt, curuser=>$curuser ) %>        <% pkg_status_row_if($cust_pkg, emt('Will automatically suspend by'), 'autosuspend', %opt) %> +      <% pkg_status_row_if($cust_pkg, emt('Automatic suspension delayed until'), 'dundate', %opt) %>        <% pkg_status_row_if( $cust_pkg, emt('Will suspend on'), 'adjourn', %opt, curuser=>$curuser ) %>        <% pkg_status_row_if( $cust_pkg, emt('Expires'), 'expire', %opt, curuser=>$curuser ) %>        <% pkg_status_row_if( $cust_pkg, emt('Contract ends'), 'contract_end', %opt ) %> @@ -422,11 +423,15 @@ sub pkg_adjourn_link {  }  sub pkg_delay_link  { +  my($cust_pkg) = shift;    include( '/elements/popup_link-cust_pkg.html',               'action'      => $p. 'misc/delay_susp_pkg.html', -             'label'       => emt('Delay suspend'), +             'label'       => ( $cust_pkg->dundate +                                  ? emt('Edit suspension delay') +                                  : emt('Delay suspend') +                              ),               'actionlabel' => emt('Delay suspend for'), -             'cust_pkg'    => shift, +             'cust_pkg'    => $cust_pkg,           )  }  | 
