Koha/installer/data/mysql/atomicupdate/bug_27069.perl
Tomas Cohen Arazi 34acb76a21 Bug 27069: Update existing rules
This patch adds an atomic update file that takes care of translating
existing rules. It constrains the rules to translate to those currently
expected by Koha and leaves any other value out.

To test:
1. Have some manually added rules:
   $ koha-mysql kohadev
   > INSERT INTO circulation_rules (rule_name,rule_value) VALUES
   ('holdallowed', -1);
   > INSERT INTO circulation_rules (rule_name,rule_value) VALUES
   ('holdallowed', 1);
   > INSERT INTO circulation_rules (rule_name,rule_value) VALUES
   ('holdallowed', 2);
   > INSERT INTO circulation_rules (rule_name,rule_value) VALUES
   ('holdallowed', 3);
   > INSERT INTO circulation_rules (rule_name,rule_value) VALUES
   ('holdallowed', 0);
   > INSERT INTO circulation_rules (rule_name,rule_value) VALUES
   ('holdallowed', 4);
2. Apply this patch
3. Run:
   $ updatedatabase
=> SUCCESS: It doesn't explode
4. Verify the created rules were updated correctly:
   > SELECT * FROM circulation_rules WHERE rule_name='holdallowed';
5: Verify all the tests that dealt with this rule still pass!
   $ kshell
  k$ git diff origin/master --name-only | grep -e '\.t$' | \
         xargs prove
=> SUCCESS: Tests pass!
6. Verify the UI handles setting things correctly
7. Sign off :-D

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2021-04-07 16:08:04 +02:00

17 lines
583 B
Perl

$DBversion = 'XXX';
if( CheckVersion( $DBversion ) ) {
$dbh->do(q{
UPDATE circulation_rules
SET
rule_value = CASE
WHEN rule_value='0' THEN 'not_allowed'
WHEN rule_value='1' THEN 'from_home_library'
WHEN rule_value='2' THEN 'from_any_library'
WHEN rule_value='3' THEN 'from_local_hold_group'
END
WHERE rule_name='holdallowed' AND rule_value >= 0 AND rule_value <= 3;
});
NewVersion( $DBversion, 27069, "Change holdallowed values from numbers to strings");
}