@@ -, +, @@ --- C4/Members.pm | 56 +++------------------- C4/UsageStats.pm | 1 - .../atomicupdate/bug_20264_remove_checkdigit.sql | 1 + installer/data/mysql/sysprefs.sql | 1 - .../prog/en/modules/admin/preferences/patrons.pref | 6 --- t/db_dependent/UsageStats.t | 1 - 6 files changed, 7 insertions(+), 59 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug_20264_remove_checkdigit.sql --- a/C4/Members.pm +++ a/C4/Members.pm @@ -534,9 +534,6 @@ mode, to avoid database corruption. =cut -use vars qw( @weightings ); -my @weightings = ( 8, 4, 6, 3, 5, 2, 1 ); - sub fixup_cardnumber { my ($cardnumber) = @_; my $autonumber_members = C4::Context->boolean_preference('autoMemberNum') || 0; @@ -545,56 +542,15 @@ sub fixup_cardnumber { # automatically. Should be either "1" or something else. # Defaults to "0", which is interpreted as "no". - # if ($cardnumber !~ /\S/ && $autonumber_members) { ($autonumber_members) or return $cardnumber; - my $checkdigit = C4::Context->preference('checkdigit'); my $dbh = C4::Context->dbh; - if ( $checkdigit and $checkdigit eq 'katipo' ) { - - # if checkdigit is selected, calculate katipo-style cardnumber. - # otherwise, just use the max() - # purpose: generate checksum'd member numbers. - # We'll assume we just got the max value of digits 2-8 of member #'s - # from the database and our job is to increment that by one, - # determine the 1st and 9th digits and return the full string. - my $sth = $dbh->prepare( - "select max(substring(borrowers.cardnumber,2,7)) as new_num from borrowers" - ); - $sth->execute; - my $data = $sth->fetchrow_hashref; - $cardnumber = $data->{new_num}; - if ( !$cardnumber ) { # If DB has no values, - $cardnumber = 1000000; # start at 1000000 - } else { - $cardnumber += 1; - } - - my $sum = 0; - for ( my $i = 0 ; $i < 8 ; $i += 1 ) { - # read weightings, left to right, 1 char at a time - my $temp1 = $weightings[$i]; - # sequence left to right, 1 char at a time - my $temp2 = substr( $cardnumber, $i, 1 ); - - # mult each char 1-7 by its corresponding weighting - $sum += $temp1 * $temp2; - } - - my $rem = ( $sum % 11 ); - $rem = 'X' if $rem == 10; - - return "V$cardnumber$rem"; - } else { - - my $sth = $dbh->prepare( - 'SELECT MAX( CAST( cardnumber AS SIGNED ) ) FROM borrowers WHERE cardnumber REGEXP "^-?[0-9]+$"' - ); - $sth->execute; - my ($result) = $sth->fetchrow; - return $result + 1; - } - return $cardnumber; # just here as a fallback/reminder + my $sth = $dbh->prepare( + 'SELECT MAX( CAST( cardnumber AS SIGNED ) ) FROM borrowers WHERE cardnumber REGEXP "^-?[0-9]+$"' + ); + $sth->execute; + my ($result) = $sth->fetchrow; + return $result + 1; } =head2 GetPendingIssues --- a/C4/UsageStats.pm +++ a/C4/UsageStats.pm @@ -291,7 +291,6 @@ sub BuildReport { AutoEmailPrimaryAddress autoMemberNum BorrowerRenewalPeriodBase - checkdigit EnableBorrowerFiles EnhancedMessagingPreferences ExtendedPatronAttributes --- a/installer/data/mysql/atomicupdate/bug_20264_remove_checkdigit.sql +++ a/installer/data/mysql/atomicupdate/bug_20264_remove_checkdigit.sql @@ -0,0 +1, @@ +DELETE FROM systempreferences WHERE variable="checkdigit"; --- a/installer/data/mysql/sysprefs.sql +++ a/installer/data/mysql/sysprefs.sql @@ -102,7 +102,6 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('casServerUrl','https://localhost:8443/cas','','URL of the cas server','Free'), ('CatalogModuleRelink','0',NULL,'If OFF the linker will never replace the authids that are set in the cataloging module.','YesNo'), ('CataloguingLog','1',NULL,'If ON, log edit/create/delete actions on bibliographic data. WARNING: this feature is very resource consuming.','YesNo'), -('checkdigit','none','none|katipo','If ON, enable checks on patron cardnumber: none or \"Katipo\" style checks','Choice'), ('CheckPrevCheckout','hardno','hardyes|softyes|softno|hardno','By default, for every item checked out, should we warn if the patron has borrowed that item in the past?','Choice'), ('CircAutocompl','1',NULL,'If ON, autocompletion is enabled for the Circulation input','YesNo'), ('CircAutoPrintQuickSlip','qslip',NULL,'Choose what should happen when an empty barcode field is submitted in circulation: Display a print quick slip window, Display a print slip window or Clear the screen.','Choice'), --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref @@ -55,12 +55,6 @@ Patrons: hardno: "Do not" - " check borrower checkout history to see if the current item has been checked out before." - - - pref: checkdigit - choices: - none: "Don't" - katipo: Do - - check and construct borrower card numbers in the Katipo style. This overrides autoMemberNum if on. - - - pref: EnhancedMessagingPreferences choices: yes: Allow --- a/t/db_dependent/UsageStats.t +++ a/t/db_dependent/UsageStats.t @@ -545,7 +545,6 @@ sub mocking_systempreferences_to_a_set_value { AutoEmailPrimaryAddress autoMemberNum BorrowerRenewalPeriodBase - checkdigit EnableBorrowerFiles EnhancedMessagingPreferences ExtendedPatronAttributes --