From f94d379fb9c2dde5f571ad040afd5f0f24aa83e3 Mon Sep 17 00:00:00 2001 From: Lari Taskula Date: Sat, 11 Apr 2020 17:25:57 +0000 Subject: [PATCH] Bug 25114: Add checkout_type to set_rules To test: 1. Execute the following command to run a bunch of tests grep -rl --color=never 'get_effective_rule(|set_rule(|set_rules(' \ | grep '^.*\.t$' | xargs prove 2. Test onboarding tool 2.1. Drop&create your database (take backups first if needed) 2.2. Navigate to web installer 2.3. Continue until you reach onboarding tool step where circulation rules are added. 2.4. Observe new drop down selection "Checkout type". 2.5. Select any checkout type and continue the onboarding process. 2.6. Investigate your database table "circulation_rules". You should now have rules with checkout_type of your choice. Sponsored-by: The National Library of Finland --- installer/onboarding.pl | 4 +++ .../en/modules/onboarding/onboardingstep5.tt | 10 +++++++ t/db_dependent/Circulation.t | 28 +++++++++++++++++++ t/db_dependent/Circulation/CalcDateDue.t | 4 +++ t/db_dependent/Circulation/GetHardDueDate.t | 4 +++ .../IssuingRules/maxsuspensiondays.t | 2 ++ t/db_dependent/Circulation/Returns.t | 1 + t/db_dependent/Circulation/issue.t | 2 ++ t/db_dependent/DecreaseLoanHighHolds.t | 1 + t/db_dependent/Fines.t | 2 ++ .../Holds/DisallowHoldIfItemsAvailable.t | 2 ++ t/db_dependent/Koha/Item.t | 1 + t/db_dependent/SIP/ILS.t | 1 + t/db_dependent/SIP/Transaction.t | 2 ++ t/db_dependent/api/v1/checkouts.t | 1 + t/db_dependent/selenium/basic_workflow.t | 6 ++++ 16 files changed, 71 insertions(+) diff --git a/installer/onboarding.pl b/installer/onboarding.pl index dab7980ee9..ad54beac4a 100755 --- a/installer/onboarding.pl +++ b/installer/onboarding.pl @@ -237,6 +237,7 @@ if ( $step == 5 ) { my $branchcode = $input->param('branch'); my $categorycode = $input->param('categorycode'); my $itemtype = $input->param('itemtype'); + my $checkout_type = $input->param('checkout_type'); my $maxissueqty = $input->param('maxissueqty'); my $issuelength = $input->param('issuelength'); my $lengthunit = $input->param('lengthunit'); @@ -254,6 +255,7 @@ if ( $step == 5 ) { branchcode => $branchcode, categorycode => $categorycode, itemtype => $itemtype, + checkout_type => $checkout_type, rules => { renewalsallowed => $renewalsallowed, renewalperiod => $renewalperiod, @@ -288,6 +290,7 @@ if ( $step == 5 ) { my $params_2 = { branchcode => $branchcode, categorycode => $categorycode, + checkout_type => $checkout_type, rules => { patron_maxissueqty => "", max_holds => "", @@ -321,6 +324,7 @@ if ( $step == 5 ) { categorycode => $categorycode, itemtype => $itemtype, branchcode => $branchcode, + checkout_type => $checkout_type, rules => { maxissueqty => $maxissueqty, } diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/onboarding/onboardingstep5.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/onboarding/onboardingstep5.tt index b559255591..28bacb56af 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/onboarding/onboardingstep5.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/onboarding/onboardingstep5.tt @@ -67,6 +67,16 @@ Required +
  • + + + Required +
  • diff --git a/t/db_dependent/Circulation.t b/t/db_dependent/Circulation.t index 4145860ac5..86ed9fc1d0 100755 --- a/t/db_dependent/Circulation.t +++ b/t/db_dependent/Circulation.t @@ -255,6 +255,7 @@ Koha::CirculationRules->set_rules( categorycode => undef, branchcode => undef, itemtype => undef, + checkout_type => undef, rules => { reservesallowed => 25, issuelength => 14, @@ -762,6 +763,7 @@ subtest "CanBookBeRenewed tests" => sub { categorycode => undef, branchcode => undef, itemtype => undef, + checkout_type => undef, rules => { norenewalbefore => '7', no_auto_renewal_after => '9', @@ -778,6 +780,7 @@ subtest "CanBookBeRenewed tests" => sub { categorycode => undef, branchcode => undef, itemtype => undef, + checkout_type => undef, rules => { norenewalbefore => '7', no_auto_renewal_after => '10', @@ -794,6 +797,7 @@ subtest "CanBookBeRenewed tests" => sub { categorycode => undef, branchcode => undef, itemtype => undef, + checkout_type => undef, rules => { norenewalbefore => '7', no_auto_renewal_after => '11', @@ -810,6 +814,7 @@ subtest "CanBookBeRenewed tests" => sub { categorycode => undef, branchcode => undef, itemtype => undef, + checkout_type => undef, rules => { norenewalbefore => '10', no_auto_renewal_after => '11', @@ -826,6 +831,7 @@ subtest "CanBookBeRenewed tests" => sub { categorycode => undef, branchcode => undef, itemtype => undef, + checkout_type => undef, rules => { norenewalbefore => '10', no_auto_renewal_after => undef, @@ -843,6 +849,7 @@ subtest "CanBookBeRenewed tests" => sub { categorycode => undef, branchcode => undef, itemtype => undef, + checkout_type => undef, rules => { norenewalbefore => '7', no_auto_renewal_after => '15', @@ -860,6 +867,7 @@ subtest "CanBookBeRenewed tests" => sub { categorycode => undef, branchcode => undef, itemtype => undef, + checkout_type => undef, rules => { norenewalbefore => '10', no_auto_renewal_after => undef, @@ -893,6 +901,7 @@ subtest "CanBookBeRenewed tests" => sub { categorycode => undef, branchcode => undef, itemtype => undef, + checkout_type => undef, rules => { norenewalbefore => '10', no_auto_renewal_after => '11', @@ -985,6 +994,7 @@ subtest "CanBookBeRenewed tests" => sub { categorycode => undef, branchcode => undef, itemtype => undef, + checkout_type => undef, rules => { norenewalbefore => 10, no_auto_renewal_after => 11, @@ -1051,6 +1061,7 @@ subtest "CanBookBeRenewed tests" => sub { categorycode => undef, branchcode => undef, itemtype => undef, + checkout_type => undef, rules => { norenewalbefore => '7', no_auto_renewal_after => '', @@ -1066,6 +1077,7 @@ subtest "CanBookBeRenewed tests" => sub { categorycode => undef, branchcode => undef, itemtype => undef, + checkout_type => undef, rules => { norenewalbefore => '10', no_auto_renewal_after => '5', @@ -1087,6 +1099,7 @@ subtest "CanBookBeRenewed tests" => sub { categorycode => undef, branchcode => undef, itemtype => undef, + checkout_type => undef, rules => { norenewalbefore => '10', no_auto_renewal_after => '15', @@ -1105,6 +1118,7 @@ subtest "CanBookBeRenewed tests" => sub { categorycode => undef, branchcode => undef, itemtype => undef, + checkout_type => undef, rules => { norenewalbefore => '10', no_auto_renewal_after => '', @@ -1122,6 +1136,7 @@ subtest "CanBookBeRenewed tests" => sub { categorycode => undef, branchcode => undef, itemtype => undef, + checkout_type => undef, rules => { norenewalbefore => '10', no_auto_renewal_after => '15', @@ -1144,6 +1159,7 @@ subtest "CanBookBeRenewed tests" => sub { categorycode => undef, branchcode => undef, itemtype => undef, + checkout_type => undef, rules => { norenewalbefore => undef, renewalsallowed => 0, @@ -1390,6 +1406,7 @@ subtest "AllowRenewalIfOtherItemsAvailable tests" => sub { categorycode => undef, itemtype => undef, branchcode => undef, + checkout_type => undef, rules => { reservesallowed => 25, issuelength => 14, @@ -1457,6 +1474,7 @@ subtest "AllowRenewalIfOtherItemsAvailable tests" => sub { categorycode => undef, itemtype => undef, branchcode => undef, + checkout_type => undef, rules => { onshelfholds => 0, } @@ -1471,6 +1489,7 @@ subtest "AllowRenewalIfOtherItemsAvailable tests" => sub { categorycode => undef, itemtype => undef, branchcode => undef, + checkout_type => undef, rules => { onshelfholds => 0, } @@ -1485,6 +1504,7 @@ subtest "AllowRenewalIfOtherItemsAvailable tests" => sub { categorycode => undef, itemtype => undef, branchcode => undef, + checkout_type => undef, rules => { onshelfholds => 1, } @@ -1499,6 +1519,7 @@ subtest "AllowRenewalIfOtherItemsAvailable tests" => sub { categorycode => undef, itemtype => undef, branchcode => undef, + checkout_type => undef, rules => { onshelfholds => 1, } @@ -2019,6 +2040,7 @@ subtest 'AddReturn + CumulativeRestrictionPeriods' => sub { categorycode => undef, itemtype => undef, branchcode => undef, + checkout_type => undef, rules => { issuelength => 1, firstremind => 1, # 1 day of grace @@ -2125,6 +2147,7 @@ subtest 'AddReturn + suspension_chargeperiod' => sub { categorycode => '*', itemtype => '*', branchcode => '*', + checkout_type => '*', rules => { issuelength => 1, firstremind => 0, # 0 day of grace @@ -2181,6 +2204,7 @@ subtest 'AddReturn + suspension_chargeperiod' => sub { categorycode => undef, branchcode => undef, itemtype => undef, + checkout_type => undef, rules => { suspension_chargeperiod => 3, firstremind => 1, @@ -2205,6 +2229,7 @@ subtest 'AddReturn + suspension_chargeperiod' => sub { categorycode => undef, branchcode => undef, itemtype => undef, + checkout_type => undef, rules => { finedays => 2, suspension_chargeperiod => 1, @@ -2362,6 +2387,7 @@ subtest 'AddReturn | is_overdue' => sub { categorycode => undef, itemtype => undef, branchcode => undef, + checkout_type => undef, rules => { issuelength => 6, lengthunit => 'days', @@ -3048,6 +3074,7 @@ subtest 'CanBookBeIssued | is_overdue' => sub { categorycode => undef, branchcode => undef, itemtype => undef, + checkout_type => undef, rules => { maxissueqty => 1, reservesallowed => 25, @@ -3094,6 +3121,7 @@ subtest 'ItemsDeniedRenewal preference' => sub { categorycode => '*', itemtype => '*', branchcode => $idr_lib->branchcode, + checkout_type => '*', rules => { reservesallowed => 25, issuelength => 14, diff --git a/t/db_dependent/Circulation/CalcDateDue.t b/t/db_dependent/Circulation/CalcDateDue.t index 4c0999ef0d..219bf4524d 100644 --- a/t/db_dependent/Circulation/CalcDateDue.t +++ b/t/db_dependent/Circulation/CalcDateDue.t @@ -10,6 +10,7 @@ use t::lib::Mocks; use t::lib::TestBuilder; use C4::Calendar; +use Koha::Checkouts; use Koha::CirculationRules; use_ok('C4::Circulation'); @@ -21,6 +22,7 @@ my $builder = t::lib::TestBuilder->new; my $categorycode = 'B'; my $itemtype = 'MX'; my $branchcode = 'FPL'; +my $checkout_type = $Koha::Checkouts::type->{checkout}; my $issuelength = 10; my $renewalperiod = 5; my $lengthunit = 'days'; @@ -31,6 +33,7 @@ Koha::CirculationRules->set_rules( categorycode => $categorycode, itemtype => $itemtype, branchcode => $branchcode, + checkout_type => $checkout_type, rules => { issuelength => $issuelength, renewalperiod => $renewalperiod, @@ -169,6 +172,7 @@ Koha::CirculationRules->set_rules( categorycode => $dayweek_categorycode, itemtype => $dayweek_itemtype, branchcode => $dayweek_branchcode, + checkout_type => $checkout_type, rules => { issuelength => $dayweek_issuelength, renewalperiod => $dayweek_renewalperiod, diff --git a/t/db_dependent/Circulation/GetHardDueDate.t b/t/db_dependent/Circulation/GetHardDueDate.t index 275ecc426e..6f81ccd30f 100644 --- a/t/db_dependent/Circulation/GetHardDueDate.t +++ b/t/db_dependent/Circulation/GetHardDueDate.t @@ -5,6 +5,7 @@ use C4::Context; use DateTime; use Koha::Database; use Koha::DateUtils; +use Koha::Checkouts; use Koha::CirculationRules; use Koha::Library; @@ -120,6 +121,7 @@ my $sampleissuingrule1 = { branchcode => $samplebranch1->{branchcode}, categorycode => $samplecat->{categorycode}, itemtype => $sampleitemtype1, + checkout_type => $Koha::Checkouts::type->{checkout}, rules => { finedays => 0, lengthunit => 'days', @@ -153,6 +155,7 @@ my $sampleissuingrule2 = { branchcode => $samplebranch2->{branchcode}, categorycode => $samplecat->{categorycode}, itemtype => $sampleitemtype1, + checkout_type => $Koha::Checkouts::type->{checkout}, rules => { renewalsallowed => 0, renewalperiod => 2, @@ -182,6 +185,7 @@ my $sampleissuingrule3 = { branchcode => $samplebranch1->{branchcode}, categorycode => $samplecat->{categorycode}, itemtype => $sampleitemtype2, + checkout_type => $Koha::Checkouts::type->{checkout}, rules => { renewalsallowed => 0, renewalperiod => 3, diff --git a/t/db_dependent/Circulation/IssuingRules/maxsuspensiondays.t b/t/db_dependent/Circulation/IssuingRules/maxsuspensiondays.t index d57b1406e4..85bb4819b8 100644 --- a/t/db_dependent/Circulation/IssuingRules/maxsuspensiondays.t +++ b/t/db_dependent/Circulation/IssuingRules/maxsuspensiondays.t @@ -115,6 +115,7 @@ subtest "suspension_chargeperiod" => sub { categorycode => undef, itemtype => undef, branchcode => undef, + checkout_type => undef, rules => { firstremind => 0, finedays => 7, @@ -141,6 +142,7 @@ subtest "maxsuspensiondays" => sub { categorycode => undef, itemtype => undef, branchcode => undef, + checkout_type => undef, rules => { firstremind => 0, finedays => 15, diff --git a/t/db_dependent/Circulation/Returns.t b/t/db_dependent/Circulation/Returns.t index 55b78e7d0d..de24206ad3 100644 --- a/t/db_dependent/Circulation/Returns.t +++ b/t/db_dependent/Circulation/Returns.t @@ -254,6 +254,7 @@ subtest 'Handle ids duplication' => sub { categorycode => undef, itemtype => undef, branchcode => undef, + checkout_type => undef, rules => { chargeperiod => 1, fine => 1, diff --git a/t/db_dependent/Circulation/issue.t b/t/db_dependent/Circulation/issue.t index 36c56bb427..0331f3fa99 100644 --- a/t/db_dependent/Circulation/issue.t +++ b/t/db_dependent/Circulation/issue.t @@ -93,6 +93,7 @@ Koha::CirculationRules->set_rules( itemtype => '*', categorycode => '*', branchcode => '*', + checkout_type => '*', rules => { lengthunit => 'days', issuelength => 0, @@ -355,6 +356,7 @@ Koha::CirculationRules->set_rules( categorycode => undef, itemtype => undef, branchcode => undef, + checkout_type => undef, rules => { renewalsallowed => 3, } diff --git a/t/db_dependent/DecreaseLoanHighHolds.t b/t/db_dependent/DecreaseLoanHighHolds.t index f0bf9b61d0..fd0acdf064 100755 --- a/t/db_dependent/DecreaseLoanHighHolds.t +++ b/t/db_dependent/DecreaseLoanHighHolds.t @@ -101,6 +101,7 @@ Koha::CirculationRules->set_rules( branchcode => undef, categorycode => undef, itemtype => $item->itype, + checkout_type => undef, rules => { issuelength => '14', lengthunit => 'days', diff --git a/t/db_dependent/Fines.t b/t/db_dependent/Fines.t index 76cc0638a9..4968d3b134 100644 --- a/t/db_dependent/Fines.t +++ b/t/db_dependent/Fines.t @@ -20,6 +20,7 @@ my $issuingrule = Koha::CirculationRules->set_rules( categorycode => undef, itemtype => undef, branchcode => undef, + checkout_type => undef, rules => { fine => 1, finedays => 0, @@ -49,6 +50,7 @@ $issuingrule = Koha::CirculationRules->set_rules( categorycode => undef, itemtype => undef, branchcode => undef, + checkout_type => undef, rules => { chargeperiod_charge_at => 1, } diff --git a/t/db_dependent/Holds/DisallowHoldIfItemsAvailable.t b/t/db_dependent/Holds/DisallowHoldIfItemsAvailable.t index ae5e96cb60..a4382738e0 100755 --- a/t/db_dependent/Holds/DisallowHoldIfItemsAvailable.t +++ b/t/db_dependent/Holds/DisallowHoldIfItemsAvailable.t @@ -87,6 +87,7 @@ Koha::CirculationRules->set_rules( categorycode => undef, itemtype => $itemtype, branchcode => undef, + checkout_type => undef, rules => { issuelength => 7, lengthunit => 8, @@ -272,6 +273,7 @@ Koha::CirculationRules->set_rules( categorycode => undef, itemtype => $itemtype2, branchcode => undef, + checkout_type => undef, rules => { maxissueqty => 99, onshelfholds => 0, diff --git a/t/db_dependent/Koha/Item.t b/t/db_dependent/Koha/Item.t index 55709643b7..386ea132d1 100644 --- a/t/db_dependent/Koha/Item.t +++ b/t/db_dependent/Koha/Item.t @@ -174,6 +174,7 @@ subtest 'pickup_locations' => sub { categorycode => undef, itemtype => undef, branchcode => undef, + checkout_type => undef, rules => { reservesallowed => 25, } diff --git a/t/db_dependent/SIP/ILS.t b/t/db_dependent/SIP/ILS.t index f08a259621..d93b7f8d30 100755 --- a/t/db_dependent/SIP/ILS.t +++ b/t/db_dependent/SIP/ILS.t @@ -92,6 +92,7 @@ subtest cancel_hold => sub { categorycode => $patron->categorycode, branchcode => $library->branchcode, itemtype => $item->effective_itemtype, + checkout_type => undef, rules => { onshelfholds => 1, reservesallowed => 3, diff --git a/t/db_dependent/SIP/Transaction.t b/t/db_dependent/SIP/Transaction.t index c6d2abd65f..566d9b9d7a 100755 --- a/t/db_dependent/SIP/Transaction.t +++ b/t/db_dependent/SIP/Transaction.t @@ -71,6 +71,7 @@ subtest fill_holds_at_checkout => sub { categorycode => $borrower->{categorycode}, branchcode => $branch->{branchcode}, itemtype => $itype->{itemtype}, + checkout_type => undef, rules => { onshelfholds => 1, reservesallowed => 3, @@ -177,6 +178,7 @@ subtest cancel_hold => sub { categorycode => $patron->categorycode, branchcode => $library->branchcode, itemtype => $item->effective_itemtype, + checkout_type => undef, rules => { onshelfholds => 1, reservesallowed => 3, diff --git a/t/db_dependent/api/v1/checkouts.t b/t/db_dependent/api/v1/checkouts.t index 5f7f4ed2fe..99ab202032 100644 --- a/t/db_dependent/api/v1/checkouts.t +++ b/t/db_dependent/api/v1/checkouts.t @@ -76,6 +76,7 @@ Koha::CirculationRules->set_rules( categorycode => undef, itemtype => undef, branchcode => undef, + checkout_type => undef, rules => { renewalperiod => 7, renewalsallowed => 1, diff --git a/t/db_dependent/selenium/basic_workflow.t b/t/db_dependent/selenium/basic_workflow.t index a988bb8683..c7c7cb537d 100644 --- a/t/db_dependent/selenium/basic_workflow.t +++ b/t/db_dependent/selenium/basic_workflow.t @@ -70,6 +70,11 @@ our $sample_data = { rentalcharge => 0, notforloan => 0, }, + checkout_type => { + itemtype => 'CHECKOUT', + description => 'Just a checkout_type for tests', + maxissueqty => 80100, + }, issuingrule => { categorycode => 'test_cat', itemtype => 'IT4test', @@ -159,6 +164,7 @@ SKIP: { categorycode => $issuing_rules->{categorycode}, itemtype => $issuing_rules->{itemtype}, branchcode => $issuing_rules->{branchcode}, + checkout_type => $issuing_rules->{checkout_type}, rules => { maxissueqty => $issuing_rules->{maxissueqty}, issuelength => $issuing_rules->{issuelength}, -- 2.17.1