Summary: | Move hold fee setting into circulation rules | ||
---|---|---|---|
Product: | Koha | Reporter: | Jane Wagner <jwagner> |
Component: | Hold requests | Assignee: | Martin Renvoize (ashimema) <martin.renvoize> |
Status: | Passed QA --- | QA Contact: | Tomás Cohen Arazi (tcohen) <tomascohen> |
Severity: | enhancement | ||
Priority: | P3 | CC: | aude.charillon, chris, david, fiona.borthwick, hdunne-howrie, jcamins, lucas, lucy.vaux-harvey, martin.renvoize, nengard, paul.poulain, sally.healey, tomascohen |
Version: | Main | ||
Hardware: | PC | ||
OS: | All | ||
See Also: | https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=6812 | ||
GIT URL: | Change sponsored?: | --- | |
Patch complexity: | Medium patch | Documentation contact: | |
Documentation submission: | Text to go in the release notes: |
Hold fees can now be configured through the circulation rules matrix, providing much more granular control over hold charges based on patron category, item type, and library combinations.
Previously, hold fees (reservefee) could only be set at the patron category level in the patron category administration. This enhancement integrates hold fees into the main circulation rules system, where they follow the standard rule hierarchy with automatic fallback handling.
**Key changes:**
- Hold fees can now be set for specific combinations of patron category, item type, and library
- The deprecated `reservefee` field has been removed from patron categories
- Hold fee configuration appears as a new column in the circulation rules matrix
- Hold fees follow the same rule precedence as other circulation rules (most specific rule wins, with fallback to broader rules)
**For administrators:**
After upgrading, you may want to review your circulation rules and update hold fees where appropriate. Any existing hold fees previously set at the patron category level will have been migrated to the circulation rules.
|
|
Version(s) released in: | Circulation function: | ||
Bug Depends on: | |||
Bug Blocks: | 40808, 40817 | ||
Attachments: |
Hold fee setup screenshot
Hold fee charge screenshot Bug 3492: Begginings of moving holds_fee rule to circulation rules Bug 3492: Database migration for hold fees to circulation rules Bug 3492: DBIC Update Bug 3492: Add hold fees to circulation rules system Bug 3492: Remove from patron categories admin Bug 3492: Modernize hold fee system and migrate to circulation rules Bug 3492: (follow-up) Remove last reservefee references Bug 3492: Database migration for hold fees to circulation rules Bug 3492: DBIC Update Bug 3492: Add hold fees to circulation rules system Bug 3492: Remove from patron categories admin Bug 3492: Modernize hold fee system and migrate to circulation rules Bug 3492: (follow-up) Remove last reservefee references Bug 3492: Database migration for hold fees to circulation rules Bug 3492: DBIC Update Bug 3492: Add hold fees to circulation rules system Bug 3492: Remove from patron categories admin Bug 3492: Modernize hold fee system and migrate to circulation rules Bug 3492: (follow-up) Remove last reservefee references |
Description
Chris Cormack
2010-05-21 01:11:21 UTC
patch available at: https://github.com/ptfs/Koha-PTFS May cause problem/incompatibility with #5872. A patch needs to be submitted based on master for this - and either a link right to the patch or an attached patch is necessary. Nicole The Harley integration project has been stalled for some time. This is still a feature request we see fairly often.. re-opening. This subject often comes up during system implementations - especially with our public libraries customer base. The hold fee is currently assigned to the patron category but many libraries have varying hold fees dependent upon item type. It is often thought that it would be more useful to have the hold fee linked to the item type instead of the patron category. For example: Hold on Adult book by Adult user = £1.00 Hold on Junior book by Adult user = £0.50 If the hold fee in the Adult patron category is set to £1.00, then they will be charged £1.00 for every hold they place - regardless if is an adult or a junior book. An alternative approach may be to adopt a solution similar to the 'rental fee discount' in the circulation rules. The rental fee is associated with the item type but the system administrators are able to manipulate the circ rules to allow for specific users to borrow items with rental fees at a reduced rate. Maybe we should just move it to the circulation rules? I think libraries will not be happy with either itemtype or patron category - until we have all the dimensions, things will always not work well for someone. I think moving this into the circ rules will work well. The downside is that there are already many attributes within the circ rules and there is the potential for libraries to maintain many more policies if they have a lot of combinations. In my experience though there shouldn't be too many variations. +1 Putting hold fees into the circulation rules would add a lot of flexibility. It would also be useful if ExpireReservesMaxPickUpDelayCharge (the charge for holds not collected) could pick up the hold fee in the circulation rule, rather than being a blanket charge across all patron categories and itemtypes. There's a separate bug for that here: https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=18195 - but I mention it in case it's something that can be explored at the same time. Looking into this... Moving to the circulation rules adds an additional question.. Whilst I can understand the want to add rules at itemtype and patron category levels.. would there also be a need to do this at a branch level too... and if that is the case.. which branch would govern the looking.. the pickup location, the items home library, the items current holding library?.. it opens a bit of a can of worms ;) Aha, GetReservesControlBranch deals with this for us already.. so it's a non-issue. (In reply to Martin Renvoize from comment #10) > Aha, GetReservesControlBranch deals with this for us already.. so it's a > non-issue. Humm.. actually, it doesn't. `GetReservesControlBranch` requires an item (for the case where `ReservesControlBranch` is set to 'ItemHomeLibrary'). However, at the time of reserve we don't always have that information yet (Bib level holds).. so for the case where we charge at the point of placing a hold and we allow biblio level holds.. we would explode. Rethink needed. Created attachment 119909 [details] [review] Bug 3492: Begginings of moving holds_fee rule to circulation rules This is just a starting point so far.. not complete yet I have updated the bug description per the discussion below. HoldFeeMode already allows to charge when placing a hold. We would also like to see the ability to set a hold fee based on item type instead of patron category. For example, we don't charge for CD holds but we have no way to disable this so we have to mainly waive the charge for patrons when they ask us to do this. I'm working on this again now.. to get around the title level holds challenge, I'm going to add an additional preference to define what route to take.. highest|lowest| most_common fee. Created attachment 186336 [details] [review] Bug 3492: Database migration for hold fees to circulation rules This commit adds the database migration to move hold fee configuration from patron categories to circulation rules, providing more granular control over hold fees based on patron category, item type, and branch. The migration: - Creates circulation rules for existing categories.reservefee values - Removes the deprecated reservefee column from categories table Created attachment 186337 [details] [review] Bug 3492: DBIC Update Created attachment 186338 [details] [review] Bug 3492: Add hold fees to circulation rules system This commit integrates hold fee configuration into the main circulation rules system, providing granular control over hold fees based on patron category, item type, and branch combinations. Changes: - Add hold_fee as a new circulation rule type with full scope support - Remove deprecated reservefee column mapping from Koha::Patron::Category - Integrate hold fee input into the circulation rules admin interface - Add hold fee column to the main circulation rules matrix - Enable proper rule hierarchy resolution for hold fees Hold fees can now be configured at multiple levels with automatic fallback handling following standard circulation rule patterns. Created attachment 186339 [details] [review] Bug 3492: Remove from patron categories admin Created attachment 186340 [details] [review] Bug 3492: Modernize hold fee system and migrate to circulation rules This commit completely modernizes the hold fee system by migrating from the deprecated categories.reservefee column to the circulation rules framework and implementing modern Koha::Objects patterns. WHAT CHANGED: 1. MIGRATION TO CIRCULATION RULES: - Moved hold fees from categories.reservefee to circulation_rules table - Added database migration script with atomic update - Maintains existing fee amounts during migration - Provides rule hierarchy: category+itemtype+branch specific rules 2. NEW SYSTEM PREFERENCE: TitleHoldFeeStrategy - Options: highest, lowest, most_common - Addresses inconsistent title-level hold fees when items have different fees - Default: 'highest' (safest approach for library revenue) 3. MODERN Koha::Objects API: - Koha::Item->holds_fee($patron): Calculate fee for specific item - Koha::Hold->calculate_hold_fee(): Enhanced item/title-level logic - Koha::Hold->should_charge($stage): Centralized charging logic - Koha::Hold->charge_hold_fee(): Modern fee charging with proper accounting - Removed C4::Reserves::GetReserveFee and ChargeReserveFee 4. ENHANCED FUNCTIONALITY: - Proper ReservesControlBranch logic (patron home vs item home library) - Complete HoldFeeMode implementation (placement/collection/not_always) - Clear OPAC messaging with "You will be charged..." commitment - Comprehensive test coverage for all fee scenarios 5. TECHNICAL IMPROVEMENTS: - Object-oriented design following Koha patterns - Proper error handling and edge case management - Modern test structure with comprehensive coverage - Clean separation between fee calculation and charging TEST PLAN: A) MIGRATION AND SETUP: 1. Apply all patches and run database update 2. Verify existing hold fees migrated to circulation rules: - Administration > Circulation and fine rules - Previous categories.reservefee values now in "Hold fee" column 3. Confirm old categories.reservefee column no longer used B) BASIC FEE CALCULATION: 1. Set up patron categories with different hold fees in circulation rules 2. Create items with different item types, each with different hold fees 3. Test item-level holds charge correct fees based on specific item 4. Test title-level holds use TitleHoldFeeStrategy preference C) TITLE-LEVEL HOLD STRATEGIES: 1. Set TitleHoldFeeStrategy to "highest": - Create title with items having fees $1.00, $2.00, $3.00 - Verify title-level holds charge $3.00 2. Set TitleHoldFeeStrategy to "lowest": - Verify same title charges $1.00 3. Set TitleHoldFeeStrategy to "most_common": - Add multiple items with $2.00 fee - Verify title-level holds charge $2.00 (most common) D) HOLDFEEMODE PREFERENCES: 1. Set HoldFeeMode to "any_time_is_placed": - Place holds and verify immediate fee charging - Check patron account for correct hold fee debits 2. Set HoldFeeMode to "any_time_is_collected": - Place holds, verify no immediate charges - Check out items to patron, verify fee charged on collection 3. Set HoldFeeMode to "not_always": - With available items: verify no fee charged - With all items checked out but no other holds: verify no fee - With all items checked out and other holds exist: verify fee charged E) RULE HIERARCHY TESTING: 1. Set different fees for different category/itemtype/branch combinations 2. Verify most specific rule applies: - Branch + Category + ItemType (most specific) - Category + ItemType - Category only (most general) 3. Test with different patron categories and item types F) USER INTERFACE TESTING: 1. OPAC interface: - Verify "You will be charged..." messages display correct amounts - Test both item-level and title-level hold fee messages - Confirm fees match actual charges in patron account 2. Staff interface: - Place holds for patrons and verify fee calculations - Check Administration > Circulation rules interface works correctly G) EDGE CASES AND ERROR HANDLING: 1. Test $0.00 fees (no charge scenarios) 2. Test patrons with no applicable fee rules (should default to $0.00) 3. Test items with no holdable copies (should return $0.00) 4. Test invalid/missing itemtypes or categories 5. Test holds on biblios with no items H) REGRESSION TESTING: 1. Verify existing hold placement workflows unchanged 2. Check patron account charging remains accurate 3. Confirm OPAC and staff interfaces display correctly 4. Test that existing holds continue to work properly I) UNIT TESTS: Run the following test suites to verify functionality: - prove t/db_dependent/Koha/Hold.t - prove t/db_dependent/Koha/Item.t - prove t/db_dependent/Reserves.t - prove t/db_dependent/Circulation.t BACKWARDS COMPATIBILITY: - All existing functionality preserved - Hold fee amounts maintained during migration - Existing workflows continue unchanged - Legacy code updated to use new API seamlessly Created attachment 186361 [details] [review] Bug 3492: (follow-up) Remove last reservefee references Note to testers: You will need to test this locally or using KTD.. if using KTD you will need to start ktd with the main koha branch checked out prior to applying this patch. We will need a ktd test data update corresponding to this patchset to remove the reservefee field from population scripts as we move the field here. Hi, all my tests were good. A couple minor issues remain: * The db_rev is weird. Should be using the built-in column_exists. Please fix inline. * I expected to see the HoldFeeMode system preference in the holds area. It is in the 'Fines policy' one, which I believe is incorrect. Please fix that and we should find testers so I can do the final QA. Created attachment 186691 [details] [review] Bug 3492: Database migration for hold fees to circulation rules This commit adds the database migration to move hold fee configuration from patron categories to circulation rules, providing more granular control over hold fees based on patron category, item type, and branch. The migration: - Creates circulation rules for existing categories.reservefee values - Removes the deprecated reservefee column from categories table Sponsored-by: OpenFifth <https://openfifth.co.uk> Signed-off-by: Jackie Usher <jackie.usher@westsussex.gov.uk> Created attachment 186692 [details] [review] Bug 3492: DBIC Update Sponsored-by: OpenFifth <https://openfifth.co.uk> Signed-off-by: Jackie Usher <jackie.usher@westsussex.gov.uk> Created attachment 186693 [details] [review] Bug 3492: Add hold fees to circulation rules system This commit integrates hold fee configuration into the main circulation rules system, providing granular control over hold fees based on patron category, item type, and branch combinations. Changes: - Add hold_fee as a new circulation rule type with full scope support - Remove deprecated reservefee column mapping from Koha::Patron::Category - Integrate hold fee input into the circulation rules admin interface - Add hold fee column to the main circulation rules matrix - Enable proper rule hierarchy resolution for hold fees Hold fees can now be configured at multiple levels with automatic fallback handling following standard circulation rule patterns. Sponsored-by: OpenFifth <https://openfifth.co.uk> Signed-off-by: Jackie Usher <jackie.usher@westsussex.gov.uk> Created attachment 186694 [details] [review] Bug 3492: Remove from patron categories admin Sponsored-by: OpenFifth <https://openfifth.co.uk> Signed-off-by: Jackie Usher <jackie.usher@westsussex.gov.uk> Created attachment 186695 [details] [review] Bug 3492: Modernize hold fee system and migrate to circulation rules This commit completely modernizes the hold fee system by migrating from the deprecated categories.reservefee column to the circulation rules framework and implementing modern Koha::Objects patterns. WHAT CHANGED: 1. MIGRATION TO CIRCULATION RULES: - Moved hold fees from categories.reservefee to circulation_rules table - Added database migration script with atomic update - Maintains existing fee amounts during migration - Provides rule hierarchy: category+itemtype+branch specific rules 2. NEW SYSTEM PREFERENCE: TitleHoldFeeStrategy - Options: highest, lowest, most_common - Addresses inconsistent title-level hold fees when items have different fees - Default: 'highest' (safest approach for library revenue) 3. MODERN Koha::Objects API: - Koha::Item->holds_fee($patron): Calculate fee for specific item - Koha::Hold->calculate_hold_fee(): Enhanced item/title-level logic - Koha::Hold->should_charge($stage): Centralized charging logic - Koha::Hold->charge_hold_fee(): Modern fee charging with proper accounting - Removed C4::Reserves::GetReserveFee and ChargeReserveFee 4. ENHANCED FUNCTIONALITY: - Proper ReservesControlBranch logic (patron home vs item home library) - Complete HoldFeeMode implementation (placement/collection/not_always) - Clear OPAC messaging with "You will be charged..." commitment - Comprehensive test coverage for all fee scenarios 5. TECHNICAL IMPROVEMENTS: - Object-oriented design following Koha patterns - Proper error handling and edge case management - Modern test structure with comprehensive coverage - Clean separation between fee calculation and charging TEST PLAN: A) MIGRATION AND SETUP: 1. Apply all patches and run database update 2. Verify existing hold fees migrated to circulation rules: - Administration > Circulation and fine rules - Previous categories.reservefee values now in "Hold fee" column 3. Confirm old categories.reservefee column no longer used B) BASIC FEE CALCULATION: 1. Set up patron categories with different hold fees in circulation rules 2. Create items with different item types, each with different hold fees 3. Test item-level holds charge correct fees based on specific item 4. Test title-level holds use TitleHoldFeeStrategy preference C) TITLE-LEVEL HOLD STRATEGIES: 1. Set TitleHoldFeeStrategy to "highest": - Create title with items having fees $1.00, $2.00, $3.00 - Verify title-level holds charge $3.00 2. Set TitleHoldFeeStrategy to "lowest": - Verify same title charges $1.00 3. Set TitleHoldFeeStrategy to "most_common": - Add multiple items with $2.00 fee - Verify title-level holds charge $2.00 (most common) D) HOLDFEEMODE PREFERENCES: 1. Set HoldFeeMode to "any_time_is_placed": - Place holds and verify immediate fee charging - Check patron account for correct hold fee debits 2. Set HoldFeeMode to "any_time_is_collected": - Place holds, verify no immediate charges - Check out items to patron, verify fee charged on collection 3. Set HoldFeeMode to "not_always": - With available items: verify no fee charged - With all items checked out but no other holds: verify no fee - With all items checked out and other holds exist: verify fee charged E) RULE HIERARCHY TESTING: 1. Set different fees for different category/itemtype/branch combinations 2. Verify most specific rule applies: - Branch + Category + ItemType (most specific) - Category + ItemType - Category only (most general) 3. Test with different patron categories and item types F) USER INTERFACE TESTING: 1. OPAC interface: - Verify "You will be charged..." messages display correct amounts - Test both item-level and title-level hold fee messages - Confirm fees match actual charges in patron account 2. Staff interface: - Place holds for patrons and verify fee calculations - Check Administration > Circulation rules interface works correctly G) EDGE CASES AND ERROR HANDLING: 1. Test $0.00 fees (no charge scenarios) 2. Test patrons with no applicable fee rules (should default to $0.00) 3. Test items with no holdable copies (should return $0.00) 4. Test invalid/missing itemtypes or categories 5. Test holds on biblios with no items H) REGRESSION TESTING: 1. Verify existing hold placement workflows unchanged 2. Check patron account charging remains accurate 3. Confirm OPAC and staff interfaces display correctly 4. Test that existing holds continue to work properly I) UNIT TESTS: Run the following test suites to verify functionality: - prove t/db_dependent/Koha/Hold.t - prove t/db_dependent/Koha/Item.t - prove t/db_dependent/Reserves.t - prove t/db_dependent/Circulation.t BACKWARDS COMPATIBILITY: - All existing functionality preserved - Hold fee amounts maintained during migration - Existing workflows continue unchanged - Legacy code updated to use new API seamlessly Sponsored-by: OpenFifth <https://openfifth.co.uk> Signed-off-by: Jackie Usher <jackie.usher@westsussex.gov.uk> Created attachment 186696 [details] [review] Bug 3492: (follow-up) Remove last reservefee references Sponsored-by: OpenFifth <https://openfifth.co.uk> Signed-off-by: Jackie Usher <jackie.usher@westsussex.gov.uk> (In reply to Tomás Cohen Arazi (tcohen) from comment #24) > Hi, all my tests were good. A couple minor issues remain: > > * The db_rev is weird. Should be using the built-in column_exists. Please > fix inline. > * I expected to see the HoldFeeMode system preference in the holds area. It > is in the 'Fines policy' one, which I believe is incorrect. > > Please fix that and we should find testers so I can do the final QA. DB update fixed inline.. not sure what came over me there. Not sure about the HoldFeeMode.. that one pre-exists this patchset.. I do add TitleHoldsFeeStrategy just beneath HoldFeeMode though.. happy to have it wherever, really. Created attachment 186711 [details] [review] Bug 3492: Database migration for hold fees to circulation rules This commit adds the database migration to move hold fee configuration from patron categories to circulation rules, providing more granular control over hold fees based on patron category, item type, and branch. The migration: - Creates circulation rules for existing categories.reservefee values - Removes the deprecated reservefee column from categories table Sponsored-by: OpenFifth <https://openfifth.co.uk> Signed-off-by: Jackie Usher <jackie.usher@westsussex.gov.uk> Signed-off-by: Tomás Cohen Arazi <tomascohen@theke.io> Created attachment 186712 [details] [review] Bug 3492: DBIC Update Sponsored-by: OpenFifth <https://openfifth.co.uk> Signed-off-by: Jackie Usher <jackie.usher@westsussex.gov.uk> Signed-off-by: Tomás Cohen Arazi <tomascohen@theke.io> Created attachment 186713 [details] [review] Bug 3492: Add hold fees to circulation rules system This commit integrates hold fee configuration into the main circulation rules system, providing granular control over hold fees based on patron category, item type, and branch combinations. Changes: - Add hold_fee as a new circulation rule type with full scope support - Remove deprecated reservefee column mapping from Koha::Patron::Category - Integrate hold fee input into the circulation rules admin interface - Add hold fee column to the main circulation rules matrix - Enable proper rule hierarchy resolution for hold fees Hold fees can now be configured at multiple levels with automatic fallback handling following standard circulation rule patterns. Sponsored-by: OpenFifth <https://openfifth.co.uk> Signed-off-by: Jackie Usher <jackie.usher@westsussex.gov.uk> Signed-off-by: Tomás Cohen Arazi <tomascohen@theke.io> Created attachment 186714 [details] [review] Bug 3492: Remove from patron categories admin Sponsored-by: OpenFifth <https://openfifth.co.uk> Signed-off-by: Jackie Usher <jackie.usher@westsussex.gov.uk> Signed-off-by: Tomás Cohen Arazi <tomascohen@theke.io> Created attachment 186715 [details] [review] Bug 3492: Modernize hold fee system and migrate to circulation rules This commit completely modernizes the hold fee system by migrating from the deprecated categories.reservefee column to the circulation rules framework and implementing modern Koha::Objects patterns. WHAT CHANGED: 1. MIGRATION TO CIRCULATION RULES: - Moved hold fees from categories.reservefee to circulation_rules table - Added database migration script with atomic update - Maintains existing fee amounts during migration - Provides rule hierarchy: category+itemtype+branch specific rules 2. NEW SYSTEM PREFERENCE: TitleHoldFeeStrategy - Options: highest, lowest, most_common - Addresses inconsistent title-level hold fees when items have different fees - Default: 'highest' (safest approach for library revenue) 3. MODERN Koha::Objects API: - Koha::Item->holds_fee($patron): Calculate fee for specific item - Koha::Hold->calculate_hold_fee(): Enhanced item/title-level logic - Koha::Hold->should_charge($stage): Centralized charging logic - Koha::Hold->charge_hold_fee(): Modern fee charging with proper accounting - Removed C4::Reserves::GetReserveFee and ChargeReserveFee 4. ENHANCED FUNCTIONALITY: - Proper ReservesControlBranch logic (patron home vs item home library) - Complete HoldFeeMode implementation (placement/collection/not_always) - Clear OPAC messaging with "You will be charged..." commitment - Comprehensive test coverage for all fee scenarios 5. TECHNICAL IMPROVEMENTS: - Object-oriented design following Koha patterns - Proper error handling and edge case management - Modern test structure with comprehensive coverage - Clean separation between fee calculation and charging TEST PLAN: A) MIGRATION AND SETUP: 1. Apply all patches and run database update 2. Verify existing hold fees migrated to circulation rules: - Administration > Circulation and fine rules - Previous categories.reservefee values now in "Hold fee" column 3. Confirm old categories.reservefee column no longer used B) BASIC FEE CALCULATION: 1. Set up patron categories with different hold fees in circulation rules 2. Create items with different item types, each with different hold fees 3. Test item-level holds charge correct fees based on specific item 4. Test title-level holds use TitleHoldFeeStrategy preference C) TITLE-LEVEL HOLD STRATEGIES: 1. Set TitleHoldFeeStrategy to "highest": - Create title with items having fees $1.00, $2.00, $3.00 - Verify title-level holds charge $3.00 2. Set TitleHoldFeeStrategy to "lowest": - Verify same title charges $1.00 3. Set TitleHoldFeeStrategy to "most_common": - Add multiple items with $2.00 fee - Verify title-level holds charge $2.00 (most common) D) HOLDFEEMODE PREFERENCES: 1. Set HoldFeeMode to "any_time_is_placed": - Place holds and verify immediate fee charging - Check patron account for correct hold fee debits 2. Set HoldFeeMode to "any_time_is_collected": - Place holds, verify no immediate charges - Check out items to patron, verify fee charged on collection 3. Set HoldFeeMode to "not_always": - With available items: verify no fee charged - With all items checked out but no other holds: verify no fee - With all items checked out and other holds exist: verify fee charged E) RULE HIERARCHY TESTING: 1. Set different fees for different category/itemtype/branch combinations 2. Verify most specific rule applies: - Branch + Category + ItemType (most specific) - Category + ItemType - Category only (most general) 3. Test with different patron categories and item types F) USER INTERFACE TESTING: 1. OPAC interface: - Verify "You will be charged..." messages display correct amounts - Test both item-level and title-level hold fee messages - Confirm fees match actual charges in patron account 2. Staff interface: - Place holds for patrons and verify fee calculations - Check Administration > Circulation rules interface works correctly G) EDGE CASES AND ERROR HANDLING: 1. Test $0.00 fees (no charge scenarios) 2. Test patrons with no applicable fee rules (should default to $0.00) 3. Test items with no holdable copies (should return $0.00) 4. Test invalid/missing itemtypes or categories 5. Test holds on biblios with no items H) REGRESSION TESTING: 1. Verify existing hold placement workflows unchanged 2. Check patron account charging remains accurate 3. Confirm OPAC and staff interfaces display correctly 4. Test that existing holds continue to work properly I) UNIT TESTS: Run the following test suites to verify functionality: - prove t/db_dependent/Koha/Hold.t - prove t/db_dependent/Koha/Item.t - prove t/db_dependent/Reserves.t - prove t/db_dependent/Circulation.t BACKWARDS COMPATIBILITY: - All existing functionality preserved - Hold fee amounts maintained during migration - Existing workflows continue unchanged - Legacy code updated to use new API seamlessly Sponsored-by: OpenFifth <https://openfifth.co.uk> Signed-off-by: Jackie Usher <jackie.usher@westsussex.gov.uk> Signed-off-by: Tomás Cohen Arazi <tomascohen@theke.io> Created attachment 186716 [details] [review] Bug 3492: (follow-up) Remove last reservefee references Sponsored-by: OpenFifth <https://openfifth.co.uk> Signed-off-by: Jackie Usher <jackie.usher@westsussex.gov.uk> Signed-off-by: Tomás Cohen Arazi <tomascohen@theke.io> In the DB update I see that existing rules are migrated from categories to their new home in circ rules. In the release notes I notice: After upgrading, you'll need to review your circulation rules and configure hold fees where appropriate. Any existing hold fees previously set at the patron category level will need to be migrated to the circulation rules. This makes it sould like rules are NOT migrated. Can you clarify? |