'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', '', '', '',
|| $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')
--- /dev/null
+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;
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>
-<% header("Package suspension delayed") %>
+<% header($msg) %>
<SCRIPT TYPE="text/javascript">
window.top.location.reload();
</SCRIPT>
$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>
<% 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 ) %>
}
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,
)
}