X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fview%2Fcust_main%2Fpackages.html;h=43ebb282b188bd831640ba5dac6b653eca2247ec;hp=475e18949c62e3cbc200c5bda59be90718359a5a;hb=a832fdcc15e848eb6b63998403cad11cf3d6e3c3;hpb=4b2b65e322f09922513d6d23fc50bfe3b69af36d diff --git a/httemplate/view/cust_main/packages.html b/httemplate/view/cust_main/packages.html index 475e18949..43ebb282b 100755 --- a/httemplate/view/cust_main/packages.html +++ b/httemplate/view/cust_main/packages.html @@ -44,6 +44,7 @@ table.hiddenrows { } + % # activate rolldown buttons for hidden package blocks +
+% my $br = 0; + +% if ( $total_pkgs > $maxrecords ) { + +% if ( 1 ) { #FS::pkg_class->num_pkg_class ) { + <% $br++ ? ' | ' : '' %> + Class: <& /elements/select-cust-pkg_class.html, + curr_value => scalar($cgi->param('classnum')), + onchange => 'classnum_changed(this);', + pre_options => [ '-1' => 'all', + '0' => '(none)', + ], + &> +% } + + <% $br++ ? ' | ' : '' %> + Status: <& /elements/select-cust_pkg-status.html, + curr_value => scalar($cgi->param('status')), + onchange => 'status_changed(this);', + &> + +% if ( 1 ) { #$cust_main->num_cust_location ) { + <% $br++ ? ' | ' : '' %> + Location: <& /elements/select-cust_location.html, + cust_main => $cust_main, + curr_value => scalar($cgi->param('locationnum')), + addnew => 0, + onchange => 'locationnum_changed(this);', + pre_options => [ '-1' => 'all', ], + &> +% } + + + +% } + +<% $br++ ? ' | ' : '' %> % if ( $cust_main->num_cancelled_pkgs ) { % if ( $cgi->param('showcancelledpackages') eq '0' #see if it was set by me % || ( $conf->exists('hidecancelledpackages') @@ -92,24 +154,25 @@ if ( el ) el.scrollIntoView(true); % { % my $prev = $cgi->param('showcancelledpackages'); % $cgi->param('showcancelledpackages', 1); - ( <% mt('show') |h %> + <% mt('show') |h %> % $cgi->param('showcancelledpackages', $prev); % } else { % $cgi->param('showcancelledpackages', 0); - ( <% mt('hide') |h %> + <% mt('hide') |h %> % $cgi->param('showcancelledpackages', 1); % } - <% mt('cancelled packages') |h %> ) + <% mt('cancelled packages') |h %> % } +<% $br++ ? ' | ' : '' %> % if ( $cgi->param('showoldpackages') ) { % $cgi->param('showoldpackages', 0); - ( <% mt('hide old packages') |h %> ) + <% mt('hide old packages') |h %> % $cgi->param('showoldpackages', 1); % } else { % $cgi->param('showoldpackages', 1); - ( <% mt('show old packages') |h %> ) + <% mt('show old packages') |h %> % $cgi->param('showoldpackages', 0); % } @@ -192,47 +255,79 @@ my $group_by = my $num_svcs = '( SELECT COUNT(*) FROM cust_svc '. ' WHERE cust_svc.pkgnum = cust_pkg.pkgnum ) AS num_svcs'; +my $addl_from = ' + LEFT JOIN part_pkg USING ( pkgpart ) + LEFT JOIN cust_pkg AS chgto ON ( chgto.change_to_pkgnum = cust_pkg.pkgnum ) + LEFT JOIN cust_pkg AS chgfrom ON ( chgfrom.change_pkgnum = cust_pkg.pkgnum ) +'; + my $extra_sql = - ' AND main_pkgnum IS NULL '. # supplemental package of something else - ' AND change_to_pkgnum IS NULL '. # ordered, not-yet-active change target - ' AND change_pkgnum IS NULL '; # canceled package changed into another + ' AND cust_pkg.main_pkgnum IS NULL '. # supplemental package of something else + ' AND chgto.pkgnum IS NULL '. # ordered, not-yet-active change target + ' AND chgfrom.pkgnum IS NULL '; # canceled package changed into another unless ( $cgi->param('showoldpackages') ) { my $years = $conf->config('cust_main-packages-years') || 2; my $then = time - $years * 31556926; #60*60*24*365.2422 is close enough $extra_sql .= " AND ( - ( part_pkg.freq = '0' AND ( setup IS NULL OR setup > $then ) ) - OR ( part_pkg.freq != '0' AND ( cancel IS NULL OR cancel > $then ) ) + ( part_pkg.freq = '0' + AND ( cust_pkg.setup IS NULL OR cust_pkg.setup > $then ) + ) + OR ( part_pkg.freq != '0' + AND ( cust_pkg.cancel IS NULL OR cust_pkg.cancel > $then ) + ) OR EXISTS ( SELECT 1 FROM cust_svc WHERE cust_svc.pkgnum = cust_pkg.pkgnum ) )"; } -my $num_method = $hide_cancelled ? 'ncancelled_pkgs' : 'all_pkgs'; -my $num_pkgs = $cust_main->$num_method({ - 'addl_from' => 'LEFT JOIN part_pkg USING ( pkgpart )', +if ( $cgi->param('classnum') =~ /^(\d+)$/ ) { + my $classnum = $1; + if ( $classnum == 0 ) { + $extra_sql .= " AND part_pkg.classnum IS NULL "; + } else { + $extra_sql .= " AND part_pkg.classnum = $classnum "; + } +} + +if ( $cgi->param('status') =~ /^([\w ]+)$/ ) { + my $status = $1; + $extra_sql .= ' AND '. FS::cust_pkg->status_sql. " = '$status' "; +} + +if ( $cgi->param('locationnum') =~ /^(\d+)$/ ) { + my $locationnum = $1; + $extra_sql .= " AND cust_pkg.locationnum = $locationnum "; +} + +my $total_pkgs = $cust_main->all_pkgs; + +my $method = $hide_cancelled ? 'ncancelled_pkgs' : 'all_pkgs'; +my $num_pkgs = $cust_main->$method({ + 'addl_from' => $addl_from, 'extra_sql' => $extra_sql, }); my $maxrecords = 10; my $offset = $cgi->param('offset') =~ /^(\d+)$/ ? $1 : 0; +$cgi->delete('offset'); -my @packages = $cust_main->all_pkgs( { +my @packages = $cust_main->$method( { 'select' => "$cust_pkg_fields, $part_pkg_fields, $num_svcs", - 'addl_from' => qq{ - LEFT JOIN part_pkg USING ( pkgpart ) + 'addl_from' => $addl_from. " LEFT JOIN part_pkg_option AS setup_option ON ( cust_pkg.pkgpart = setup_option.pkgpart AND setup_option.optionname = 'setup_fee' ) LEFT JOIN part_pkg_option AS recur_option ON ( cust_pkg.pkgpart = recur_option.pkgpart AND recur_option.optionname = 'recur_fee' ) - }, + ", 'extra_sql' => $extra_sql, 'order_by' => "ORDER BY pkgnum ASC LIMIT $maxrecords OFFSET $offset", } ); foreach my $cust_pkg ( @packages ) { + my %hash = $cust_pkg->hash; my %part_pkg = map { /^part_pkg_(.+)$/ or die; ( $1 => $hash{$_} ); } grep { /^part_pkg_/ } keys %hash; @@ -244,24 +339,34 @@ foreach my $cust_pkg ( @packages ) { ] ); #for future changes - my $change_to = - qsearchs('cust_pkg', { change_to_pkgnum=>$cust_pkg->pkgnum }); - if ( $change_to ) { - $change_to->set('change_from_pkg', $cust_pkg); + if ( $cust_pkg->change_to_pkgnum ) { + my $change_to = + qsearchs('cust_pkg', { pkgnum=>$cust_pkg->change_to_pkgnum }); $cust_pkg->set('change_to_pkg', $change_to); + $change_to->set('change_from_pkg', $cust_pkg); } #for past changes - my $changed_from = - qsearchs('cust_pkg', { change_pkgnum=>$cust_pkg->pkgnum }); - if ( $changed_from ) { - $changed_from->set('changed_to_pkg', $cust_pkg); - $cust_pkg->set('changed_from_pkg', $changed_from); - } + setfrom($cust_pkg); $cust_pkg->{'_cust_pkg_discount_active'} = [ $cust_pkg->cust_pkg_discount_active ]; } +sub setfrom { + my $cust_pkg = shift; + + if ( $cust_pkg->change_pkgnum ) { + my $changed_from = + qsearchs('cust_pkg', { pkgnum=>$cust_pkg->change_pkgnum }); + $cust_pkg->set('changed_from_pkg', $changed_from); + $changed_from->set('changed_to_pkg', $cust_pkg); + + setfrom($changed_from); + + } + +} +