Bugzilla – Attachment 94790 Details for
Bug 17168
Add a command line script for updating patron category based on status
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 17168: (RM follow-up) Update for bug 14570
Bug-17168-RM-follow-up-Update-for-bug-14570.patch (text/plain), 10.77 KB, created by
Martin Renvoize (ashimema)
on 2019-10-25 16:03:49 UTC
(
hide
)
Description:
Bug 17168: (RM follow-up) Update for bug 14570
Filename:
MIME Type:
Creator:
Martin Renvoize (ashimema)
Created:
2019-10-25 16:03:49 UTC
Size:
10.77 KB
patch
obsolete
>From f6195a8012d65acb971fa2c302d4843738f56255 Mon Sep 17 00:00:00 2001 >From: Martin Renvoize <martin.renvoize@ptfs-europe.com> >Date: Fri, 25 Oct 2019 17:02:59 +0100 >Subject: [PATCH] Bug 17168: (RM follow-up) Update for bug 14570 > >--- > Koha/Patron.pm | 13 +++++++++--- > Koha/Patrons.pm | 16 +------------- > t/db_dependent/Patrons.t | 46 +++++++++++++++++++++------------------- > 3 files changed, 35 insertions(+), 40 deletions(-) > >diff --git a/Koha/Patron.pm b/Koha/Patron.pm >index 67ab9bf7c9..e3a79bb3ae 100644 >--- a/Koha/Patron.pm >+++ b/Koha/Patron.pm >@@ -254,11 +254,18 @@ sub store { > # Password must be updated using $self->set_password > $self->password($self_from_storage->password); > >- if ( C4::Context->preference('FeeOnChangePatronCategory') >- and $self->category->categorycode ne >+ if ( $self->category->categorycode ne > $self_from_storage->category->categorycode ) > { >- $self->add_enrolment_fee_if_needed(1); >+ # Add enrolement fee on category change if required >+ $self->add_enrolment_fee_if_needed(1) >+ if C4::Context->preference('FeeOnChangePatronCategory'); >+ >+ # Clean up guarantors on category change if required >+ $self->guarantor_relationships->delete >+ if ( $self->category->category_type ne 'C' >+ || $self->category->category_type ne 'P' ); >+ > } > > # Actionlogs >diff --git a/Koha/Patrons.pm b/Koha/Patrons.pm >index 90e134a490..fbe696ec7a 100644 >--- a/Koha/Patrons.pm >+++ b/Koha/Patrons.pm >@@ -424,24 +424,10 @@ call search_patrons_to_update to filter the Koha::Patrons set > > sub update_category_to { > my ( $self, $params ) = @_; >- my $to = $params->{category}; >- >- my $to_cat = Koha::Patron::Categories->find($to); >- return unless $to_cat; >- > my $counter = 0; >- my $remove_guarantor = ( $to_cat->category_type ne 'C' || $to_cat->category_type ne 'P' ) ? 1 : 0; > while( my $patron = $self->next ) { > $counter++; >- if ( $remove_guarantor && ($patron->category->category_type eq 'C' || $patron->category->category_type eq 'P') ) { >- $patron->guarantorid(0); >- $patron->contactname(''); >- $patron->contactfirstname(''); >- $patron->contacttitle(''); >- $patron->relationship(''); >- } >- $patron->categorycode($to); >- $patron->store(); >+ $patron->categorycode($params->{category})->store(); > } > return $counter; > } >diff --git a/t/db_dependent/Patrons.t b/t/db_dependent/Patrons.t >index 549a83bbe8..25739c9cbe 100755 >--- a/t/db_dependent/Patrons.t >+++ b/t/db_dependent/Patrons.t >@@ -26,6 +26,7 @@ use Koha::DateUtils; > > use t::lib::Dates; > use t::lib::TestBuilder; >+use t::lib::Mocks; > > BEGIN { > use_ok('Koha::Objects'); >@@ -106,6 +107,7 @@ foreach my $b ( $patrons->as_list() ) { > > subtest "Update patron categories" => sub { > plan tests => 17; >+ t::lib::Mocks::mock_preference( 'borrowerRelationship', 'test' ); > my $c_categorycode = $builder->build({ source => 'Category', value => { > category_type=>'C', > upperagelimit=>17, >@@ -116,73 +118,73 @@ subtest "Update patron categories" => sub { > my $i_categorycode = $builder->build({ source => 'Category', value => {category_type=>'I'} })->{categorycode}; > my $branchcode1 = $builder->build({ source => 'Branch' })->{branchcode}; > my $branchcode2 = $builder->build({ source => 'Branch' })->{branchcode}; >- my $adult1 = $builder->build({source => 'Borrower', value => { >+ my $adult1 = $builder->build_object({class => 'Koha::Patrons', value => { > categorycode=>$a_categorycode, > branchcode=>$branchcode1, > dateenrolled=>'2018-01-01', > sort1 =>'quack', > } > }); >- my $adult2 = $builder->build({source => 'Borrower', value => { >+ my $adult2 = $builder->build_object({class => 'Koha::Patrons', value => { > categorycode=>$a_categorycode, > branchcode=>$branchcode2, > dateenrolled=>'2017-01-01', > } > }); >- my $inst = $builder->build({source => 'Borrower', value => { >+ my $inst = $builder->build_object({class => 'Koha::Patrons', value => { > categorycode=>$i_categorycode, > branchcode=>$branchcode2, > } > }); >- my $prof = $builder->build({source => 'Borrower', value => { >+ my $prof = $builder->build_object({class => 'Koha::Patrons', value => { > categorycode=>$p_categorycode, > branchcode=>$branchcode2, >- guarantorid=>$inst->{borrowernumber}, > } > }); >- my $child1 = $builder->build({source => 'Borrower', value => { >+ $prof->add_guarantor({guarantor_id => $inst->borrowernumber, relationship => 'test'}); >+ my $child1 = $builder->build_object({class => 'Koha::Patrons', value => { > dateofbirth => dt_from_string->add(years=>-4), > categorycode=>$c_categorycode, >- guarantorid=>$adult1->{borrowernumber}, > branchcode=>$branchcode1, > } > }); >- my $child2 = $builder->build({source => 'Borrower', value => { >+ $child1->add_guarantor({guarantor_id => $adult1->borrowernumber, relationship => 'test'}); >+ my $child2 = $builder->build_object({class => 'Koha::Patrons', value => { > dateofbirth => dt_from_string->add(years=>-8), > categorycode=>$c_categorycode, >- guarantorid=>$adult1->{borrowernumber}, > branchcode=>$branchcode1, > } > }); >- my $child3 = $builder->build({source => 'Borrower', value => { >+ $child2->add_guarantor({guarantor_id => $adult1->borrowernumber, relationship => 'test'}); >+ my $child3 = $builder->build_object({class => 'Koha::Patrons', value => { > dateofbirth => dt_from_string->add(years=>-18), > categorycode=>$c_categorycode, >- guarantorid=>$adult1->{borrowernumber}, > branchcode=>$branchcode1, > } > }); >- $builder->build({source=>'Accountline',value => {amountoutstanding=>4.99,borrowernumber=>$adult1->{borrowernumber}}}); >- $builder->build({source=>'Accountline',value => {amountoutstanding=>5.01,borrowernumber=>$adult2->{borrowernumber}}}); >+ $child3->add_guarantor({guarantor_id => $adult1->borrowernumber, relationship => 'test'}); >+ $builder->build({source=>'Accountline',value => {amountoutstanding=>4.99,borrowernumber=>$adult1->borrowernumber}}); >+ $builder->build({source=>'Accountline',value => {amountoutstanding=>5.01,borrowernumber=>$adult2->borrowernumber}}); > > is( Koha::Patrons->search_patrons_to_update_category({from=>$c_categorycode})->count,3,'Three patrons in child category'); > is( Koha::Patrons->search_patrons_to_update_category({from=>$c_categorycode,too_young=>1})->count,1,'One under age patron in child category'); >- is( Koha::Patrons->search_patrons_to_update_category({from=>$c_categorycode,too_young=>1})->next->borrowernumber,$child1->{borrowernumber},'Under age patron in child category is expected one'); >+ is( Koha::Patrons->search_patrons_to_update_category({from=>$c_categorycode,too_young=>1})->next->borrowernumber,$child1->borrowernumber,'Under age patron in child category is expected one'); > is( Koha::Patrons->search_patrons_to_update_category({from=>$c_categorycode,too_old=>1})->count,1,'One over age patron in child category'); >- is( Koha::Patrons->search_patrons_to_update_category({from=>$c_categorycode,too_old=>1})->next->borrowernumber,$child3->{borrowernumber},'Over age patron in child category is expected one'); >+ is( Koha::Patrons->search_patrons_to_update_category({from=>$c_categorycode,too_old=>1})->next->borrowernumber,$child3->borrowernumber,'Over age patron in child category is expected one'); > is( Koha::Patrons->search({branchcode=>$branchcode2})->search_patrons_to_update_category({from=>$a_categorycode})->count,1,'One patron in branch 2'); >- is( Koha::Patrons->search({branchcode=>$branchcode2})->search_patrons_to_update_category({from=>$a_categorycode})->next->borrowernumber,$adult2->{borrowernumber},'Adult patron in branch 2 is expected one'); >+ is( Koha::Patrons->search({branchcode=>$branchcode2})->search_patrons_to_update_category({from=>$a_categorycode})->next->borrowernumber,$adult2->borrowernumber,'Adult patron in branch 2 is expected one'); > is( Koha::Patrons->search_patrons_to_update_category({from=>$a_categorycode,fine_min=>5})->count,1,'One patron with fines over $5'); >- is( Koha::Patrons->search_patrons_to_update_category({from=>$a_categorycode,fine_min=>5})->next->borrowernumber,$adult2->{borrowernumber},'One patron with fines over $5 is expected one'); >+ is( Koha::Patrons->search_patrons_to_update_category({from=>$a_categorycode,fine_min=>5})->next->borrowernumber,$adult2->borrowernumber,'One patron with fines over $5 is expected one'); > is( Koha::Patrons->search_patrons_to_update_category({from=>$a_categorycode,fine_max=>5})->count,1,'One patron with fines under $5'); >- is( Koha::Patrons->search_patrons_to_update_category({from=>$a_categorycode,fine_max=>5})->next->borrowernumber,$adult1->{borrowernumber},'One patron with fines under $5 is expected one'); >+ is( Koha::Patrons->search_patrons_to_update_category({from=>$a_categorycode,fine_max=>5})->next->borrowernumber,$adult1->borrowernumber,'One patron with fines under $5 is expected one'); > >- is( Koha::Patrons->find($adult1->{borrowernumber})->guarantees->count,3,'Guarantor has 3 guarantees'); >+ is( Koha::Patrons->find($adult1->borrowernumber)->guarantee_relationships->guarantees->count,3,'Guarantor has 3 guarantees'); > is( Koha::Patrons->search_patrons_to_update_category({from=>$c_categorycode,too_young=>1})->update_category_to({category=>$a_categorycode}),1,'One child patron updated to adult category'); >- is( Koha::Patrons->find($adult1->{borrowernumber})->guarantees->count,2,'Guarantee was removed when made adult'); >+ is( Koha::Patrons->find($adult1->borrowernumber)->guarantee_relationships->guarantees->count,2,'Guarantee was removed when made adult'); > >- is( Koha::Patrons->find($inst->{borrowernumber})->guarantees->count,1,'Guarantor has 1 guarantees'); >+ is( Koha::Patrons->find($inst->borrowernumber)->guarantee_relationships->guarantees->count,1,'Guarantor has 1 guarantees'); > is( Koha::Patrons->search_patrons_to_update_category({from=>$p_categorycode})->update_category_to({category=>$a_categorycode}),1,'One professional patron updated to adult category'); >- is( Koha::Patrons->find($inst->{borrowernumber})->guarantees->count,0,'Guarantee was removed when made adult'); >+ is( Koha::Patrons->find($inst->borrowernumber)->guarantee_relationships->guarantees->count,0,'Guarantee was removed when made adult'); > > }; > >-- >2.20.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 17168
:
60279
|
60280
|
60665
|
70921
|
73012
|
74936
|
75698
|
76974
|
76975
|
76976
|
85870
|
85871
|
85872
|
85873
|
85878
|
88809
|
88810
|
88811
|
88812
|
88813
|
88814
|
91677
|
94665
|
94666
|
94667
|
94668
|
94669
|
94670
|
94671
|
94790
|
94793
|
94794