From 17bf0d8b9d46e4b5550a4f4dacc80fc8bdea9595 Mon Sep 17 00:00:00 2001 From: rangi Date: Mon, 12 Mar 2001 23:29:44 +0000 Subject: [PATCH] Modified to include Glen Stewarts automatic member/patron cardnumber incrementation --- memberentry.pl | 133 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 90 insertions(+), 43 deletions(-) diff --git a/memberentry.pl b/memberentry.pl index 25e9630923..e8d5247614 100755 --- a/memberentry.pl +++ b/memberentry.pl @@ -7,7 +7,7 @@ use strict; use C4::Output; use CGI; use C4::Search; - +use C4::Database; my $input = new CGI; my $member=$input->param('bornum'); @@ -15,11 +15,11 @@ if ($member eq ''){ $member=NewBorrowerNumber(); } my $type=$input->param('type'); -my $modify=$input->param('modify.x'); +my $modify=$input->param('modify.x'); print $input->header; print startpage(); print startmenu('member'); -#print $modify; + if ($type ne 'Add'){ print mkheadr(1,'Update Member Details'); } else { @@ -39,13 +39,53 @@ if ($type eq 'Add'){ } else { print ""; } + +my $cardnumber=$data->{'cardnumber'}; +my %systemprefs=systemprefs(); +if ($cardnumber eq '' && $systemprefs{'autoMemberNum'} eq '1') { + my $dbh=C4Connect; + my $query="select max(substring(borrowers.cardnumber,2,7)) from borrowers"; + my $sth=$dbh->prepare($query); + $sth->execute; + my $data=$sth->fetchrow_hashref; + $cardnumber=$data->{'max(substring(borrowers.cardnumber,2,7))'}; + $sth->finish; + $dbh->disconnect; + # 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 @weightings = (8,4,6,3,5,2,1); + my $sum; + my $i = 0; + if (! $cardnumber) { # If DB has no values, start at 1000000 + $cardnumber = 1000000; + } else { + $cardnumber = $cardnumber + 1; + } + + while ($i <8) { # step from char 1 to 7. + my $temp1 = $weightings[$i]; # read weightings, left to right, 1 char at a time + my $temp2 = substr($cardnumber,$i,1); # sequence left to right, 1 char at a time +#print "$temp2
"; + $sum = $sum + ($temp1*$temp2); # mult each char 1-7 by its corresponding weighting + $i++; # increment counter + } + my $rem = ($sum%11); # remainder of sum/11 (eg. 9999999/11, remainder=2) + if ($rem == 10) { # if remainder is 10, use X instead + $rem = "X"; + } + $cardnumber="V$cardnumber$rem"; +} else { + $cardnumber=$data->{'cardnumber'}; +} + print < -Member# $member, Card Number*
+Member# $member, Card Number*
@@ -224,9 +264,16 @@ print <   - + printend ; -if ($modify){ - print <FLAGS -Gone No Address -FLAGS + Gone No Address + {'gonenoaddress'} eq '1'){ - print " checked"; - } -print ">Yes {'gonenoaddress'} eq '0'){ - print " checked"; - } - print ">No\n"; - print "Lost{'lost'} eq '1'){ - print " checked"; - } - print ">Yes{'lost'} eq '0'){ - print " checked"; - } - print ">No\n"; - print "Debarred{'debarred'} eq '1'){ - print " checked"; - } - print ">Yes{'debarred'} eq '0'){ - print " checked"; - } - print ">No\n"; -} -if ($type eq 'Add'){ + if ($data->{'gonenoaddress'} eq '1'){ + print " checked"; + } + print ">Yes {'gonenoaddress'} eq '0'){ + print " checked"; + } + print ">No\n"; + print "Lost{'lost'} eq '1'){ + print " checked"; + } + print ">Yes{'lost'} eq '0'){ + print " checked"; + } + print ">No\n"; + print "Debarred{'debarred'} eq '1'){ + print " checked"; + } + print ">Yes{'debarred'} eq '0'){ + print " checked"; + } + print ">No\n"; +} + +if ($type ne 'modify'){ print < - + printend ; } else { print < - + printend ; } print < -- 2.39.2