rework suspension delays, RT#6956
authorivan <ivan>
Tue, 21 Jun 2011 22:14:20 +0000 (22:14 +0000)
committerivan <ivan>
Tue, 21 Jun 2011 22:14:20 +0000 (22:14 +0000)
FS/FS/part_event/Condition/pkg_dundate.pm
httemplate/search/cust_pkg.cgi
httemplate/search/report_cust_pkg.html

index 08b4e0a..f25db2a 100644 (file)
@@ -23,10 +23,10 @@ sub condition {
 
 }
 
-#sub condition_sql {
-#  my( $self, $table ) = @_;
-#
-#  'true';
-#}
+sub condition_sql {
+  my( $class, $table, %opt ) = @_;
+  return 'true' unless $table eq 'cust_pkg';
+  "COALESCE($table.dundate,0) <= ". $opt{'time'};
+}
 
 1;
index 3606a3d..7a6f49a 100755 (executable)
@@ -17,6 +17,7 @@
                                      emt('Next bill'),
                                      emt('Adjourn'),
                                      emt('Susp.'),
+                                     emt('Susp. delay'),
                                      emt('Expire'),
                                      emt('Contract end'),
                                      emt('Cancel'),
@@ -44,7 +45,7 @@
                     sub { FS::part_pkg::freq_pretty(shift); },
 
                     ( map { time_or_blank($_) }
-          qw( setup last_bill bill adjourn susp expire contract_end cancel ) ),
+          qw( setup last_bill bill adjourn susp dundate expire contract_end cancel ) ),
 
                     sub { my $self = shift;
                           my $return = '';
                     '',
                     '',
                     '',
+                    '',
                     FS::UI::Web::cust_colors(),
                     '',
                   ],
-                  'style' => [ '', '', '', '', 'b', '', '', '', '', '', '', '', '', '', '', '', '',
+                  'style' => [ '', '', '', '', 'b', '', '', '', '', '', '', '', '', '', '', '', '', '',
                                FS::UI::Web::cust_styles() ],
                   'size'  => [ '', '', '', '', '-1' ],
-                  'align' => 'rrlccrrlrrrrrrrrl'. FS::UI::Web::cust_aligns(). 'r',
+                  'align' => 'rrlccrrlrrrrrrrrrl'. FS::UI::Web::cust_aligns(). 'r',
                   'links' => [
                     $link,
                     $link,
                     '',
                     '',
                     '',
+                    '',
                     ( map { $_ ne 'Cust. Status' ? $clink : '' }
                           FS::UI::Web::cust_header(
                                                     $cgi->param('cust_fields')
@@ -176,9 +179,9 @@ $search_hash{report_option} = join(',', @report_option) if @report_option;
 #false laziness w/report_cust_pkg.html
 my %disable = (
   'all'             => {},
-  'one-time charge' => { 'last_bill'=>1, 'bill'=>1, 'adjourn'=>1, 'susp'=>1, 'expire'=>1, 'cancel'=>1, },
+  'one-time charge' => { 'last_bill'=>1, 'bill'=>1, 'adjourn'=>1, 'susp'=>1, 'expire'=>1, 'cancel'=>1, 'contract_end'=>1, 'dundate'=>1, },
   'active'          => { 'susp'=>1, 'cancel'=>1 },
-  'suspended'       => { 'cancel' => 1 },
+  'suspended'       => { 'cancel' =>1, 'dundate'=>1, },
   'cancelled'       => {},
   ''                => {},
 );
index 289fec4..d9b6cd7 100755 (executable)
@@ -33,7 +33,7 @@
 
           if ( what.options[what.selectedIndex].value == '<% $status %>' ) {
 
-%           foreach my $field (qw( setup last_bill bill adjourn susp expire cancel )) {
+%           foreach my $field (@date_fields) {
 %             if ( $disable{$status}->{$field} ) {
 
                 what.form.<% $field %>_beginning_text.disabled = true;
@@ -89,7 +89,7 @@
 
 %   }
 
-%   foreach my $field (qw( setup last_bill bill adjourn susp expire contract_end cancel )) {
+%   foreach my $field (@date_fields) {
 
       <TR>
         <TD ALIGN="right" VALIGN="center"><% $label{$field} %></TD>
@@ -174,24 +174,26 @@ if ( $cgi->param('custnum') =~ /^(\d+)$/ ) {
 </%init>
 <%once>
 
-my %label = (
-  'setup'     => 'Setup',
-  'last_bill' => 'Last bill',
-  'bill'      => 'Next bill',
-  'adjourn'   => 'Adjourns',
-  'susp'      => 'Suspended',
-  'expire'    => 'Expires',
+tie my %label, 'Tie::IxHash',
+  'setup'        => 'Setup',
+  'last_bill'    => 'Last bill',
+  'bill'         => 'Next bill',
+  'adjourn'      => 'Adjourns',
+  'susp'         => 'Suspended',
+  'dundate'      => 'Suspension delayed until',
+  'expire'       => 'Expires',
   'contract_end' => 'Contract ends',
-  'cancel'    => 'Cancelled',
-);
+  'cancel'       => 'Cancelled',
+;
+my @date_fields = keys %label;
 
 #false laziness w/cust_pkg.cgi
 my %disable = (
   'all'             => {},
   'not yet billed'  => { 'setup'=>1, 'last_bill'=>1, 'bill'=>1, 'adjourn'=>1, 'susp'=>1, 'expire'=>1, 'cancel'=>1, },
-  'one-time charge' => { 'last_bill'=>1, 'bill'=>1, 'adjourn'=>1, 'susp'=>1, 'expire'=>1, 'cancel'=>1, },
+  'one-time charge' => { 'last_bill'=>1, 'bill'=>1, 'adjourn'=>1, 'susp'=>1, 'expire'=>1, 'cancel'=>1, 'contract_end'=>1, 'dundate'=>1, },
   'active'          => { 'susp'=>1, 'cancel'=>1 },
-  'suspended'       => { 'cancel' => 1 },
+  'suspended'       => { 'cancel'=>1, 'dundate'=>1, },
   'cancelled'       => {},
   ''                => {},
 );
@@ -202,6 +204,7 @@ my %checkbox = (
   'last_bill' => 0,
   'bill'      => 0,
   'susp'      => 1,
+  'dundate'   => 1,
   'expire'    => 1,
   'cancel'    => 1,
 );