[Bug 12446] Enable an adult to have a guarantor
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=12446 --- Comment #55 from Philippe Audet-Fortin <philippe.audet-fortin@inlibro.com> --- Comment on attachment 64793 --> https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=64793 Cam 722: Permet a n'importe quelle categorie d'avoir un garant (bz12446)
From 0ca1ba90904daea5fac5285799b38f8dfb0b6265 Mon Sep 17 00:00:00 2001 From: Paudet <philippe.audet-fortin@inlibro.com> Date: Tue, 4 Jul 2017 16:41:04 -0400 Subject: [PATCH] Cam 722: Permet a n'importe quelle categorie d'avoir un garant (bz12446)
Il s'agit du code du bz 12446 collapse en un commit. --- C4/Members/Attributes.pm | 19 ++++++++++++- C4/Utils/DataTables/Members.pm | 24 +++++++++++----- Koha/Schema/Result/Category.pm | 8 ++++++ admin/categories.pl | 3 ++ .../atomicupdate/bug_12446-EnableAdultGarantee.sql | 11 ++++++++ installer/data/mysql/kohastructure.sql | 3 +- installer/data/mysql/sysprefs.sql | 4 ++- .../prog/en/modules/admin/categories.tt | 15 ++++++++++ .../prog/en/modules/admin/preferences/patrons.pref | 5 ++++ .../prog/en/modules/common/patron_search.tt | 7 +++-- .../prog/en/modules/members/memberentrygen.tt | 6 ++-- .../prog/en/modules/members/moremember.tt | 30 ++++++++++++-------- .../en/modules/members/tables/guarantor_search.tt | 2 +- koha-tmpl/intranet-tmpl/prog/js/members.js | 18 ++++-------- members/memberentry.pl | 20 +++++++------ members/moremember.pl | 33 ++++++++++++++++++++-- svc/members/search | 2 ++ 17 files changed, 156 insertions(+), 54 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug_12446-EnableAdultGarantee.sql
diff --git a/C4/Members/Attributes.pm b/C4/Members/Attributes.pm index ab43a7c..2f3bd49 100644 --- a/C4/Members/Attributes.pm +++ b/C4/Members/Attributes.pm @@ -32,7 +32,7 @@ BEGIN { @EXPORT_OK = qw(GetBorrowerAttributes GetBorrowerAttributeValue CheckUniqueness SetBorrowerAttributes DeleteBorrowerAttribute UpdateBorrowerAttribute extended_attributes_code_value_arrayref extended_attributes_merge - SearchIdMatchingAttribute); + SearchIdMatchingAttribute get_guarantor_shared_attributes); %EXPORT_TAGS = ( all => \@EXPORT_OK ); }
@@ -383,6 +383,23 @@ sub _sort_by_code { return $x->{code} cmp $y->{code} || $x->{value} cmp $y->{value}; }
+=head2 get_guarantor_shared_attributes + + $guarantor_attributes = get_guarantor_attributes(); + + returns an array reference containing attributes to be shared between guarantor and guarantee. + +=cut + +sub get_guarantor_shared_attributes{ + my @attributes = qw( streetnumber address address2 city state zipcode country branchcode phone phonepro mobile email emailpro fax ); + if( my @additional = split(/\|/, C4::Context->preference("AdditionalGuarantorField")) ){ + $_ =~ s/(?:^\s+)|(?:\s+$)//g for (@additional); # Trim whitespaces + @attributes = ( @attributes, @additional); + } + return \@attributes; +} + =head1 AUTHOR
Koha Development Team <http://koha-community.org/> diff --git a/C4/Utils/DataTables/Members.pm b/C4/Utils/DataTables/Members.pm index 302eaff..846bcb3 100644 --- a/C4/Utils/DataTables/Members.pm +++ b/C4/Utils/DataTables/Members.pm @@ -2,6 +2,8 @@ package C4::Utils::DataTables::Members;
use Modern::Perl; use C4::Context; +use C4::Members; +use C4::Members::Attributes qw/get_guarantor_shared_attributes/; use C4::Utils::DataTables; use Koha::DateUtils;
@@ -47,13 +49,21 @@ sub search {
}
- my $select = "SELECT - borrowers.borrowernumber, borrowers.surname, borrowers.firstname, - borrowers.streetnumber, borrowers.streettype, borrowers.address, - borrowers.address2, borrowers.city, borrowers.state, borrowers.zipcode, - borrowers.country, cardnumber, borrowers.dateexpiry, - borrowers.borrowernotes, borrowers.branchcode, borrowers.email, - borrowers.userid, borrowers.dateofbirth, borrowers.categorycode, + $dbh = C4::Context->dbh; + my @columns = qw( borrowernumber surname firstname streetnumber streettype address address2 city state zipcode country cardnumber dateexpiry borrowernotes branchcode email userid dateofbirth categorycode ); + if( my @guarantor_attributes = @{ get_guarantor_shared_attributes() }){ + foreach my $item (@guarantor_attributes) { + if (! grep {$_ eq $item} @columns) { + push @columns, $item; + } + } + }; + my $borrowers_columns = ""; + foreach my $item (@columns) { + $borrowers_columns .= "borrowers." . $item . ", "; + } + + my $select = "SELECT " . $borrowers_columns . " categories.description AS category_description, categories.category_type, branches.branchname"; my $from = "FROM borrowers diff --git a/Koha/Schema/Result/Category.pm b/Koha/Schema/Result/Category.pm index fc26a7d..f655fd9 100644 --- a/Koha/Schema/Result/Category.pm +++ b/Koha/Schema/Result/Category.pm @@ -109,6 +109,12 @@ __PACKAGE__->table("categories"); default_value: -1 is_nullable: 0
+=head2 canbeguarantee + + data_type: 'tinyint' + default_value: 0 + is_nullable: 0 + =head2 default_privacy
data_type: 'enum' @@ -161,6 +167,8 @@ __PACKAGE__->add_columns( default_value => -1, is_nullable => 0, }, + "canbeguarantee", + { data_type => "tinyint", default_value => 0, is_nullable => 0}, "default_privacy", { data_type => "enum", diff --git a/admin/categories.pl b/admin/categories.pl index 358ef7d..dbaaf48 100755 --- a/admin/categories.pl +++ b/admin/categories.pl @@ -93,6 +93,7 @@ elsif ( $op eq 'add_validate' ) { my $checkPrevCheckout = $input->param('checkprevcheckout'); my $default_privacy = $input->param('default_privacy'); my @branches = grep { $_ ne q{} } $input->multi_param('branches'); + my $canbeguarantee = $input->param('canbeguarantee');
my $is_a_modif = $input->param("is_a_modif");
@@ -119,6 +120,7 @@ elsif ( $op eq 'add_validate' ) { $category->hidelostitems($hidelostitems); $category->overduenoticerequired($overduenoticerequired); $category->category_type($category_type); + $category->canbeguarantee($canbeguarantee); $category->BlockExpiredPatronOpacActions($BlockExpiredPatronOpacActions); $category->checkprevcheckout($checkPrevCheckout); $category->default_privacy($default_privacy); @@ -145,6 +147,7 @@ elsif ( $op eq 'add_validate' ) { hidelostitems => $hidelostitems, overduenoticerequired => $overduenoticerequired, category_type => $category_type, + canbeguarantee => $canbeguarantee, BlockExpiredPatronOpacActions => $BlockExpiredPatronOpacActions, checkprevcheckout => $checkPrevCheckout, default_privacy => $default_privacy, diff --git a/installer/data/mysql/atomicupdate/bug_12446-EnableAdultGarantee.sql b/installer/data/mysql/atomicupdate/bug_12446-EnableAdultGarantee.sql new file mode 100644 index 0000000..56462a7 --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_12446-EnableAdultGarantee.sql @@ -0,0 +1,11 @@ +-- ******** -- +-- SYSPREFS -- +-- ******** -- +INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` ) +VALUES ('AdditionalGuarantorField','',NULL,'Additional fields name to be transfer from guarantor to guarantee.','free'); + +-- ********* -- +-- STRUCTURE -- +-- ********* -- +ALTER TABLE categories ADD COLUMN `canbeguarantee` tinyint(1) NOT NULL default '0'; +UPDATE categories SET canbeguarantee = 1 WHERE category_type = 'P' OR category_type = 'C'; diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql index e9c60aa..7e3bc48 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -331,8 +331,9 @@ CREATE TABLE `categories` ( -- this table shows information related to Koha patr `hidelostitems` tinyint(1) NOT NULL default '0', -- are lost items shown to this category (1 for yes, 0 for no) `category_type` varchar(1) NOT NULL default 'A', -- type of Koha patron (Adult, Child, Professional, Organizational, Statistical, Staff) `BlockExpiredPatronOpacActions` tinyint(1) NOT NULL default '-1', -- wheither or not a patron of this category can renew books or place holds once their card has expired. 0 means they can, 1 means they cannot, -1 means use syspref BlockExpiredPatronOpacActions - `default_privacy` ENUM( 'default', 'never', 'forever' ) NOT NULL DEFAULT 'default', -- Default privacy setting for this patron category + `default_privacy` ENUM( 'default', 'never', 'forever' ) NOT NULL DEFAULT 'default', -- Default privacy setting for this patron category, `checkprevcheckout` varchar(7) NOT NULL default 'inherit', -- produce a warning for this patron category if this item has previously been checked out to this patron if 'yes', not if 'no', defer to syspref setting if 'inherit'. + `canbeguarantee` tinyint(1) NOT NULL default '0' PRIMARY KEY (`categorycode`), UNIQUE KEY `categorycode` (`categorycode`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; diff --git a/installer/data/mysql/sysprefs.sql b/installer/data/mysql/sysprefs.sql index 0bd8cac..27173df 100644 --- a/installer/data/mysql/sysprefs.sql +++ b/installer/data/mysql/sysprefs.sql @@ -6,7 +6,9 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('AcquisitionDetails', '1', '', 'Hide/Show acquisition details on the biblio detail page.', 'YesNo'), ('AcqViewBaskets','user','user|branch|all','Define which baskets a user is allowed to view: his own only, any within his branch or all','Choice'), ('AcqWarnOnDuplicateInvoice','0','','Warn librarians when they try to create a duplicate invoice','YesNo'), -('AddressFormat','us','us|de|fr','Choose format to display postal addresses', 'Choice'), +('AdditionalGuarantorField','',NULL,'Additional fields name to be transfer from guarantor to guarantee.','free'), +('AddPatronLists','categorycode','categorycode|category_type','Allow user to choose what list to pick up from when adding patrons','Choice'), +('AddressFormat','us','','Choose format to display postal addresses', 'Choice'), ('advancedMARCeditor','0','','If ON, the MARC editor won\'t display field/subfield descriptions','YesNo'), ('AdvancedSearchLanguages','','','ISO 639-2 codes of languages you wish to see appear as an Advanced search option. Example: eng|fre|ita','Textarea'), ('AdvancedSearchTypes','itemtypes','itemtypes|ccode','Select which set of fields comprise the Type limit in the advanced search','Choice'), 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 e33b36f..b115aa4 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categories.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categories.tt @@ -151,6 +151,18 @@ </select> <span class="required">Required</span> </li> + <li> + <label for="canbeguarantee">Can be guarantee</label> + <select name="canbeguarantee" id="canbeguarantee"> + [% IF category.canbeguarantee %] + <option value="1" selected>Yes</option> + <option value="0">No</option> + [% ELSE %] + <option value="1">Yes</option> + <option value="0" selected>No</option> + [% END %] + <select> + </li> <li><label for="branches">Branches limitation: </label> <select id="branches" name="branches" multiple size="10"> <option value="">All branches</option> @@ -299,6 +311,7 @@ </td> </tr> [% END %] + <tr><th scope="row">Can be guarantee</th><td>[% IF category.canbeguarantee %]Yes[% ELSE %]No[% END %]</td></tr> <tr> <th scope="row">Default privacy: </th> <td> @@ -358,6 +371,7 @@ [% IF ( Koha.Preference('CheckPrevCheckout') == 'softyes' || Koha.Preference('CheckPrevCheckout') == 'softno' ) %] <th scope="col">Check previous checkout?</th> [% END %] + <th scope="col">Can be guarantee</th> <th scope="col">Default privacy</th> <th scope="col">Actions</th> </tr> @@ -462,6 +476,7 @@ [% END %] </td> [% END %] + <td>[% IF category.canbeguarantee %] Yes [% ELSE %] no [% END %]</td> <td> [% SWITCH category.default_privacy %] [% CASE 'default' %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref index ac4946d..fe0c78a 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref @@ -190,7 +190,12 @@ Patrons: yes: Do no: "Don't" - track last patron activity. + - - Everytime a patron will connect, the borrowers.lastseen will be updated with the current time. + - "These additional following <a href='http://schema.koha-community.org/tables/borrowers.html' target='blank'>database columns</a> will be transferred from guarantor to guarantee:" + - pref: AdditionalGuarantorField + class: multi + - (separate columns with |) "Norwegian patron database": - - pref: NorwegianPatronDBEnable diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/common/patron_search.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/common/patron_search.tt index 9fe6473..ab0d15e 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/common/patron_search.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/common/patron_search.tt @@ -113,7 +113,8 @@ $(document).ready(function(){ e.preventDefault(); var borrowernumber = $(this).data("borrowernumber"); var borrower_data = $("#borrower_data"+borrowernumber).val(); - select_user( borrowernumber, JSON.parse(borrower_data) ); + var guarantor_attributes = $("#guarantor_attributes").val(); + select_user( borrowernumber, JSON.parse(borrower_data), JSON.parse(guarantor_attributes) ); });
}); @@ -160,9 +161,9 @@ function filterByFirstLetterSurname(letter) { wait_for_opener(); } [% ELSIF selection_type == 'select' %] - function select_user(borrowernumber, data) { + function select_user(borrowernumber, data, attributes) { var p = window.opener; - p.select_user(borrowernumber, data); + p.select_user(borrowernumber, data, attributes); window.close(); } [% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt index 7f6f734..710d9ba 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/memberentrygen.tt @@ -407,7 +407,6 @@ $(document).ready(function() { [% END %] </li> [% ELSE %] - [% IF ( C ) %] [% IF ( guarantorid ) %] <li id="contact-details"> [% ELSE %] @@ -425,9 +424,8 @@ $(document).ready(function() { <input name="contactname" id="contactname" type="text" size="20" value="[% contactname | html %]" /> [% END %] </li> - [% END %] - [% UNLESS nocontactfirstname %] - <li> + [% UNLESS nocontactfirstname %] +<li> <label for="contactfirstname">First name: </label> [% IF ( guarantorid ) %] <span>[% contactfirstname %]</span> diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt index 6e5308f..c106093 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/moremember.tt @@ -222,8 +222,7 @@ function validate1(date) { [% title | html %] [% firstname | html %] [% END %] [% surname | html %] ([% cardnumber | html %])</h3> <div class="yui-u first"> <div id="patron-information" style="padding : .5em;"> - - [% UNLESS ( I ) %][% IF ( othernames ) %]“[% othernames | html %]”[% END %] + [% UNLESS ( I ) %][% IF ( othernames ) %]“[% othernames %]”[% END %]
<div class = "address"> [% IF Koha.Preference( 'AddressFormat' ) %] @@ -254,16 +253,23 @@ function validate1(date) { [% IF ( sex ) %]<li><span class="label">Gender:</span> [% IF ( sex == 'F' ) %]Female[% ELSIF ( sex == 'M' ) %]Male[% ELSE %][% sex %][% END %] </li>[% END %][% END %] - [% IF guarantees %] - <li> - <span class="label">Guarantees:</span> - <ul> - [% FOREACH guarantee IN guarantees %] - <li><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% guarantee.borrowernumber %]">[% guarantee.firstname | html %] [% guarantee.surname | html %]</a></li> - [% END %] - </ul> - </li> - [% ELSIF guarantor %] + [% IF ( isguarantee ) %] + [% IF ( guaranteeloop ) %] + <li><span class="label">Guarantees:</span> + <table>[% FOREACH guaranteeloo IN guaranteeloop %] + <tr> + <td><a href="/cgi-bin/koha/members/moremember.pl?borrowernumber=[% guaranteeloo.borrowernumber %]">[% guaranteeloo.name %]</a></td> + <td style='text-align:right'>[% guaranteeloo.finesguarantee %]</td> + </tr>[% END %] + <tr> + <td>Total</td> + <td style='text-align:right'>[% amounttot %]</td> + </tr> + </table> + </li> + [% END %] + [% END %] + [% IF ( isguarantor ) %] <li> <span class="label">Guarantor:</span> [% IF guarantor.borrowernumber %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/members/tables/guarantor_search.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/members/tables/guarantor_search.tt index f1bb9a1..5817391 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/members/tables/guarantor_search.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/members/tables/guarantor_search.tt @@ -17,7 +17,7 @@ "dt_address": "[% INCLUDE escape_address data=data %]", "dt_action": - "<a href=\"#\" class=\"btn btn-default btn-xs select_user\" data-borrowernumber=\"[% data.borrowernumber %]\">Select</a><input type=\"hidden\" id=\"borrower_data[% data.borrowernumber %]\" name=\"borrower_data[% data.borrowernumber %]\" value=\"[% To.json(data) | html %]\" />" + "<a href=\"#\" class=\"btn btn-mini select_user\" data-borrowernumber=\"[% data.borrowernumber %]\">Select</a><input type=\"hidden\" id=\"borrower_data[% data.borrowernumber %]\" name=\"guarantor_data\" value=\"[% To.json(data) | html %]\" /><input type=\"hidden\" id=\"guarantor_attributes\" name=\"guarantor_attributes\" value=\"[% To.json(attributes) | html %]\" />" }[% UNLESS loop.last %],[% END %] [% END %] ] diff --git a/koha-tmpl/intranet-tmpl/prog/js/members.js b/koha-tmpl/intranet-tmpl/prog/js/members.js index 28853b2..c476469 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/members.js +++ b/koha-tmpl/intranet-tmpl/prog/js/members.js @@ -183,7 +183,7 @@ function update_category_code(category_code) { $(mytables).find(" li[data-category_code='']").show(); }
-function select_user(borrowernumber, borrower) { +function select_user(borrowernumber, borrower, attributes) { var form = $('#entryform').get(0); if (form.guarantorid.value) { $("#contact-details, #quick_add_form #contact-details").find('a').remove(); @@ -206,14 +206,11 @@ function select_user(borrowernumber, borrower) { .before('<span>' + borrower.firstname + '</span>').get(0).type = 'hidden'; $("#quick_add_form #contactfirstname").val(borrower.firstname).before('<span>'+borrower.firstname+'</span.').attr({type:"hidden"});
- form.streetnumber.value = borrower.streetnumber; - form.address.value = borrower.address; - form.address2.value = borrower.address2; - form.city.value = borrower.city; - form.state.value = borrower.state; - form.zipcode.value = borrower.zipcode; - form.country.value = borrower.country; - form.branchcode.value = borrower.branchcode; + form.guarantorsearch.value = LABEL_CHANGE; + for (var i = 0; i < attributes.length; i++) { + var attribute = attributes[i]; + document.forms.entryform[attribute].value = borrower[attribute]; + }
$("#quick_add_form #streetnumber").val(borrower.streetnumber); $("#quick_add_form #address").val(borrower.address); @@ -224,9 +221,6 @@ function select_user(borrowernumber, borrower) { $("#quick_add_form #country").val(borrower.country); $("#quick_add_form select[name='branchcode']").val(borrower.branchcode);
- form.guarantorsearch.value = LABEL_CHANGE; - $("#quick_add_form #guarantorsearch").val(LABEL_CHANGE); - return 0; }
diff --git a/members/memberentry.pl b/members/memberentry.pl index 2ffea5d..eef8554 100755 --- a/members/memberentry.pl +++ b/members/memberentry.pl @@ -240,21 +240,21 @@ if ( ( $op eq 'insert' ) and !$nodouble ) { } }
- #recover all data from guarantor address phone ,fax... -if ( $guarantorid ) { +#recover all data from guarantor address phone ,fax... +if ( $guarantorid) { + if (my $guarantordata=GetMember(borrowernumber => $guarantorid)) { $category_type = $guarantordata->{categorycode} eq 'I' ? 'P' : 'C'; $guarantorinfo=$guarantordata->{'surname'}." , ".$guarantordata->{'firstname'}; $newdata{'contactfirstname'}= $guarantordata->{'firstname'}; $newdata{'contactname'} = $guarantordata->{'surname'}; $newdata{'contacttitle'} = $guarantordata->{'title'}; + if ( $op eq 'add' ) { - foreach (qw(streetnumber address streettype address2 - zipcode country city state phone phonepro mobile fax email emailpro branchcode - B_streetnumber B_streettype B_address B_address2 - B_city B_state B_zipcode B_country B_email B_phone)) { - $newdata{$_} = $guarantordata->{$_}; - } + my @attributes = @{C4::Members::Attributes::get_guarantor_shared_attributes()}; + foreach my $attribute (@attributes) { + $newdata{$attribute} = $guarantordata->{$attribute}; + } } } } @@ -720,7 +720,9 @@ if (C4::Context->preference('EnhancedMessagingPreferences')) { $template->param(TalkingTechItivaPhone => C4::Context->preference("TalkingTechItivaPhoneNotification")); }
-$template->param( "showguarantor" => ($category_type=~/A|I|S|X/) ? 0 : 1); # associate with step to know where you are +$template->param( "showguarantor" => $categorycode ? Koha::Patron::Categories->find($categorycode)->canbeguarantee : 1); # associate with step to know where you are + +$template->param( "guarantor_attributes" => C4::Members::Attributes::get_guarantor_shared_attributes() ); $debug and warn "memberentry step: $step"; $template->param(%data); $template->param( "step_$step" => 1) if $step; # associate with step to know where u are diff --git a/members/moremember.pl b/members/moremember.pl index 0649dcf..1767a5c 100755 --- a/members/moremember.pl +++ b/members/moremember.pl @@ -177,7 +177,6 @@ if ( $category_type eq 'C') {
my @relatives; if ( my $guarantor = $patron->guarantor ) { - $template->param( guarantor => $guarantor ); push @relatives, $guarantor->borrowernumber; push @relatives, $_->borrowernumber for $patron->siblings; } elsif ( $patron->contactname || $patron->contactfirstname ) { @@ -189,15 +188,43 @@ if ( my $guarantor = $patron->guarantor ) { ); } else { my @guarantees = $patron->guarantees; - $template->param( guarantees => \@guarantees ); push @relatives, $_->borrowernumber for @guarantees; }
my $relatives_issues_count = Koha::Database->new()->schema()->resultset('Issue') ->count( { borrowernumber => \@relatives } ); +my @guarantees = $patron->guarantees; +my $count = scalar @guarantees; +if ( $count ) { + $template->param( isguarantee => 1 ); + + my @guaranteedata; + my $amount; + my $totalmount = 0; + + foreach my $guarantee (@guarantees){ + my ($amount,$accts,undef) = GetMemberAccountRecords($guarantee->borrowernumber); + push(@guaranteedata, + { + borrowernumber => $guarantee->borrowernumber, + cardnumber => $guarantee->cardnumber, + finesguarantee => sprintf("%.2f",$amount), + name => $guarantee->firstname . " " + . $guarantee->surname + } + ); + $totalmount += $amount; + } + $template->param( guaranteeloop => \@guaranteedata ); + $template->param( amounttot => sprintf("%.2f",$totalmount)); +} +( $template->param( adultborrower => 1 ) ) if ( $category_type eq 'A' || $category_type eq 'I' );
-$template->param( adultborrower => 1 ) if ( $category_type eq 'A' || $category_type eq 'I' ); +if (my $guarantor = $patron->guarantor){ + $template->param(isguarantor => 1); + $template->param(guarantor => $guarantor); +}
my %bor; $bor{'borrowernumber'} = $borrowernumber; diff --git a/svc/members/search b/svc/members/search index 4f798ab..cdebc80 100755 --- a/svc/members/search +++ b/svc/members/search @@ -108,12 +108,14 @@ if ($has_permission) { $results->{iTotalDisplayRecords} = scalar( @patrons_with_permission ); }
+my @attributes = C4::Members::Attributes::get_guarantor_shared_attributes(); $template->param( sEcho => $sEcho, iTotalRecords => $results->{iTotalRecords}, iTotalDisplayRecords => $results->{iTotalDisplayRecords}, aaData => $results->{patrons}, selection_type => $selection_type, + attributes => @attributes );
output_with_http_headers $input, $cookie, $template->output, 'json'; -- 1.9.1
-- You are receiving this mail because: You are watching all bug changes.
participants (1)
-
bugzilla-daemon@bugs.koha-community.org