Bugzilla – Attachment 142212 Details for
Bug 31115
Additional fields for invoices
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 31115: Add additional_attributes support to GetInvoices
Bug-31115-Add-additionalattributes-support-to-GetI.patch (text/plain), 6.06 KB, created by
Tomás Cohen Arazi
on 2022-10-19 20:28:14 UTC
(
hide
)
Description:
Bug 31115: Add additional_attributes support to GetInvoices
Filename:
MIME Type:
Creator:
Tomás Cohen Arazi
Created:
2022-10-19 20:28:14 UTC
Size:
6.06 KB
patch
obsolete
>From 258aacc178b9f6e036eafb4d876004feb25b51e8 Mon Sep 17 00:00:00 2001 >From: Tomas Cohen Arazi <tomascohen@theke.io> >Date: Wed, 19 Oct 2022 17:13:13 -0300 >Subject: [PATCH] Bug 31115: Add additional_attributes support to GetInvoices > >This patch adds support for searching additional_fields when retrieving >invoices using C4::Acquisition::Invoices. > >To test: >1. Apply this patch >2. Run: > $ kshell > k$ prove t/db_dependent/Acquisition.t >=> SUCCESS: Tests pass! >3. Sign off :-D > >Sponsored-by: The Research University in the Helmholtz Association (KIT) >--- > C4/Acquisition.pm | 25 ++++++++++++ > t/db_dependent/Acquisition.t | 73 +++++++++++++++++++++++++++++++++++- > 2 files changed, 96 insertions(+), 2 deletions(-) > >diff --git a/C4/Acquisition.pm b/C4/Acquisition.pm >index 1edd0520ef..12178420bf 100644 >--- a/C4/Acquisition.pm >+++ b/C4/Acquisition.pm >@@ -30,6 +30,7 @@ use C4::Templates qw(gettemplate); > use Koha::DateUtils qw( dt_from_string ); > use Koha::Acquisition::Baskets; > use Koha::Acquisition::Booksellers; >+use Koha::Acquisition::Invoices; > use Koha::Acquisition::Orders; > use Koha::Biblios; > use Koha::Exceptions; >@@ -2412,6 +2413,18 @@ asc is the default if omitted > sub GetInvoices { > my %args = @_; > >+ my $additional_fields = $args{additional_fields} // []; >+ my $matching_invoice_ids_for_additional_fields = []; >+ if ( @$additional_fields ) { >+ my @invoices = Koha::Acquisition::Invoices->filter_by_additional_fields($additional_fields)->as_list; >+ >+ return () unless @invoices; >+ >+ $matching_invoice_ids_for_additional_fields = [ map { >+ $_->id >+ } @invoices ]; >+ } >+ > my @columns = qw(invoicenumber booksellerid shipmentdate billingdate > closedate shipmentcost shipmentcost_budgetid); > >@@ -2504,6 +2517,18 @@ sub GetInvoices { > } > > $query .= " WHERE " . join(" AND ", @bind_strs) if @bind_strs; >+ >+ # Handle additional fields filtering >+ if ( @$additional_fields ) { >+ my $operator = ' WHERE'; >+ if ( @bind_strs ) { # there's a WHERE already >+ $operator = ' AND'; >+ } >+ $query .= "$operator aqinvoices.invoiceid IN (" >+ . join( ', ', @$matching_invoice_ids_for_additional_fields ) >+ . ')'; >+ } >+ > $query .= " GROUP BY aqinvoices.invoiceid, aqinvoices.invoicenumber, aqinvoices.booksellerid, aqinvoices.shipmentdate, aqinvoices.billingdate, aqinvoices.closedate, aqinvoices.shipmentcost, aqinvoices.shipmentcost_budgetid, aqinvoices.message_id, aqbooksellers.name"; > > if($args{order_by}) { >diff --git a/t/db_dependent/Acquisition.t b/t/db_dependent/Acquisition.t >index 0f3839ec07..1a4863943e 100755 >--- a/t/db_dependent/Acquisition.t >+++ b/t/db_dependent/Acquisition.t >@@ -19,7 +19,7 @@ use Modern::Perl; > > use POSIX qw(strftime); > >-use Test::More tests => 70; >+use Test::More tests => 71; > use t::lib::Mocks; > use Koha::Database; > use Koha::DateUtils qw(dt_from_string output_pref); >@@ -28,7 +28,7 @@ use Koha::Acquisition::Basket; > use MARC::File::XML ( BinaryEncoding => 'utf8', RecordFormat => 'MARC21' ); > > BEGIN { >- use_ok('C4::Acquisition', qw( NewBasket GetBasket AddInvoice GetInvoice ModReceiveOrder SearchOrders GetOrder GetHistory ModOrder get_rounding_sql get_rounded_price ReopenBasket ModBasket ModBasketHeader ModBasketUsers )); >+ use_ok('C4::Acquisition', qw( NewBasket GetBasket AddInvoice GetInvoice GetInvoices ModReceiveOrder SearchOrders GetOrder GetHistory ModOrder get_rounding_sql get_rounded_price ReopenBasket ModBasket ModBasketHeader ModBasketUsers )); > use_ok('C4::Biblio', qw( AddBiblio GetMarcSubfieldStructure )); > use_ok('C4::Budgets', qw( AddBudgetPeriod AddBudget GetBudget GetBudgetByOrderNumber GetBudgetsReport GetBudgets GetBudgetReport )); > use_ok('Koha::Acquisition::Orders'); >@@ -983,3 +983,72 @@ subtest 'Acquisition logging' => sub { > }; > > $schema->storage->txn_rollback(); >+ >+subtest 'GetInvoices() tests with additional fields' => sub { >+ >+ plan tests => 7; >+ >+ $schema->storage->txn_begin; >+ >+ my $builder = t::lib::TestBuilder->new; >+ >+ my $invoice_1 = $builder->build_object( >+ { >+ class => 'Koha::Acquisition::Invoices', >+ value => { >+ invoicenumber => 'whataretheodds1' >+ } >+ } >+ ); >+ my $invoice_2 = $builder->build_object( >+ { >+ class => 'Koha::Acquisition::Invoices', >+ value => { >+ invoicenumber => 'whataretheodds2' >+ } >+ } >+ ); >+ >+ >+ my $invoices = [ GetInvoices( invoicenumber => 'whataretheodds' ) ]; >+ is( scalar @{$invoices}, 2, 'Two invoices retrieved' ); >+ is( $invoices->[0]->{invoiceid}, $invoice_1->id ); >+ is( $invoices->[1]->{invoiceid}, $invoice_2->id ); >+ >+ my $additional_field_1 = $builder->build_object( >+ { class => 'Koha::AdditionalFields', >+ value => { >+ tablename => 'aqinvoices', >+ authorised_value_category => "", >+ } >+ } >+ ); >+ >+ my $additional_field_2 = $builder->build_object( >+ { class => 'Koha::AdditionalFields', >+ value => { >+ tablename => 'aqinvoices', >+ authorised_value_category => "", >+ } >+ } >+ ); >+ >+ $invoice_1->set_additional_fields([ { id => $additional_field_1->id, value => 'Ya-Hey' } ]); >+ $invoice_2->set_additional_fields([ { id => $additional_field_2->id, value => "Hey ho let's go" } ]); >+ >+ $invoices = [ GetInvoices( >+ invoicenumber => 'whataretheodds', >+ additional_fields => [{ id => $additional_field_1->id, value => 'Ya-Hey' }] >+ )]; >+ is( scalar @{$invoices}, 1, 'One invoice retrieved' ); >+ is( $invoices->[0]->{invoiceid}, $invoice_1->id, 'Ya-Hey' ); >+ >+ $invoices = [ GetInvoices( >+ invoicenumber => 'whataretheodds', >+ additional_fields => [{ id => $additional_field_2->id, value => "Hey ho let's go" }] >+ )]; >+ is( scalar @{$invoices}, 1, 'One invoice retrieved' ); >+ is( $invoices->[0]->{invoiceid}, $invoice_2->id, "Hey ho let's go" ); >+ >+ $schema->storage->txn_rollback; >+}; >-- >2.38.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 31115
:
137252
|
142210
|
142211
|
142212
|
142213
|
142250
|
142251
|
142252
|
142253
|
142533
|
142534
|
142535
|
142536
|
142537
|
142538