summaryrefslogtreecommitdiff
path: root/httemplate/search
diff options
context:
space:
mode:
Diffstat (limited to 'httemplate/search')
-rw-r--r--httemplate/search/cust_bill_pkg_discount.html64
-rw-r--r--httemplate/search/cust_pkg_discount.html48
-rw-r--r--httemplate/search/report_cust_bill_pkg_discount.html43
-rw-r--r--httemplate/search/report_cust_pkg_discount.html31
4 files changed, 145 insertions, 41 deletions
diff --git a/httemplate/search/cust_bill_pkg_discount.html b/httemplate/search/cust_bill_pkg_discount.html
index f598341a0..6da5787a0 100644
--- a/httemplate/search/cust_bill_pkg_discount.html
+++ b/httemplate/search/cust_bill_pkg_discount.html
@@ -7,6 +7,7 @@
'header' => [
#'#',
'Discount',
+ 'Class',
'Amount',
'Months',
'Package',
@@ -17,6 +18,7 @@
'fields' => [
#'billpkgdiscountnum',
sub { $_[0]->cust_pkg_discount->discount->description },
+ sub { $_[0]->cust_pkg_discount->discount->classname },
sub { sprintf($money_char.'%.2f', shift->amount ) },
sub { my $m = shift->months;
$m =~ /\./ ? sprintf('%.2f', $m) : $m;
@@ -28,6 +30,7 @@
],
'sort_fields' => [
'',
+ '',
'amount',
'months',
'pkg',
@@ -40,6 +43,7 @@
'',
'',
'',
+ '',
$ilink,
$ilink,
( map { $_ ne 'Cust. Status' ? $clink : '' }
@@ -47,7 +51,7 @@
),
],
#'align' => 'rlrrrc'.FS::UI::Web::cust_aligns(),
- 'align' => 'lrrlrr'.FS::UI::Web::cust_aligns(),
+ 'align' => 'lcrrlrr'.FS::UI::Web::cust_aligns(),
'color' => [
#'',
'',
@@ -56,6 +60,7 @@
'',
'',
'',
+ '',
FS::UI::Web::cust_colors(),
],
'style' => [
@@ -66,6 +71,7 @@
'',
'',
'',
+ '',
FS::UI::Web::cust_styles(),
],
@@ -98,7 +104,51 @@ if ( $cgi->param('usernum') =~ /^(\d+)$/ ) {
push @where, "cust_pkg_discount.usernum = $1";
}
-# #classnum
+# (discount) classnum
+my $join_discount = '';
+#false laziness w/cust_pkg_discount.html and cust_pkg.pm::search
+if ( grep { $_ eq 'discount_classnum' } $cgi->param ) {
+
+# my @classnum = ();
+# if ( ref($params->{'discount_classnum'}) ) {
+#
+# if ( ref($params->{'discount_classnum'}) eq 'HASH' ) {
+# @classnum = grep $params->{'discount_classnum'}{$_}, keys %{ $params->{'discount_classnum'} };
+# } elsif ( ref($params->{'discount_classnum'}) eq 'ARRAY' ) {
+# @classnum = @{ $params->{'discount_classnum'} };
+# } else {
+# die 'unhandled discount_classnum ref '. $params->{'discount_classnum'};
+# }
+#
+#
+# } elsif ( $params->{'discount_classnum'} =~ /^(\d*)$/ && $1 ne '0' ) {
+# @classnum = ( $1 );
+# }
+#
+# if ( @classnum ) {
+
+ if ( $cgi->param('discount_classnum') =~ /^(\d*)$/ && $1 ne '0' ) {
+ my @classnum = ( $1 );
+
+ $join_discount = 'LEFT JOIN discount USING (discountnum)';
+
+ my @c_where = ();
+ my @nums = grep $_, @classnum;
+ push @c_where, 'discount.classnum IN ('. join(',',@nums). ')' if @nums;
+ my $null = scalar( grep { $_ eq '' } @classnum );
+ push @c_where, 'discount.classnum IS NULL' if $null;
+
+ if ( scalar(@c_where) == 1 ) {
+ push @where, @c_where;
+ } elsif ( @c_where ) {
+ push @where, ' ( '. join(' OR ', @c_where). ' ) ';
+ }
+
+ }
+
+}
+
+# #(package) classnum
# # not specified: all classes
# # 0: empty class
# # N: classnum
@@ -121,7 +171,7 @@ if ( $cgi->param('usernum') =~ /^(\d+)$/ ) {
# }
# }
-my $count_query = "SELECT COUNT(*), SUM(amount)";
+my $count_query = "SELECT COUNT(*), SUM(cust_bill_pkg_discount.amount)";
my $join_cust_pkg_discount =
'LEFT JOIN cust_pkg_discount USING (pkgdiscountnum)';
@@ -137,11 +187,11 @@ my $join_pkg =
#LEFT JOIN part_pkg AS override
# ON pkgpart_override = override.pkgpart ';
+my $join = "$join_cust_pkg_discount $join_discount $join_pkg $join_cust";
+
my $where = ' WHERE '. join(' AND ', @where);
-$count_query .=
- " FROM cust_bill_pkg_discount $join_cust_pkg_discount $join_pkg $join_cust ".
- $where;
+$count_query .= " FROM cust_bill_pkg_discount $join $where";
my @select = (
'cust_bill_pkg_discount.*',
@@ -155,7 +205,7 @@ push @select, 'cust_main.custnum',
my $query = {
'table' => 'cust_bill_pkg_discount',
- 'addl_from' => "$join_cust_pkg_discount $join_pkg $join_cust",
+ 'addl_from' => $join,
'hashref' => {},
'select' => join(', ', @select ),
'extra_sql' => $where,
diff --git a/httemplate/search/cust_pkg_discount.html b/httemplate/search/cust_pkg_discount.html
index 23af1802e..f0c7447a5 100644
--- a/httemplate/search/cust_pkg_discount.html
+++ b/httemplate/search/cust_pkg_discount.html
@@ -6,6 +6,7 @@
#'redirect' => $link,
'header' => [ 'Status',
'Discount',
+ 'Class',
'Months used',
'Employee',
'Package',
@@ -16,6 +17,7 @@
'fields' => [
sub { ucfirst( shift->status ) },
sub { shift->discount->description },
+ sub { shift->discount->classname },
sub { my $m = shift->months_used;
$m =~ /\./ ? sprintf('%.2f',$m) : $m;
},
@@ -29,17 +31,19 @@
'',
'',
'',
+ '',
( map { $_ ne 'Cust. Status' ? $clink : ''}
FS::UI::Web::cust_header()
),
],
- 'align' => 'clrll'. FS::UI::Web::cust_aligns(),
+ 'align' => 'clcrll'. FS::UI::Web::cust_aligns(),
'color' => [
'',
'',
'',
'',
'',
+ '',
FS::UI::Web::cust_colors(),
],
'style' => [
@@ -48,6 +52,7 @@
'',
'',
'',
+ '',
FS::UI::Web::cust_styles(),
],
@@ -78,6 +83,47 @@ if ( $cgi->param('status') eq 'active' ) {
"; #XXX also end date
}
+#classnum
+#false laziness w/cust_pkg.pm::search
+if ( grep { $_ eq 'classnum' } $cgi->param ) {
+
+# my @classnum = ();
+# if ( ref($params->{'classnum'}) ) {
+#
+# if ( ref($params->{'classnum'}) eq 'HASH' ) {
+# @classnum = grep $params->{'classnum'}{$_}, keys %{ $params->{'classnum'} };
+# } elsif ( ref($params->{'classnum'}) eq 'ARRAY' ) {
+# @classnum = @{ $params->{'classnum'} };
+# } else {
+# die 'unhandled classnum ref '. $params->{'classnum'};
+# }
+#
+#
+# } elsif ( $params->{'classnum'} =~ /^(\d*)$/ && $1 ne '0' ) {
+# @classnum = ( $1 );
+# }
+#
+# if ( @classnum ) {
+
+ if ( $cgi->param('classnum') =~ /^(\d*)$/ && $1 ne '0' ) {
+ my @classnum = ( $1 );
+
+ my @c_where = ();
+ my @nums = grep $_, @classnum;
+ push @c_where, 'discount.classnum IN ('. join(',',@nums). ')' if @nums;
+ my $null = scalar( grep { $_ eq '' } @classnum );
+ push @c_where, 'discount.classnum IS NULL' if $null;
+
+ if ( scalar(@c_where) == 1 ) {
+ push @where, @c_where;
+ } elsif ( @c_where ) {
+ push @where, ' ( '. join(' OR ', @c_where). ' ) ';
+ }
+
+ }
+
+}
+
#usernum
if ( $cgi->param('usernum') =~ /^(\d+)$/ ) {
push @where, "cust_pkg_discount.usernum = $1";
diff --git a/httemplate/search/report_cust_bill_pkg_discount.html b/httemplate/search/report_cust_bill_pkg_discount.html
index f9ab901b5..77affd19d 100644
--- a/httemplate/search/report_cust_bill_pkg_discount.html
+++ b/httemplate/search/report_cust_bill_pkg_discount.html
@@ -1,30 +1,35 @@
-<% include('/elements/header.html', 'Discount report' ) %>
+<& /elements/header.html, 'Discount report' &>
<FORM ACTION="cust_bill_pkg_discount.html" METHOD="GET">
<TABLE>
- <% include( '/elements/tr-select-user.html',
- 'label' => 'Discounts by employee: ',
- 'access_user' => \%access_user,
- )
- %>
+ <& /elements/tr-select-discount_class.html,
+ 'field' => 'discount_classnum',
+ 'pre_options' => [ '0' => 'all' ],
+ 'empty_label' => '(none)'
+ &>
- <% include( '/elements/tr-select-agent.html',
- 'curr_value' => scalar( $cgi->param('agentnum') ),
- 'label' => 'for agent: ',
- 'disable_empty' => 0,
- )
- %>
+ <& /elements/tr-select-user.html,
+ 'label' => 'Discounts by employee: ',
+ 'access_user' => \%access_user,
+ &>
- <% include( '/elements/tr-input-beginning_ending.html' ) %>
+ <& /elements/tr-select-agent.html,
+ 'curr_value' => scalar( $cgi->param('agentnum') ),
+ 'label' => 'for agent: ',
+ 'disable_empty' => 0,
+ &>
- <% include( '/elements/tr-input-lessthan_greaterthan.html',
- 'label' => 'Amount',
- 'field' => 'amount',
- )
- %>
+ <& /elements/tr-input-beginning_ending.html &>
+
+<!-- doesn't actually work yet, needs support in cust_bill_pkg_discount.html
+ <& /elements/tr-input-lessthan_greaterthan.html,
+ 'label' => 'Amount',
+ 'field' => 'amount',
+ &>
+-->
</TABLE>
@@ -33,7 +38,7 @@
</FORM>
-<% include('/elements/footer.html') %>
+<& /elements/footer.html &>
<%init>
die "access denied"
diff --git a/httemplate/search/report_cust_pkg_discount.html b/httemplate/search/report_cust_pkg_discount.html
index 31774c384..7f0e55fed 100644
--- a/httemplate/search/report_cust_pkg_discount.html
+++ b/httemplate/search/report_cust_pkg_discount.html
@@ -1,4 +1,4 @@
-<% include('/elements/header.html', 'Package discount report' ) %>
+<& /elements/header.html, 'Package discount report' &>
<FORM ACTION="cust_pkg_discount.html" METHOD="GET">
@@ -6,7 +6,7 @@
<TABLE>
<TR>
- <TD>Discount status</TD>
+ <TD ALIGN="right">Discount status</TD>
<TD>
<SELECT NAME="status">
<OPTION VALUE="active">Active
@@ -16,18 +16,21 @@
</TD>
</TR>
- <% include( '/elements/tr-select-user.html',
- 'label' => 'Discounts by employee: ',
- 'access_user' => \%access_user,
- )
- %>
+ <& /elements/tr-select-discount_class.html,
+ 'pre_options' => [ '0' => 'all' ],
+ 'empty_label' => '(none)'
+ &>
- <% include( '/elements/tr-select-agent.html',
- 'curr_value' => scalar( $cgi->param('agentnum') ),
- 'label' => 'for agent: ',
- 'disable_empty' => 0,
- )
- %>
+ <& /elements/tr-select-user.html,
+ 'label' => 'Discounts by employee: ',
+ 'access_user' => \%access_user,
+ &>
+
+ <& /elements/tr-select-agent.html,
+ 'curr_value' => scalar( $cgi->param('agentnum') ),
+ 'label' => 'for agent: ',
+ 'disable_empty' => 0,
+ &>
</TABLE>
@@ -36,7 +39,7 @@
</FORM>
-<% include('/elements/footer.html') %>
+<& /elements/footer.html &>
<%init>
die "access denied"