Bugzilla – Attachment 142250 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 support for additional fields for invoices
Bug-31115-Add-support-for-additional-fields-for-in.patch (text/plain), 9.60 KB, created by
Lukas Koszyk
on 2022-10-20 14:32:23 UTC
(
hide
)
Description:
Bug 31115: Add support for additional fields for invoices
Filename:
MIME Type:
Creator:
Lukas Koszyk
Created:
2022-10-20 14:32:23 UTC
Size:
9.60 KB
patch
obsolete
>From 5b57c5811cadaa3a6fdabbc3293a168446a876af Mon Sep 17 00:00:00 2001 >From: Tomas Cohen Arazi <tomascohen@theke.io> >Date: Wed, 19 Oct 2022 17:12:38 -0300 >Subject: [PATCH] Bug 31115: Add support for additional fields for invoices > >This patch adds support for additional fields for invoices. A new option >is added to the 'Additional fields' admin page, for the 'aqinvoices' >table. > >Adding/editing invoices now supports this additional fields. > >To test: >1. Apply this patches >2. Verify the original test plan works >=> SUCCESS: It does! >3. Sign off :-D > >Sponsored-by: The Research University in the Helmholtz Association (KIT) >Signed-off-by: Michaela Sieber <michaela.sieber@kit.edu> >--- > Koha/Acquisition/Invoice.pm | 2 +- > Koha/Acquisition/Invoices.pm | 2 +- > Koha/Schema/Result/Aqinvoice.pm | 16 ++++++++++++ > acqui/invoice.pl | 22 ++++++++++++++++ > acqui/parcels.pl | 25 ++++++++++++++++++- > .../prog/en/modules/acqui/invoice.tt | 5 ++++ > .../prog/en/modules/acqui/parcels.tt | 5 ++++ > .../en/modules/admin/additional-fields.tt | 5 +++- > 8 files changed, 78 insertions(+), 4 deletions(-) > >diff --git a/Koha/Acquisition/Invoice.pm b/Koha/Acquisition/Invoice.pm >index df46b65a30..be36b5d718 100644 >--- a/Koha/Acquisition/Invoice.pm >+++ b/Koha/Acquisition/Invoice.pm >@@ -19,7 +19,7 @@ use Modern::Perl; > > use Koha::Database; > >-use base qw(Koha::Object); >+use base qw(Koha::Object Koha::Object::Mixin::AdditionalFields); > > =head1 NAME > >diff --git a/Koha/Acquisition/Invoices.pm b/Koha/Acquisition/Invoices.pm >index 4fb1d92f9b..3c530d73e0 100644 >--- a/Koha/Acquisition/Invoices.pm >+++ b/Koha/Acquisition/Invoices.pm >@@ -21,7 +21,7 @@ use Koha::Database; > > use Koha::Acquisition::Invoice; > >-use base qw(Koha::Objects); >+use base qw(Koha::Objects Koha::Objects::Mixin::AdditionalFields); > > =head1 NAME > >diff --git a/Koha/Schema/Result/Aqinvoice.pm b/Koha/Schema/Result/Aqinvoice.pm >index e27cbfa20a..89fea491df 100644 >--- a/Koha/Schema/Result/Aqinvoice.pm >+++ b/Koha/Schema/Result/Aqinvoice.pm >@@ -220,6 +220,22 @@ __PACKAGE__->belongs_to( > # Created by DBIx::Class::Schema::Loader v0.07049 @ 2021-01-21 13:39:29 > # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:LkekSbup37Z2WVnU/c9K+g > >+__PACKAGE__->has_many( >+ "additional_field_values", >+ "Koha::Schema::Result::AdditionalFieldValue", >+ sub { >+ my ($args) = @_; >+ >+ return { >+ "$args->{foreign_alias}.record_id" => { -ident => "$args->{self_alias}.invoiceid" }, >+ >+ "$args->{foreign_alias}.field_id" => >+ { -in => \'(SELECT id FROM additional_fields WHERE tablename="aqinvoices")' }, >+ }; >+ }, >+ { cascade_copy => 0, cascade_delete => 0 }, >+); >+ > sub koha_object_class { > 'Koha::Acquisition::Invoice'; > } >diff --git a/acqui/invoice.pl b/acqui/invoice.pl >index f283f9721c..0f8f57b6f6 100755 >--- a/acqui/invoice.pl >+++ b/acqui/invoice.pl >@@ -38,9 +38,11 @@ use C4::Log qw(logaction); > > use Koha::Acquisition::Booksellers; > use Koha::Acquisition::Currencies qw( get_active ); >+use Koha::AdditionalFields; > use Koha::DateUtils qw( output_pref ); > use Koha::Misc::Files; > use Koha::Acquisition::Invoice::Adjustments; >+use Koha::Acquisition::Invoices; > > my $input = CGI->new; > my ( $template, $loggedinuser, $cookie, $flags ) = get_template_and_user( >@@ -125,6 +127,18 @@ elsif ( $op && $op eq 'mod' ) { > MergeInvoices($invoiceid, \@sources); > defined($invoice_files) && $invoice_files->MergeFileRecIds(@sources); > } >+ >+ my @additional_fields; >+ my $invoice_fields = Koha::AdditionalFields->search({ tablename => 'aqinvoices' }); >+ while ( my $field = $invoice_fields->next ) { >+ my $value = $input->param('additional_field_' . $field->id); >+ push @additional_fields, { >+ id => $field->id, >+ value => $value, >+ }; >+ } >+ Koha::Acquisition::Invoices->find($invoiceid)->set_additional_fields(\@additional_fields); >+ > $template->param( modified => 1 ); > } > elsif ( $op && $op eq 'delete' ) { >@@ -298,6 +312,14 @@ foreach my $r ( @{$budgets} ) { > my $adjustments = Koha::Acquisition::Invoice::Adjustments->search({ invoiceid => $details->{'invoiceid'} }); > if ( $adjustments ) { $template->param( adjustments => $adjustments ); } > >+my $invoice = Koha::Acquisition::Invoices->find($invoiceid); >+$template->param( >+ available_additional_fields => Koha::AdditionalFields->search( { tablename => 'aqinvoices' } ), >+ additional_field_values => { map { >+ $_->field->id => $_->value >+ } $invoice->additional_field_values->as_list }, >+); >+ > $template->param( > invoiceid => $details->{'invoiceid'}, > invoicenumber => $details->{'invoicenumber'}, >diff --git a/acqui/parcels.pl b/acqui/parcels.pl >index 9fa697a179..985947ef56 100755 >--- a/acqui/parcels.pl >+++ b/acqui/parcels.pl >@@ -75,6 +75,8 @@ use C4::Acquisition qw( GetInvoices GetInvoice AddInvoice ); > use C4::Budgets qw( GetBudgetHierarchy GetBudget CanUserUseBudget ); > > use Koha::Acquisition::Booksellers; >+use Koha::Acquisition::Invoices; >+use Koha::AdditionalFields; > use Koha::DateUtils qw( dt_from_string ); > > my $input = CGI->new; >@@ -118,6 +120,7 @@ if ( $op and $op eq 'new' ) { > } > $op = 'confirm' unless $template->{'VARS'}->{'duplicate_invoices'}; > } >+ > if ($op and $op eq 'confirm') { > my $invoiceid = AddInvoice( > invoicenumber => $invoicenumber, >@@ -126,7 +129,23 @@ if ($op and $op eq 'confirm') { > shipmentcost => $shipmentcost, > shipmentcost_budgetid => $shipmentcost_budgetid, > ); >- if(defined $invoiceid) { >+ if (defined $invoiceid) { >+ >+ my @additional_fields; >+ my $invoice_fields = Koha::AdditionalFields->search({ tablename => 'aqinvoices' }); >+ while ( my $field = $invoice_fields->next ) { >+ my $value = $input->param('additional_field_' . $field->id); >+ if (defined $value) { >+ push @additional_fields, { >+ id => $field->id, >+ value => $value, >+ }; >+ } >+ } >+ if (@additional_fields) { >+ my $invoice = Koha::Acquisition::Invoices->find( $invoiceid ); >+ $invoice->set_additional_fields(\@additional_fields); >+ } > # Successful 'Add' > print $input->redirect("/cgi-bin/koha/acqui/parcel.pl?invoiceid=$invoiceid"); > exit 0; >@@ -135,6 +154,10 @@ if ($op and $op eq 'confirm') { > } > } > >+$template->param( >+ available_additional_fields => [ Koha::AdditionalFields->search({ tablename => 'aqinvoices' })->as_list ] >+); >+ > my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid ); > my @parcels = GetInvoices( > supplierid => $booksellerid, >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/invoice.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/invoice.tt >index 0cab159113..8356da2b09 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/invoice.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/invoice.tt >@@ -140,6 +140,11 @@ > [% END %] > [% END %] > </ol> >+ <fieldset class="rows"> >+ [% IF available_additional_fields.count %] >+ [% INCLUDE 'additional-fields-entry.inc' available=available_additional_fields values=additional_field_values %] >+ [% END %] >+ </fieldset> > [% UNLESS readonly %] > <input type="hidden" name="op" value="mod" /> > <input type="hidden" name="invoiceid" value="[% invoiceid | html %]" /> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcels.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcels.tt >index ff359efbcc..ffe58aac4c 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcels.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/acqui/parcels.tt >@@ -191,6 +191,11 @@ > </li> > </ol> > </fieldset> >+ <fieldset class="rows"> >+ [% IF available_additional_fields %] >+ [% INCLUDE 'additional-fields-entry.inc' available=available_additional_fields values=additional_field_values %] >+ [% END %] >+ </fieldset> > <fieldset class="action"><input type="submit" class="button" value="Next" /> <a class="cancel" href="/cgi-bin/koha/acqui/supplier.pl?booksellerid=[% booksellerid | html %]">Cancel</a></fieldset> > </form> > </div> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/additional-fields.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/additional-fields.tt >index e3efdaf184..31acd80d05 100755 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/additional-fields.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/additional-fields.tt >@@ -12,7 +12,7 @@ > </head> > > [% marcfield_tables = ['subscription'] %] >-[% searchable_tables = ['subscription', 'aqbasket'] %] >+[% searchable_tables = ['subscription', 'aqbasket', 'aqinvoices'] %] > [% show_marcfield = marcfield_tables.grep('^' _ tablename _ '$').size ? 1 : 0 %] > [% show_searchable = searchable_tables.grep('^' _ tablename _ '$').size ? 1 : 0 %] > >@@ -117,6 +117,9 @@ > [% IF CAN_user_acquisition_order_manage %] > [% WRAPPER table_option value="aqbasket" %]<span>Order baskets</span>[% END %] > [% END %] >+ [% IF CAN_user_acquisition_edit_invoices %] >+ [% WRAPPER table_option value="aqinvoices" %]<span>Invoices</span>[% END %] >+ [% END %] > [% IF CAN_user_serials_edit_subscription %] > [% WRAPPER table_option value="subscription" %]<span>Subscriptions</span>[% END %] > [% END %] >-- >2.30.2
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