Bugzilla – Attachment 120147 Details for
Bug 27946
Add a charge per article request to patron categories
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 27946: Add article request fee feature
Bug-27946-Add-article-request-fee-feature.patch (text/plain), 9.69 KB, created by
Agustín Moyano
on 2021-04-24 00:10:16 UTC
(
hide
)
Description:
Bug 27946: Add article request fee feature
Filename:
MIME Type:
Creator:
Agustín Moyano
Created:
2021-04-24 00:10:16 UTC
Size:
9.69 KB
patch
obsolete
>From da239dd5b7b7d2bd19623473339a84f9ca66909c Mon Sep 17 00:00:00 2001 >From: Agustin Moyano <agustinmoyano@theke.io> >Date: Thu, 22 Apr 2021 19:29:37 -0300 >Subject: [PATCH] Bug 27946: Add article request fee feature > >This patch adds the ability to charge a fee for article scan requests. > >To test: >1. apply patches >2. updatedatabase >3. restart_all >4. enable ArticleRequest in preferences >5. grab a patron category and set a fee for article requests >6. grab a patron of that category (patron a) and another fron different category (patron b) >7. place an article request for both patrons >SUCCESS => only for patron a, a warning is displayed saying a fee will be charged >8. check the account for both patrons >SUCCESS => only for patron a there is a debit of type ARTICLE_REQUEST >9. cancel the article request for patron a >SUCCESS => the debit for patron a gets canceled >10. repeat step 7 only for patron a >11. change article request fee for the patron a's category >12. repeat step 10 >13. check account for patron a >SUCCESS => there are 2 debits with different amount of typ ARTICLE_REQUEST >14. cancel only one article request >SUCCESS => only the corresponding debit gets canceled >15. prove t/db_dependent/ArticleRequests.t >--- > Koha/ArticleRequest.pm | 23 +++++++++++++++++++ > admin/categories.pl | 3 +++ > .../prog/en/modules/admin/categories.tt | 16 +++++++++++++ > .../prog/en/modules/circ/request-article.tt | 7 +++++- > .../en/modules/opac-request-article.tt | 7 ++++++ > 5 files changed, 55 insertions(+), 1 deletion(-) > >diff --git a/Koha/ArticleRequest.pm b/Koha/ArticleRequest.pm >index 2c47dd03fe..450361705d 100644 >--- a/Koha/ArticleRequest.pm >+++ b/Koha/ArticleRequest.pm >@@ -27,6 +27,8 @@ use Koha::Biblios; > use Koha::Items; > use Koha::Libraries; > use Koha::DateUtils qw(dt_from_string); >+use C4::Context; >+use Koha::Account::Lines; > > use base qw(Koha::Object); > >@@ -48,6 +50,18 @@ sub open { > my ($self) = @_; > > $self->status(Koha::ArticleRequest::Status::Pending); >+ if(C4::Context->preference('ArticleRequests') && $self->borrower->category->article_request_fee) { >+ my $debit_line = $self->borrower->account->add_debit( >+ { >+ amount => $self->borrower->category->article_request_fee, >+ user_id => C4::Context->userenv ? C4::Context->userenv->{'number'} : undef, >+ interface => C4::Context->interface, >+ library_id => C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef, >+ type => 'ARTICLE_REQUEST' >+ } >+ ); >+ $self->debit_line_id($debit_line->id); >+ } > $self->SUPER::store(); > $self->notify(); > return $self; >@@ -88,6 +102,15 @@ sub cancel { > > $self->status(Koha::ArticleRequest::Status::Canceled); > $self->notes($notes) if $notes; >+ if($self->debit_line_id) { >+ my $line = Koha::Account::Lines->find($self->debit_line_id); >+ $line->cancel( >+ { >+ branch => C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef, >+ staff_id => C4::Context->userenv ? C4::Context->userenv->{'number'} : undef, >+ } >+ ) unless $line->status eq 'CANCELLED' || $line->amount != $line->amountoutstanding; >+ } > $self->store(); > $self->notify(); > return $self; >diff --git a/admin/categories.pl b/admin/categories.pl >index afc2950468..93aefa0516 100755 >--- a/admin/categories.pl >+++ b/admin/categories.pl >@@ -79,6 +79,7 @@ elsif ( $op eq 'add_validate' ) { > my $exclude_from_local_holds_priority = $input->param('exclude_from_local_holds_priority'); > my $min_password_length = $input->param('min_password_length'); > my $require_strong_password = $input->param('require_strong_password'); >+ my $article_request_fee = $input->param('article_request_fee'); > my @branches = grep { $_ ne q{} } $input->multi_param('branches'); > > $reset_password = undef if $reset_password eq -1; >@@ -119,6 +120,7 @@ elsif ( $op eq 'add_validate' ) { > $category->exclude_from_local_holds_priority($exclude_from_local_holds_priority); > $category->min_password_length($min_password_length); > $category->require_strong_password($require_strong_password); >+ $category->article_request_fee($article_request_fee); > eval { > $category->store; > $category->replace_library_limits( \@branches ); >@@ -150,6 +152,7 @@ elsif ( $op eq 'add_validate' ) { > exclude_from_local_holds_priority => $exclude_from_local_holds_priority, > min_password_length => $min_password_length, > require_strong_password => $require_strong_password, >+ article_request_fee => $article_request_fee, > }); > eval { > $category->store; >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categories.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categories.tt >index 768d1259fb..fa6462b809 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categories.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categories.tt >@@ -202,6 +202,12 @@ > <label for="reservefee">Hold fee: </label> > <input type="text" name="reservefee" id="reservefee" size="6" value="[% category.reservefee | $Price on_editing => 1 %]" /> > </li> >+ [% IF Koha.Preference('ArticleRequests') %] >+ <li> >+ <label for="article_request_fee">Cost for article scan request</label> >+ <input type="text" name="article_request_fee" id="article_request_fee" size="6" value="[% category.article_request_fee | $Price on_editing => 1 %]" /> >+ </li> >+ [% END %] > <li> > <label for="category_type" class="required">Category type: </label> > <select name="category_type" id="category_type"> >@@ -523,6 +529,9 @@ > <th scope="col">Overdue</th> > <th scope="col">Lost items</th> > <th scope="col">Hold fee</th> >+ [% IF Koha.Preference('ArticleRequests') %] >+ <th scope="col">Article request fee</th> >+ [% END %] > [% IF ( EnhancedMessagingPreferences ) %] > <th scope="col">Messaging</th> > [% END %] >@@ -581,6 +590,13 @@ > [% ELSE %] > <td>-</td> > [% END %] >+ [% IF Koha.Preference('ArticleRequests') %] >+ [% IF (category.article_request_fee > 0) %] >+ <td>[% category.article_request_fee | $Price %]</td> >+ [% ELSE %] >+ <td>-</td> >+ [% END %] >+ [% END %] > [% IF Koha.Preference('EnhancedMessagingPreferences') %] > <td style="white-space: nowrap; font-size:80%;"> > [% SET default_messaging = category.default_messaging %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/request-article.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/request-article.tt >index e59703482e..ca94b04d26 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/request-article.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/request-article.tt >@@ -3,6 +3,7 @@ > [% USE KohaDates %] > [% USE Branches %] > [% USE ItemTypes %] >+[% USE Price %] > [% SET footerjs = 1 %] > [% SET article_requests_view = 1 %] > [% SET biblionumber = biblio.biblionumber %] >@@ -94,7 +95,11 @@ > </form> > [% ELSE %] > [% IF biblio.can_article_request( patron ) %] >- >+ [% IF patron.category.article_request_fee > 0 %] >+ <div class="dialog alert"> >+ Patron will be charged with <strong>[% patron.category.article_request_fee | $Price %]</strong> for every request >+ </div> >+ [% END %] > <form id="place-article-request" method="post" action="/cgi-bin/koha/circ/request-article.pl"> > <input type="hidden" name="action" value="create" /> > <input type="hidden" name="biblionumber" id="biblionumber" value="[% biblio.biblionumber | html %]" /> >diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-request-article.tt b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-request-article.tt >index caf214e8b0..26f9a91f96 100644 >--- a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-request-article.tt >+++ b/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-request-article.tt >@@ -1,6 +1,7 @@ > [% USE Koha %] > [% USE Branches %] > [% USE ItemTypes %] >+[% USE Price %] > [% INCLUDE 'doc-head-open.inc' %] > > <title>Request article › [% IF ( LibraryNameTitle ) %][% LibraryNameTitle | html %][% ELSE %]Koha online[% END %] catalog</title> >@@ -38,6 +39,12 @@ > > <h1>Place article request for [% biblio.title | html %]</h1> > >+ [% IF patron.category.article_request_fee > 0 %] >+ <div class="alert alert-warning"> >+ You will be charged with <strong>[% patron.category.article_request_fee | $Price %]</strong> for every request >+ </div> >+ [% END %] >+ > <form id="place-article-request" method="post" action="/cgi-bin/koha/opac-request-article.pl"> > <input type="hidden" name="action" value="create" /> > <input type="hidden" name="biblionumber" id="biblionumber" value="[% biblio.biblionumber | html %]" /> >-- >2.27.0
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 27946
:
120144
|
120145
|
120146
|
120147
|
122522
|
122529
|
122530
|
122531
|
122532
|
122552
|
123503
|
123504
|
123505
|
123506
|
123507
|
128660
|
128661
|
128662
|
128663
|
128664
|
128665
|
128868
|
128869
|
128870
|
128871
|
128872
|
128873
|
129141
|
129142
|
129143
|
129144
|
129145
|
129146
|
129147
|
129171
|
129172
|
129173
|
129174
|
129175
|
129176
|
129177