3 #script to set up screen for modification of borrower details
4 #written 20/12/99 by chris@katipo.co.nz
7 # Copyright 2000-2002 Katipo Communications
9 # This file is part of Koha.
11 # Koha is free software; you can redistribute it and/or modify it under the
12 # terms of the GNU General Public License as published by the Free Software
13 # Foundation; either version 2 of the License, or (at your option) any later
16 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
17 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
18 # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
20 # You should have received a copy of the GNU General Public License along with
21 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
22 # Suite 330, Boston, MA 02111-1307 USA
32 my $member=$input->param('bornum');
34 $member=NewBorrowerNumber();
36 my $type=$input->param('type');
37 my $modify=$input->param('modify.x');
38 my $delete=$input->param('delete.x');
40 print $input->redirect("/cgi-bin/koha/deletemem.pl?member=$member");
44 print startmenu('member');
47 print mkheadr(1,'Update Member Details');
49 print mkheadr(1,'Add New Member');
51 my $data=borrdata('',$member);
53 <form action=/cgi-bin/koha/newmember.pl method=post>
54 <input type=hidden name=joining value="$data->{'dateenrolled'}">
55 <input type=hidden name=expiry value="$data->{'expiry'}">
56 <input type=hidden name=type value="borrowers">
57 <input type=hidden name=borrowernumber value="$member">
61 print "<input type=hidden name=updtype value=I>";
63 print "<input type=hidden name=updtype value=M>";
66 my $cardnumber=$data->{'cardnumber'};
67 my %systemprefs=systemprefs();
69 # This logic should probably be moved out of the presentation code.
72 if ($cardnumber eq '' && $systemprefs{'autoMemberNum'} eq '1') {
74 my $query="select max(substring(borrowers.cardnumber,2,7)) from borrowers";
75 my $sth=$dbh->prepare($query);
77 my $data=$sth->fetchrow_hashref;
78 $cardnumber=$data->{'max(substring(borrowers.cardnumber,2,7))'};
81 # purpose: generate checksum'd member numbers.
82 # We'll assume we just got the max value of digits 2-8 of member #'s from the database and our job is to
83 # increment that by one, determine the 1st and 9th digits and return the full string.
84 my @weightings = (8,4,6,3,5,2,1);
87 if (! $cardnumber) { # If DB has no values, start at 1000000
88 $cardnumber = 1000000;
90 $cardnumber = $cardnumber + 1;
93 while ($i <8) { # step from char 1 to 7.
94 my $temp1 = $weightings[$i]; # read weightings, left to right, 1 char at a time
95 my $temp2 = substr($cardnumber,$i,1); # sequence left to right, 1 char at a time
97 $sum = $sum + ($temp1*$temp2); # mult each char 1-7 by its corresponding weighting
98 $i++; # increment counter
100 my $rem = ($sum%11); # remainder of sum/11 (eg. 9999999/11, remainder=2)
101 if ($rem == 10) { # if remainder is 10, use X instead
104 $cardnumber="V$cardnumber$rem";
106 $cardnumber=$data->{'cardnumber'};
111 <table border=0 cellspacing=0 cellpadding=5 >
114 <tr valign=top><td COLSPAN=2><input type=reset value="Clear all Fields"></td><td COLSPAN=3 ALIGN=RIGHT ><font size=4 face='arial,helvetica'>
115 Member# $member, Card Number* <input type=text name=cardnumber size=10 value="$cardnumber"><br>
119 <tr valign=top ><td COLSPAN=3 background="/images/background-mem.gif">
120 <B>MEMBER PERSONAL DETAILS</b></td> <td COLSPAN=2 ALIGN=RIGHT background="/images/background-mem.gif">
121 * <input type="radio" name="sex" value="F"
124 if ($data->{'sex'} eq 'F'){
129 <input type="radio" name="sex" value="M"
132 if ($data->{'sex'} eq 'M'){
137 <B>Date of Birth</B> (dd/mm/yy)
138 <input type=text name=dateofbirth size=10 value="$data->{'dateofbirth'}">
140 <tr valign=top bgcolor=white>
141 <td><SELECT NAME="title" SIZE="1">
142 <OPTION value=" ">No Title
146 if ($data->{'title'} eq 'Miss'){
151 if ($data->{'title'} eq 'Mrs'){
156 if ($data->{'title'} eq 'Ms'){
161 if ($data->{'title'} eq 'Mr'){
166 if ($data->{'title'} eq 'Dr'){
171 if ($data->{'title'} eq 'Sir'){
179 <td><input type=text name=initials size=5 value="$data->{'initials'}"></td>
180 <td><input type=text name=firstname size=20 value="$data->{'firstname'}"></td>
181 <td><input type=text name=surname size=20 value="$data->{'surname'}"></td>
182 <td><input type=text name=othernames size=20 value="$data->{'othernames'}"></td></tr>
183 <tr valign=top bgcolor=white>
184 <td><FONT SIZE=2>Title</FONT></td>
185 <td><FONT SIZE=2>Initials</FONT></td>
186 <td><FONT SIZE=2>Given Names*</FONT></td>
187 <td><FONT SIZE=2>Surname*</FONT></td>
188 <td><FONT SIZE=2>Prefered Name</FONT></td>
191 <tr><td> </TD></TR>
192 <tr valign=top bgcolor=white>
197 my ($categories,$labels)=ethnicitycategories();
198 my $ethnicitycategoriescount=$#{$categories};
199 if ($ethnicitycategoriescount>=0) {
200 print $input->popup_menu(-name=>'ethnicity',
201 -values=>$categories,
202 -default=>$data->{'ethnicity'},
206 <td colspan=2><input type=text name=ethnicnotes size=40 ></td>
211 print "</td><td colspan=2> </td><td>\n";
213 ($categories,$labels)=borrowercategories();
214 print $input->popup_menu(-name=>'categorycode',
215 -values=>$categories,
216 -default=>$data->{'categorycode'},
221 my $ethnicitylabels='';
222 if ($ethnicitycategoriescount>=0) {
224 <td colspan=2><FONT SIZE=2>Ethnicity</FONT></td>
225 <td colspan=2><FONT SIZE=2>Ethnicity Notes</FONT></td>
228 $ethnicitylabels="<td colspan=2> </td><td colspan=2> </td>";
234 <tr valign=top bgcolor=white>
236 <td><FONT SIZE=2>Membership Category*</FONT></td>
238 <tr><td> </TD></TR>
240 <tr valign=top bgcolor="99cc33" ><td COLSPAN=5 background="/images/background-mem.gif">
241 <B>MEMBER ADDRESS</b></td></tr>
242 <tr valign=top bgcolor=white>
243 <td COLSPAN=3><input type=text name=address size=40 value="$data->{'streetaddress'}">
244 <td><input type=text name=city size=20 value="$data->{'city'}"></td>
246 <SELECT NAME="area" SIZE="1">
252 if ($data->{'area'} eq 'L'){
257 if ($data->{'area'} eq 'F'){
262 if ($data->{'area'} eq 'S'){
267 if ($data->{'area'} eq 'H'){
270 print ">H - Horowhenua
272 if ($data->{'area'} eq 'K'){
277 if ($data->{'area'} eq 'O'){
280 print ">O - Out of District
282 if ($data->{'area'} eq 'X'){
285 print ">X - Temporary Visitor
287 if ($data->{'area'} eq 'Z'){
290 print ">Z - Interloan Libraries
292 if ($data->{'area'} eq 'V'){
295 print ">V - Villlage";
298 <tr valign=top bgcolor=white>
299 <td COLSPAN=3><FONT SIZE=2>Postal Address*</FONT></td>
300 <td><FONT SIZE=2>Town*</FONT></td>
301 <td><FONT SIZE=2>Area</FONT></td>
303 <tr><td> </TD></TR>
304 <tr valign=top bgcolor=white>
306 <td COLSPAN=3><input type=text name=streetaddress size=40 value="$data->{'physstreet'}"></td>
307 <td><input type=text name=streetcity size=20 value="$data->{'streetcity'}"></td>
310 <tr valign=top bgcolor=white>
312 <td COLSPAN=3><FONT SIZE=2>Street Address if different</FONT></td>
313 <td><FONT SIZE=2>Town</FONT></td>
315 <tr><td> </TD></TR>
316 <tr valign=top bgcolor="99cc33" ><td COLSPAN=5 background="/images/background-mem.gif">
317 <B>MEMBER CONTACT DETAILS</b></td></tr>
320 <tr valign=top bgcolor=white>
321 <td COLSPAN=2 ><input type=text name=phone size=20 value="$data->{'phone'}"></td>
322 <td><input type=text name=phoneday size=20 value="$data->{'phoneday'}"></td>
323 <td><input type=text name=faxnumber size=20 value="$data->{'faxnumber'}"></td>
324 <td><input type=text name=emailaddress size=20 value="$data->{'emailaddress'}"></td></tr>
326 <tr valign=top bgcolor=white>
327 <td COLSPAN=2 ><FONT SIZE=2>Phone (Home)</td>
328 <td><FONT SIZE=2>Phone (day)</td>
329 <td><FONT SIZE=2>Fax</td>
330 <td><FONT SIZE=2>Email</td></tr>
331 <tr><td> </TD></TR>
332 <tr valign=top bgcolor="99cc33" ><td COLSPAN=5 background="/images/background-mem.gif">
333 <B>ALTERNATE CONTACT DETAILS</b> </td></tr>
335 <tr valign=top bgcolor=white>
336 <td COLSPAN=3 ><input type=text name=contactname size=40 value="$data->{'contactname'}"></td>
337 <td><input type=text name=altphone size=20 value="$data->{'altphone'}"></td>
338 <td><select name=altrelationship size=1>
339 <option value="workplace"
342 if ($data->{'altrelationship'} eq 'workplace'){
347 <option value=\"relative\"";
348 if ($data->{'altrelationship'} eq 'relative'){
352 <option value=\"friend\"";
353 if ($data->{'altrelationship'} eq 'workplace'){
357 <option value=\"neighbour\"";
358 if ($data->{'altrelationship'} eq 'workplace'){
365 <tr valign=top bgcolor=white>
366 <td COLSPAN=3 ><FONT SIZE=2>Name*</td>
367 <td><FONT SIZE=2>Phone</td>
368 <td><FONT SIZE=2>Relationship*</td></tr>
372 <tr><td> </TD></TR>
375 <tr valign=top bgcolor=white>
377 <td><FONT SIZE=2>Notes</font></td>
378 <td COLSPAN=4><textarea name=altnotes wrap=physical cols=70 rows=3>$data->{'altnotes'}</textarea></td></tr>
382 <tr><td> </TD></TR>
385 <tr valign=top bgcolor="99cc33" >
387 <td COLSPAN=5 background="/images/background-mem.gif"><B>LIBRARY USE</B></td>
393 <td><FONT SIZE=2>Notes</font></td>
394 <td COLSPAN=4><textarea name=borrowernotes wrap=physical cols=70 rows=3>$data->{'borrowernotes'}</textarea></td></tr>
395 <tr><td> </TD></TR>
396 <tr valign=top bgcolor=white><td COLSPAN=5 align=right >
401 <tr><td><Font size=2>FLAGS</font></td></tr>
402 <tr><td>Gone No Address</td>
403 <td><input type=radio name=gna value=1
406 if ($data->{'gonenoaddress'} eq '1'){
409 print ">Yes <input type=radio name=gna value=0";
410 if ($data->{'gonenoaddress'} eq '0'){
413 print ">No</td></tr>\n";
414 print "<tr><td>Lost</td><td><input type=radio name=lost value=1";
415 if ($data->{'lost'} eq '1'){
418 print ">Yes<input type=radio name=lost value=0";
419 if ($data->{'lost'} eq '0'){
422 print ">No</td></tr>\n";
423 print "<tr><td>Debarred</td><td><input type=radio name=debarred value=1";
424 if ($data->{'debarred'} eq '1'){
427 print ">Yes<input type=radio name=debarred value=0";
428 if ($data->{'debarred'} eq '0'){
431 print ">No</td></tr>\n";
434 if ($type ne 'modify'){
436 <tr><td></td><td><input type=image src="/images/save-changes.gif" WIDTH=188 HEIGHT=44 ALT="Add New Member" border=0 ></td>
441 <td><td></td><td><input type=image src="/images/save-changes.gif" WIDTH=188 HEIGHT=44 ALT="Add New Member" border=0 ></td>
456 print endmenu('member');