diff options
-rw-r--r-- | FS/FS/vend_bill.pm | 13 | ||||
-rw-r--r-- | httemplate/elements/select-vend_class.html | 18 | ||||
-rw-r--r-- | httemplate/elements/tr-select-vend_class.html | 27 | ||||
-rw-r--r-- | httemplate/search/report_vend_bill.html | 7 | ||||
-rw-r--r-- | httemplate/search/vend_bill.html | 2 |
5 files changed, 62 insertions, 5 deletions
diff --git a/FS/FS/vend_bill.pm b/FS/FS/vend_bill.pm index 81de6949e..c8fcdd746 100644 --- a/FS/FS/vend_bill.pm +++ b/FS/FS/vend_bill.pm @@ -193,6 +193,7 @@ sub search { my ($class, $param) = @_; my @where = (); + my $addl_from = ''; #_date if ( $param->{_date} ) { @@ -202,7 +203,7 @@ sub search { "vend_bill._date < $ending"; } - #_date + #payment_date if ( $param->{payment_date} ) { my($beginning, $ending) = @{$param->{payment_date}}; @@ -210,11 +211,17 @@ sub search { "vend_pay._date < $ending"; } + if ( $param->{'classnum'} =~ /^(\d+)$/ ) { + #also simplistic, but good for now + $addl_from .= ' LEFT JOIN vend_main USING (vendnum) '; + push @where, "vend_main.classnum = $1"; + } + my $extra_sql = scalar(@where) ? ' WHERE '. join(' AND ', @where) : ''; #simplistic, but how we are for now - my $addl_from = ' LEFT JOIN vend_bill_pay USING (vendbillnum) '. - ' LEFT JOIN vend_pay USING (vendpaynum) '; + $addl_from .= ' LEFT JOIN vend_bill_pay USING (vendbillnum) '. + ' LEFT JOIN vend_pay USING (vendpaynum) '; my $count_query = "SELECT COUNT(*), SUM(charged) FROM vend_bill $addl_from $extra_sql"; diff --git a/httemplate/elements/select-vend_class.html b/httemplate/elements/select-vend_class.html new file mode 100644 index 000000000..e323988de --- /dev/null +++ b/httemplate/elements/select-vend_class.html @@ -0,0 +1,18 @@ +<% include( '/elements/select-table.html', + 'table' => 'vend_class', + 'name_col' => 'classname', + 'value' => $classnum, + 'empty_label' => '(none)', + 'hashref' => { 'disabled' => '' }, + %opt, + ) +%> +<%init> + +my %opt = @_; +my $classnum = $opt{'curr_value'} || $opt{'value'}; + +$opt{'records'} = delete $opt{'vend_class'} + if $opt{'vend_class'}; + +</%init> diff --git a/httemplate/elements/tr-select-vend_class.html b/httemplate/elements/tr-select-vend_class.html new file mode 100644 index 000000000..b17191bc0 --- /dev/null +++ b/httemplate/elements/tr-select-vend_class.html @@ -0,0 +1,27 @@ +% if ( 0 ) { # scalar(@{ $opt{'vend_class'} }) == 0 ) { + + <INPUT TYPE="hidden" NAME="<% $opt{'element_name'} || $opt{'field'} || 'classnum' %>" VALUE=""> + +% } else { + + <TR> + <TD ALIGN="right"><% $opt{'label'} || 'Vendor class' %></TD> + <TD> + <% include( '/elements/select-vend_class.html', + 'curr_value' => $classnum, + %opt + ) + %> + </TD> + </TR> + +% } + +<%init> + +my %opt = @_; +my $classnum = $opt{'curr_value'} || $opt{'value'}; + +$opt{'vend_class'} ||= [ qsearch( 'vend_class', { disabled=>'' } ) ]; + +</%init> diff --git a/httemplate/search/report_vend_bill.html b/httemplate/search/report_vend_bill.html index defda70ae..4f391fde8 100644 --- a/httemplate/search/report_vend_bill.html +++ b/httemplate/search/report_vend_bill.html @@ -4,7 +4,7 @@ <TABLE BGCOLOR="#cccccc" CELLSPACING=0> - <TR> + <TR> <TD ALIGN="right" VALIGN="center"><% mt('Date') |h %></TD> <TD> <TABLE> @@ -16,7 +16,7 @@ </TD> </TR> - <TR> + <TR> <TD ALIGN="right" VALIGN="center"><% mt('Payment date') |h %></TD> <TD> <TABLE> @@ -28,6 +28,9 @@ </TD> </TR> + <& /elements/tr-select-vend_class.html, + &> + </TABLE> <BR> diff --git a/httemplate/search/vend_bill.html b/httemplate/search/vend_bill.html index 33eb2241c..9bc74cfc5 100644 --- a/httemplate/search/vend_bill.html +++ b/httemplate/search/vend_bill.html @@ -40,6 +40,8 @@ $search{'_date'} = [ $beginning, $ending ]; ($beginning, $ending) = FS::UI::Web::parse_beginning_ending($cgi, 'payment_date'); $search{'payment_date'} = [ $beginning, $ending ]; +$search{'classnum'} = $cgi->param('classnum'); + my $query = FS::vend_bill->search( \%search ); my $count_query = delete( $query->{'count_query'} ); |