'fields' => \@fields,
'links' => \@links,
'align' => $align,
+ 'link_field' => 'pkgpart',
)
%>
<%init>
my $orderby = 'pkgpart';
my %hash = ();
my $extra_count = '';
+my $family_pkgpart;
if ( $cgi->param('active') ) {
$orderby = 'num_active DESC';
)";
}
+if ( $cgi->param('family') =~ /^(\d+)$/ ) {
+ $family_pkgpart = $1;
+ push @where, "family_pkgpart = $1";
+ # Hiding disabled or one-time charges and limiting by classnum aren't
+ # very useful in this mode, so all links should still refer back to the
+ # non-family-limited display.
+ $cgi->param('showdisabled', 1);
+ $cgi->delete('family');
+}
+
push @where, FS::part_pkg->curuser_pkgs_sql
unless $acl_edit_global;
One or more service definitions are grouped together into a package
definition and given pricing information. Customers purchase packages
rather than purchase services directly.<BR><BR>
- <FORM METHOD="POST" ACTION="${p}edit/part_pkg.cgi">
+ <FORM METHOD="GET" ACTION="${p}edit/part_pkg.cgi">
<A HREF="${p}edit/part_pkg.cgi"><I>Add a new package definition</I></A>
or
!.include('/elements/select-part_pkg.html', 'element_name' => 'clone' ). qq!
$part_pkg->part_pkg_discount;
[
+ ( !$family_pkgpart &&
+ $part_pkg->pkgpart == $part_pkg->family_pkgpart ? () : [
+ {
+ 'align'=> 'center',
+ 'colspan' => 2,
+ 'size' => '-1',
+ 'data' => '<b>Show all versions</b>',
+ 'link' => $p.'browse/part_pkg.cgi?family='.$part_pkg->family_pkgpart,
+ }
+ ] ),
[
{ data =>$plan,
align=>'center',
sprintf('%.2f', $part_pkg->option('setup_fee') ),
align=>'right'
},
- { data => ( $is_recur ? ' setup' : ' one-time' ),
+ { data => ( ( $is_recur ? ' setup' : ' one-time' ).
+ ( $part_pkg->option('recur_fee') == 0
+ && $part_pkg->setup_show_zero
+ ? ' (printed on invoices)'
+ : ''
+ )
+ ),
align=>'left',
},
],
[
- { data=>( $is_recur
- ? $money_char.sprintf('%.2f ', $part_pkg->option('recur_fee') )
- : $part_pkg->freq_pretty
- ),
+ { data=>(
+ $is_recur
+ ? $money_char. sprintf('%.2f ', $part_pkg->option('recur_fee'))
+ : $part_pkg->freq_pretty
+ ),
align=> ( $is_recur ? 'right' : 'center' ),
colspan=> ( $is_recur ? 1 : 2 ),
},
( $is_recur
- ? { data => ( $is_recur ? $part_pkg->freq_pretty : '' ),
+ ? { data => ( $is_recur
+ ? $part_pkg->freq_pretty.
+ ( $part_pkg->option('recur_fee') == 0
+ && $part_pkg->recur_show_zero
+ ? ' (printed on invoices)'
+ : ''
+ )
+ : '' ),
align=>'left',
}
: ()
),
],
+ ( map { my $dst_pkg = $_->dst_pkg;
+ [
+ { data => 'Supplemental: '.
+ '<A HREF="#'. $dst_pkg->pkgpart . '">' .
+ $dst_pkg->pkg . '</A>',
+ align=> 'center',
+ colspan => 2,
+ }
+ ]
+ }
+ $part_pkg->supp_part_pkg_link
+ ),
( map {
my $dst_pkg = $_->dst_pkg;
[
[ map {
[
- { 'data' => $_,
+ { 'data' => "$_: ",
'align' => 'right',
},
{ 'data' => $part_pkg->format($_,$options{$_}),