summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan <ivan>2011-06-16 23:06:20 +0000
committerivan <ivan>2011-06-16 23:06:20 +0000
commitdbe1f22d63052dbbfe8b3cb578a0d831213ebb75 (patch)
tree64d085d5a4045b5e95b84c09a13146e34cb4450e
parentd01937e1d00012b5221f676178710e4e47618c2c (diff)
rework suspension delays, RT#6956
-rw-r--r--FS/FS/Schema.pm1
-rw-r--r--FS/FS/cust_pkg.pm1
-rw-r--r--FS/FS/part_event/Condition/pkg_dundate.pm32
-rwxr-xr-xhttemplate/misc/delay_susp_pkg.html4
-rwxr-xr-xhttemplate/misc/process/delay_susp_pkg.html22
-rw-r--r--httemplate/view/cust_main/packages/status.html9
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,
)
}