Bug 39233

Summary: Non-patron guarantor info not dropped when patron category is updated
Product: Koha Reporter: Emmi Takkinen <emmi.takkinen>
Component: PatronsAssignee: Emmi Takkinen <emmi.takkinen>
Status: In Discussion --- QA Contact: Testopia <testopia>
Severity: minor    
Priority: P5 - low CC: david, gmcharlt, kyle.m.hall, m.de.rooy, martin.renvoize
Version: Main   
Hardware: All   
OS: All   
See Also: https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=39331
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=39363
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=32195
GIT URL: Change sponsored?: ---
Patch complexity: --- Documentation contact:
Documentation submission: Text to go in the release notes:
This fixes the misc/cronjobs/update_patrons_category.pl script so that non-patron guarantor information is removed when the patron category is changed (for example, from a child to an adult patron). This now matches what happens when changing the patron category when a patron has patron guarantors (that is, the guarantor information is removed).
Version(s) released in:
Circulation function:
Attachments: Bug 39233: Drop non-patron guarantor info when guarantee is updated as an adult via update_patrons_category.pl
Bug 39233: Drop non-patron guarantor info when guarantee is updated as an adult via update_patrons_category.pl

Description Emmi Takkinen 2025-03-04 10:47:31 UTC
When child patrons category is updated via update_patrons_category.pl patrons relationship with their guarantor is dropped from borrower_relationships table. But non-patron guarantees info is still kept in borrowers table.

To reproduce:
1. Find child patron with non-patron guarantor or create one.
2. Update patrons age so that their category is updated when you run following:
perl misc/cronjobs/update_patrons_category.pl --confirm --too_old --from K --to PT
3. Check patrons info from borrowers table.
=> Note that values in contactname, contactfirstname and relationship columns were not dropped.
Comment 1 Emmi Takkinen 2025-04-23 10:27:39 UTC
Created attachment 181364 [details] [review]
Bug 39233: Drop non-patron guarantor info when guarantee is updated as an adult via update_patrons_category.pl

When child patrons category is updated via update_patrons_category.pl
patrons relationship with their guarantor is dropped from
borrower_relationships table. But non-patron guarantees info
is still  kept in borrowers table. This patch fixes this by
setting non-patron guarantor columns in borrower table as
undefined when patron is stored.

To test:
1. Find child patron with non-patron guarantor or create one.
2. Update patrons age so that their category is updated when you run following:
perl misc/cronjobs/update_patrons_category.pl --confirm --too_old --from K --to PT
3. Check patrons info from patrons detail page.
=> Note that non-patron guarantors info was not dropped.
4. Apply this patch.
5. Run cronjob again.
=> Non-patron guarantors info should have now dropped.

Alsp prove t/db_dependent/Patrons.t.

Sponsored-by: Koha-Suomi Oy
Comment 2 David Nind 2025-05-01 13:09:01 UTC
Created attachment 181827 [details] [review]
Bug 39233: Drop non-patron guarantor info when guarantee is updated as an adult via update_patrons_category.pl

When child patrons category is updated via update_patrons_category.pl
patrons relationship with their guarantor is dropped from
borrower_relationships table. But non-patron guarantees info
is still  kept in borrowers table. This patch fixes this by
setting non-patron guarantor columns in borrower table as
undefined when patron is stored.

To test:
1. Find child patron with non-patron guarantor or create one.
2. Update patrons age so that their category is updated when you run following:
perl misc/cronjobs/update_patrons_category.pl --confirm --too_old --from K --to PT
3. Check patrons info from patrons detail page.
=> Note that non-patron guarantors info was not dropped.
4. Apply this patch.
5. Run cronjob again.
=> Non-patron guarantors info should have now dropped.

Alsp prove t/db_dependent/Patrons.t.

Sponsored-by: Koha-Suomi Oy
Signed-off-by: David Nind <david@davidnind.com>
Comment 3 David Nind 2025-05-01 13:18:00 UTC
Testing notes (using KTD):
1. If I try to update the patron's age in the staff interface, I get this message:
      The following fields are wrong. Please fix them.
      - Patron's age is incorrect for their category. Ages allowed are 5-17.
2. You can't save the patron until you fix the category.
3. Instead, I updated in the database: 
   update borrowers set dateofbirth="2000-05-01" where borrowernumber="37";
4. After the patch is applied, update the patron again using the database to set the patron category back to "K":
   update borrowers set categorycode="K" where borrowernumber="37";
Comment 4 Martin Renvoize (ashimema) 2025-05-02 10:41:33 UTC
I'm considering asking for a switch for this.. I could see cases where this cleanup being automated may not be wanted.
Comment 5 David Nind 2025-05-02 11:16:47 UTC
Is bug 32915 a duplicate?
Comment 6 Marcel de Rooy 2025-05-19 07:43:10 UTC
In view of comment4 and comment5 moving to In Discussion.

Please provide clarity.