Bugzilla – Attachment 139604 Details for
Bug 31254
Add additional fields for accountlines
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 31254: Add additional fields for accountlines
Bug-31254-Add-additional-fields-for-accountlines.patch (text/plain), 19.87 KB, created by
Biblibre Sandboxes
on 2022-08-22 14:15:25 UTC
(
hide
)
Description:
Bug 31254: Add additional fields for accountlines
Filename:
MIME Type:
Creator:
Biblibre Sandboxes
Created:
2022-08-22 14:15:25 UTC
Size:
19.87 KB
patch
obsolete
>From 7c99f7f3b322a0165fcd9bb9c9ea48f77a95fc93 Mon Sep 17 00:00:00 2001 >From: Julian Maurice <julian.maurice@biblibre.com> >Date: Wed, 9 Jun 2021 16:28:51 +0200 >Subject: [PATCH] Bug 31254: Add additional fields for accountlines >MIME-Version: 1.0 >Content-Type: text/plain; charset=UTF-8 >Content-Transfer-Encoding: 8bit > >Test plan: >1. Go to Admin » Additional fields > There are two new categories: "Account lines (credit)" and > "Account lines (debit)" >2. Create fields for both categories, with and without an authorized > value category >3. Go to a user's accounting page >4. Create a manual invoice. Verify that all "debit" fields are there, > put a value in them and save >5. Create a manual credit. Verify that all "credit" fields are there, > put a value in them and save >6. Make a payment. Verify that all "credit" fields are there, put a > value in them and save >7. Go to the transactions tab, click on the "Details" button for the > lines you just created and verify that the additional fields are > there > >Signed-off-by: Emmanuel Bétemps <e.betemps@gmail.com> >--- > Koha/Account/Line.pm | 2 +- > Koha/Schema/Result/Accountline.pm | 16 ++++++++ > .../en/includes/additional-fields-entry.inc | 2 +- > .../en/modules/admin/additional-fields.tt | 40 ++++++++++++------- > .../en/modules/members/accountline-details.tt | 14 +++++++ > .../prog/en/modules/members/mancredit.tt | 4 ++ > .../prog/en/modules/members/maninvoice.tt | 5 +++ > .../prog/en/modules/members/paycollect.tt | 14 +++++++ > members/mancredit.pl | 19 ++++++++- > members/maninvoice.pl | 17 ++++++++ > members/paycollect.pl | 36 +++++++++++++++++ > 11 files changed, 152 insertions(+), 17 deletions(-) > >diff --git a/Koha/Account/Line.pm b/Koha/Account/Line.pm >index ceb73e7c3e..b940d6acef 100644 >--- a/Koha/Account/Line.pm >+++ b/Koha/Account/Line.pm >@@ -30,7 +30,7 @@ use Koha::DateUtils qw( dt_from_string ); > use Koha::Exceptions::Account; > use Koha::Items; > >-use base qw(Koha::Object); >+use base qw(Koha::Object Koha::Object::Mixin::AdditionalFields); > > =encoding utf8 > >diff --git a/Koha/Schema/Result/Accountline.pm b/Koha/Schema/Result/Accountline.pm >index 1dee4ccf20..5ee3aaff3a 100644 >--- a/Koha/Schema/Result/Accountline.pm >+++ b/Koha/Schema/Result/Accountline.pm >@@ -419,6 +419,22 @@ __PACKAGE__->belongs_to( > }, > ); > >+__PACKAGE__->has_many( >+ "additional_field_values", >+ "Koha::Schema::Result::AdditionalFieldValue", >+ sub { >+ my ($args) = @_; >+ >+ return { >+ "$args->{foreign_alias}.record_id" => { -ident => "$args->{self_alias}.accountlines_id" }, >+ >+ "$args->{foreign_alias}.field_id" => >+ { -in => \'(SELECT id FROM additional_fields WHERE tablename LIKE "accountlines:%")' }, >+ }; >+ }, >+ { cascade_copy => 0, cascade_delete => 0 }, >+); >+ > sub koha_objects_class { > 'Koha::Account::Lines'; > } >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/additional-fields-entry.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/additional-fields-entry.inc >index 775c04d167..24d30b560d 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/additional-fields-entry.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/additional-fields-entry.inc >@@ -9,7 +9,7 @@ > <label for="additional_field_[% field.id | html %]"> [% field.name | html %]: </label> > [% IF field.authorised_value_category %] > <select name="additional_field_[% field.id | html %]" id="additional_field_[% field.id | html %]"> >- <option value="">All</option> >+ <option value=""></option> > [% FOREACH av IN AuthorisedValues.GetAuthValueDropbox( field.authorised_value_category ) %] > [% IF av.authorised_value == values.${field.id} %] > <option value="[% av.authorised_value | html %]" selected="selected">[% av.lib | html %]</option> >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 2d27a06ac8..ba66f21f7d 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,9 @@ > </head> > > [% marcfield_tables = ['subscription'] %] >+[% searchable_tables = ['subscription', 'aqbasket'] %] > [% show_marcfield = marcfield_tables.grep('^' _ tablename _ '$').size ? 1 : 0 %] >+[% show_searchable = searchable_tables.grep('^' _ tablename _ '$').size ? 1 : 0 %] > > <body id="ser_add_fields" class="ser"> > [% INCLUDE 'header.inc' %] >@@ -102,7 +104,7 @@ > [% END %] > > [% IF op == 'list_tables' %] >- [% IF CAN_user_acquisitions_order_manage || CAN_user_serials_edit_subscription %] >+ [% IF CAN_user_acquisitions_order_manage || CAN_user_serials_edit_subscription || CAN_user_updatecharges_remaining_permissions %] > <h1>Additional fields</h1> > <p>Select a table:</p> > [% BLOCK table_option %] >@@ -115,9 +117,13 @@ > [% IF CAN_user_serials_edit_subscription %] > [% WRAPPER table_option value="subscription" %]<span>Subscriptions</span>[% END %] > [% END %] >+ [% IF CAN_user_updatecharges_remaining_permissions %] >+ [% WRAPPER table_option value="accountlines:credit" %]Account lines (credit)[% END %] >+ [% WRAPPER table_option value="accountlines:debit" %]Account lines (debit)[% END %] >+ [% END %] > </ul> > [% ELSE %] >- Additional permissions in the acquisitions or serials modules are required for editing additional fields >+ Additional permissions are required for editing additional fields > [% END %] > [% ELSIF op == 'list' %] > <h1>Additional fields for '[% tablename | html %]'</h1> >@@ -130,7 +136,9 @@ > [% IF show_marcfield %] > <th>MARC field</th> > [% END %] >- <th>Searchable</th> >+ [% IF show_searchable %] >+ <th>Searchable</th> >+ [% END %] > <th class="noExport">Actions</th> > </tr> > </thead> >@@ -142,9 +150,11 @@ > [% IF show_marcfield %] > <td>[% field.marcfield | html %]</td> > [% END %] >- <td> >- [% IF field.searchable %]Yes[% ELSE %]No[% END %] >- </td> >+ [% IF show_searchable %] >+ <td> >+ [% IF field.searchable %]Yes[% ELSE %]No[% END %] >+ </td> >+ [% END %] > <td class="actions"> > <a class="btn btn-default btn-xs" href="?op=add_form&field_id=[% field.id | html %]"><i class="fa fa-pencil"></i> Edit</a> > <a class="confirmdelete btn btn-default btn-xs" href="?op=delete&field_id=[% field.id | uri %]&tablename=[% tablename | uri %]"><i class="fa fa-trash"></i> Delete</a> >@@ -183,14 +193,16 @@ > <input type="text" name="marcfield" id="marcfield" value="[% field.marcfield | html %]" /> > </li> > [% END %] >- <li> >- <label for="searchable">Searchable: </label> >- [% IF field.searchable %] >- <input type="checkbox" name="searchable" id="searchable" checked="checked" /> >- [% ELSE %] >- <input type="checkbox" name="searchable" id="searchable" /> >- [% END %] >- </li> >+ [% IF show_searchable %] >+ <li> >+ <label for="searchable">Searchable: </label> >+ [% IF field.searchable %] >+ <input type="checkbox" name="searchable" id="searchable" checked="checked" /> >+ [% ELSE %] >+ <input type="checkbox" name="searchable" id="searchable" /> >+ [% END %] >+ </li> >+ [% END %] > </ol> > </fieldset> > <fieldset class="action"> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/accountline-details.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/accountline-details.tt >index 1a328dac49..e1fa32f180 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/accountline-details.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/accountline-details.tt >@@ -71,6 +71,7 @@ > [% INCLUDE 'members-toolbar.inc' borrowernumber=patron.borrowernumber %] > > [% IF accountline %] >+ [% af_values = accountline.additional_field_values %] > [% IF accountline.credit_type_code %] > <h2>Details of credit</h2> > [% ELSIF accountline.debit_type_code %] >@@ -86,6 +87,9 @@ > <th>Due date</th> > <th>Return date</th> > <th>Note</th> >+ [% FOREACH value IN af_values %] >+ <th>[% value.field.name | html %]</th> >+ [% END %] > <th>Amount</th> > <th>Outstanding</th> > </tr> >@@ -134,6 +138,16 @@ > [% accountline.note | html_line_break %] > </td> > >+ [% FOREACH value IN af_values %] >+ <td> >+ [% IF value.field.authorised_value_category %] >+ [% AuthorisedValues.GetByCode( value.field.authorised_value_category, value.value ) | html %] >+ [% ELSE %] >+ [% value.value | html %] >+ [% END %] >+ </td> >+ [% END %] >+ > <td> > [% accountline.amount | $Price %] > </td> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/mancredit.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/mancredit.tt >index ca3e93d84a..4f6489924b 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/mancredit.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/mancredit.tt >@@ -72,6 +72,10 @@ > </ol> > </fieldset> > >+ [% IF available_additional_fields %] >+ [% INCLUDE 'additional-fields-entry.inc' available=available_additional_fields values=additional_field_values %] >+ [% END %] >+ > <fieldset class="action"><input type="submit" name="add" value="Add credit" /> <a class="cancel" href="/cgi-bin/koha/members/boraccount.pl?borrowernumber=[% patron.borrowernumber | html %]">Cancel</a></fieldset> > </form> > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/maninvoice.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/maninvoice.tt >index 05de80543b..dc5f6ede7a 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/maninvoice.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/maninvoice.tt >@@ -85,6 +85,11 @@ > <li><label for="amount">Amount: </label><input type="text" inputmode="decimal" pattern="^\d+(\.\d{2})?$" name="amount" id="amount" required="required" min="0" value="[% amount | $Price on_editing => 1 %]" /> Example: 5.00</li> > </ol> > </fieldset> >+ >+ [% IF available_additional_fields %] >+ [% INCLUDE 'additional-fields-entry.inc' available=available_additional_fields values=additional_field_values %] >+ [% END %] >+ > <fieldset class="action"> > <button type="submit" name="add" value="save">Save</button> > <button type="submit" name="add" value="save and pay">Save and pay</button> >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt >index 125ccc6e10..71465bd757 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/paycollect.tt >@@ -211,6 +211,10 @@ > </ol> > </fieldset> > >+[% IF available_additional_fields %] >+ [% INCLUDE 'additional-fields-entry.inc' available=available_additional_fields values=additional_field_values %] >+[% END %] >+ > <div class="action"> > <input type="submit" name="submitbutton" value="Confirm" /> > <a class="cancel" href="/cgi-bin/koha/members/pay.pl?borrowernumber=[% patron.borrowernumber | html %]">Cancel</a> >@@ -263,6 +267,11 @@ > </li> > </ol> > </fieldset> >+ >+ [% IF available_additional_fields %] >+ [% INCLUDE 'additional-fields-entry.inc' available=available_additional_fields values=additional_field_values %] >+ [% END %] >+ > <div class="action"> > <input type="submit" value="Write off this charge" /> > <a class="cancel" href="/cgi-bin/koha/members/pay.pl?borrowernumber=[% patron.borrowernumber | html %]">Cancel</a> >@@ -346,6 +355,11 @@ > </li> > </ol> > </fieldset> >+ >+ [% IF available_additional_fields %] >+ [% INCLUDE 'additional-fields-entry.inc' available=available_additional_fields values=additional_field_values %] >+ [% END %] >+ > <div class="action"> > <input type="submit" name="submitbutton" value="Confirm" /> > <a class="cancel" href="/cgi-bin/koha/members/pay.pl?borrowernumber=[% patron.borrowernumber | html %]">Cancel</a> >diff --git a/members/mancredit.pl b/members/mancredit.pl >index 7ec9b957b2..d4f7de69f8 100755 >--- a/members/mancredit.pl >+++ b/members/mancredit.pl >@@ -34,6 +34,7 @@ use Koha::Items; > use Koha::Patrons; > use Koha::Patron::Categories; > use Koha::Account::CreditTypes; >+use Koha::AdditionalFields; > > use Koha::Token; > >@@ -90,7 +91,7 @@ if ($add) { > my $amount = $input->param('amount') || 0; > my $type = $input->param('type'); > >- $patron->account->add_credit( >+ my $line = $patron->account->add_credit( > { > amount => $amount, > description => $description, >@@ -103,6 +104,21 @@ if ($add) { > } > ); > >+ my @additional_fields; >+ my $accountline_fields = Koha::AdditionalFields->search({ tablename => 'accountlines:credit' }); >+ while ( my $field = $accountline_fields->next ) { >+ my $value = $input->param('additional_field_' . $field->id); >+ if (defined $value) { >+ push @additional_fields, { >+ id => $field->id, >+ value => $value, >+ }; >+ } >+ } >+ if (@additional_fields) { >+ $line->set_additional_fields(\@additional_fields); >+ } >+ > if ( C4::Context->preference('AccountAutoReconcile') ) { > $patron->account->reconcile_balance; > } >@@ -124,6 +140,7 @@ else { > csrf_token => Koha::Token->new->generate_csrf( > { session_id => scalar $input->cookie('CGISESSID') } > ), >+ available_additional_fields => [ Koha::AdditionalFields->search({ tablename => 'accountlines:credit' })->as_list ], > ); > output_html_with_http_headers $input, $cookie, $template->output; > } >diff --git a/members/maninvoice.pl b/members/maninvoice.pl >index d194bdd299..ce0ba028c0 100755 >--- a/members/maninvoice.pl >+++ b/members/maninvoice.pl >@@ -41,6 +41,7 @@ use Koha::Old::Checkouts; > > use Koha::Patron::Categories; > use Koha::Account::DebitTypes; >+use Koha::AdditionalFields; > > my $input = CGI->new; > my ( $template, $loggedinuser, $cookie ) = get_template_and_user( >@@ -165,6 +166,21 @@ if ($add) { > } > ); > >+ my @additional_fields; >+ my $accountline_fields = Koha::AdditionalFields->search({ tablename => 'accountlines:debit' }); >+ while ( my $field = $accountline_fields->next ) { >+ my $value = $input->param('additional_field_' . $field->id); >+ if (defined $value) { >+ push @additional_fields, { >+ id => $field->id, >+ value => $value, >+ }; >+ } >+ } >+ if (@additional_fields) { >+ $line->set_additional_fields(\@additional_fields); >+ } >+ > if ( C4::Context->preference('AccountAutoReconcile') ) { > $patron->account->reconcile_balance; > } >@@ -216,5 +232,6 @@ $template->param( > ), > patron => $patron, > finesview => 1, >+ available_additional_fields => [ Koha::AdditionalFields->search({ tablename => 'accountlines:debit' })->as_list ], > ); > output_html_with_http_headers $input, $cookie, $template->output; >diff --git a/members/paycollect.pl b/members/paycollect.pl >index e8301a7660..b189107f25 100755 >--- a/members/paycollect.pl >+++ b/members/paycollect.pl >@@ -32,6 +32,8 @@ use Koha::Patrons; > use Koha::Patron::Categories; > use Koha::AuthorisedValues; > use Koha::Account; >+use Koha::Account::Lines; >+use Koha::AdditionalFields; > use Koha::Token; > use Koha::DateUtils qw( output_pref ); > >@@ -170,6 +172,23 @@ if ( $total_paid and $total_paid ne '0.00' ) { > ); > $payment_id = $pay_result->{payment_id}; > >+ my @additional_fields; >+ my $accountline_fields = Koha::AdditionalFields->search({ tablename => 'accountlines:credit' }); >+ while ( my $field = $accountline_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 $payment = Koha::Account::Lines->find($payment_id); >+ $payment->set_additional_fields(\@additional_fields); >+ } >+ >+ > $url = "/cgi-bin/koha/members/pay.pl"; > } else { > if ($selected_accts) { >@@ -213,6 +232,22 @@ if ( $total_paid and $total_paid ne '0.00' ) { > } > $payment_id = $pay_result->{payment_id}; > >+ my @additional_fields; >+ my $accountline_fields = Koha::AdditionalFields->search({ tablename => 'accountlines:credit' }); >+ while ( my $field = $accountline_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 $payment = Koha::Account::Lines->find($payment_id); >+ $payment->set_additional_fields(\@additional_fields); >+ } >+ > $url = "/cgi-bin/koha/members/boraccount.pl"; > } > # It's possible renewals took place, parse any renew results >@@ -249,6 +284,7 @@ $template->param( > total => $total_due, > > csrf_token => Koha::Token->new->generate_csrf( { session_id => scalar $input->cookie('CGISESSID') } ), >+ available_additional_fields => [ Koha::AdditionalFields->search({ tablename => 'accountlines:credit' })->as_list ], > ); > > output_html_with_http_headers $input, $cookie, $template->output; >-- >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 31254
:
138207
|
138370
|
139604
|
139910