Bug 31115: Add additional field filtering for invoice search
This patch adds support for filtering invoice searches on additional fields. To test: 1. Generate additional fields for invoices 2. Have invoices with additional fields 3. Use invoice searching and play with filtering by additional fields. => SUCCESS: It works! 4. Sign off :-D Sponsored-by: The Research University in the Helmholtz Association (KIT) Signed-off-by: Michaela Sieber <michaela.sieber@kit.edu> Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
parent
77eba5d1b2
commit
c02a1ea2a0
|
|
@ -36,6 +36,7 @@ use C4::Acquisition qw( GetInvoices GetInvoice );
|
|||
use C4::Budgets qw( GetBudget GetBudgets CanUserUseBudget );
|
||||
use Koha::DateUtils qw( dt_from_string );
|
||||
use Koha::Acquisition::Booksellers;
|
||||
use Koha::AdditionalFields;
|
||||
|
||||
my $input = CGI->new;
|
||||
my ( $template, $loggedinuser, $cookie, $flags ) = get_template_and_user(
|
||||
|
|
@ -62,25 +63,47 @@ my $branch = $input->param('branch');
|
|||
my $message_id = $input->param('message_id');
|
||||
my $op = $input->param('op');
|
||||
|
||||
my @additional_fields = Koha::AdditionalFields->search(
|
||||
{ tablename => 'aqinvoices',
|
||||
searchable => 1
|
||||
}
|
||||
)->as_list;
|
||||
my @additional_field_filters;
|
||||
for my $field (@additional_fields) {
|
||||
my $value = $input->param( 'additional_field_' . $field->id );
|
||||
if ( defined $value and $value ne '' ) {
|
||||
push @additional_field_filters,
|
||||
{ id => $field->id,
|
||||
value => $value,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
my $invoices = [];
|
||||
if ( $op and $op eq 'do_search' ) {
|
||||
@{$invoices} = GetInvoices(
|
||||
invoicenumber => $invoicenumber,
|
||||
supplierid => $supplierid,
|
||||
shipmentdatefrom => $shipmentdatefrom,
|
||||
shipmentdateto => $shipmentdateto,
|
||||
billingdatefrom => $billingdatefrom,
|
||||
billingdateto => $billingdateto,
|
||||
isbneanissn => $isbneanissn,
|
||||
title => $title,
|
||||
author => $author,
|
||||
publisher => $publisher,
|
||||
publicationyear => $publicationyear,
|
||||
branchcode => $branch,
|
||||
message_id => $message_id,
|
||||
invoicenumber => $invoicenumber,
|
||||
supplierid => $supplierid,
|
||||
shipmentdatefrom => $shipmentdatefrom,
|
||||
shipmentdateto => $shipmentdateto,
|
||||
billingdatefrom => $billingdatefrom,
|
||||
billingdateto => $billingdateto,
|
||||
isbneanissn => $isbneanissn,
|
||||
title => $title,
|
||||
author => $author,
|
||||
publisher => $publisher,
|
||||
publicationyear => $publicationyear,
|
||||
branchcode => $branch,
|
||||
message_id => $message_id,
|
||||
additional_fields => \@additional_field_filters,
|
||||
);
|
||||
}
|
||||
|
||||
$template->param(
|
||||
additional_field_filters => { map { $_->{id} => $_->{value} } @additional_field_filters },
|
||||
additional_fields_for_invoice => \@additional_fields,
|
||||
);
|
||||
|
||||
# Build suppliers list
|
||||
my @suppliers = Koha::Acquisition::Booksellers->search( undef, { order_by => { -asc => 'name' } } )->as_list;
|
||||
my $suppliers_loop = [];
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
[% USE raw %]
|
||||
[% USE Asset %]
|
||||
[% USE AuthorisedValues %]
|
||||
[% USE KohaDates %]
|
||||
[% USE Branches %]
|
||||
[% SET footerjs = 1 %]
|
||||
|
|
@ -385,6 +386,25 @@
|
|||
[% PROCESS options_for_libraries libraries => Branches.all( selected => branch, unfiltered => 1 ) %]
|
||||
</select>
|
||||
</li>
|
||||
[% FOR field IN additional_fields_for_invoice %]
|
||||
<li>
|
||||
<label for="additional_field_[% field.id | html %]ID"> [% field.name | html %]: </label>
|
||||
[% IF field.authorised_value_category %]
|
||||
<select id="additional_field_[% field.id | html %]" name="additional_field_[% field.id | html %]">
|
||||
<option value="">All</option>
|
||||
[% FOREACH av IN AuthorisedValues.GetAuthValueDropbox(field.authorised_value_category) %]
|
||||
[% IF av.authorised_value == additional_field_filters.${field.id} %]
|
||||
<option value="[% av.authorised_value | html %]" selected="selected">[% av.lib | html %]</option>
|
||||
[% ELSE %]
|
||||
<option value="[% av.authorised_value | html %]">[% av.lib | html %]</option>
|
||||
[% END %]
|
||||
[% END %]
|
||||
</select>
|
||||
[% ELSE %]
|
||||
<input id="additional_field_[% field.id | html %]" type="text" value="[% additional_field_filters.${field.id} | html %]" name="additional_field_[% field.id | html %]" />
|
||||
[% END %]
|
||||
</li>
|
||||
[% END %]
|
||||
</ol>
|
||||
<fieldset class="action">
|
||||
<input type="submit" value="Search" />
|
||||
|
|
|
|||
Loading…
Reference in New Issue