[Koha-cvs] CVS: koha/C4 Members.pm,1.3,1.4

Paul POULAIN tipaul at users.sourceforge.net
Mon Aug 30 15:49:00 CEST 2004


Update of /cvsroot/koha/koha/C4
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32534/C4

Modified Files:
	Members.pm 
Log Message:
modularizing (with Members.pm) members management
(beginning of...)

Index: Members.pm
===================================================================
RCS file: /cvsroot/koha/koha/C4/Members.pm,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -r1.3 -r1.4
*** Members.pm	11 Feb 2004 08:40:10 -0000	1.3
--- Members.pm	30 Aug 2004 13:48:58 -0000	1.4
***************
*** 23,26 ****
--- 23,28 ----
  require Exporter;
  use C4::Context;
+ use Date::Manip;
+ use C4::Date;
  
  use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
***************
*** 47,54 ****
  @EXPORT = qw();
  
! @EXPORT_OK = qw(
! 	&fixup_cardnumber
      );
  
  ################################################################################
  
--- 49,137 ----
  @EXPORT = qw();
  
! @EXPORT = qw(
! 	&fixup_cardnumber &findguarantees &modmember &newmember
      );
  
+ 
+ sub modmember {
+ 	my (%data) = @_;
+ 	my $dbh = C4::Context->dbh;
+ 	$data{'dateofbirth'}=format_date_in_iso($data{'dateofbirth'});
+ 	$data{'joining'}=format_date_in_iso($data{'joining'});
+ 	$data{'expiry'}=format_date_in_iso($data{'expiry'});
+ 	my $query="update borrowers set title='$data{'title'}',expiry='$data{'expiry'}',
+ 	cardnumber='$data{'cardnumber'}',sex='$data{'sex'}',ethnotes='$data{'ethnicnotes'}',
+ 	streetaddress='$data{'address'}',faxnumber='$data{'faxnumber'}',firstname='$data{'firstname'}',
+ 	altnotes='$data{'altnotes'}',dateofbirth='$data{'dateofbirth'}',contactname='$data{'contactname'}',
+ 	emailaddress='$data{'emailaddress'}',dateenrolled='$data{'joining'}',streetcity='$data{'streetcity'}',
+ 	altrelationship='$data{'altrelationship'}',othernames='$data{'othernames'}',phoneday='$data{'phoneday'}',
+ 	categorycode='$data{'categorycode'}',city='$data{'city'}',area='$data{'area'}',phone='$data{'phone'}',
+ 	borrowernotes='$data{'borrowernotes'}',altphone='$data{'altphone'}',surname='$data{'surname'}',
+ 	initials='$data{'initials'}',physstreet='$data{'streetaddress'}',ethnicity='$data{'ethnicity'}',
+ 	gonenoaddress='$data{'gna'}',lost='$data{'lost'}',debarred='$data{'debarred'}',
+ 	textmessaging='$data{'textmessaging'}', branchcode = '$data{'branchcode'}',
+ 	zipcode = '$data{'zipcode'}',homezipcode='$data{'homezipcode'}', sort1='$data{'sort1'}', sort2='$data{'sort2'}'
+ 	where borrowernumber=$data{'borrowernumber'}";
+ 	my $sth=$dbh->prepare($query);
+ 	$sth->execute;
+ 	$sth->finish;
+ 	# ok if its an adult (type) it may have borrowers that depend on it as a guarantor
+ 	# so when we update information for an adult we should check for guarantees and update the relevant part
+ 	# of their records, ie addresses and phone numbers
+ 	if ($data{'categorycode'} eq 'A' || $data{'categorycode'} eq 'W'){
+ 		# is adult check guarantees;
+ 		updateguarantees(%data);
+ 	}
+ }
+ 
+ sub newmember {
+ 	my (%data) = @_;
+ 	my $dbh = C4::Context->dbh;
+ 	$data{'dateofbirth'}=format_date_in_iso($data{'dateofbirth'});
+ 	$data{'joining'}=format_date_in_iso($data{'joining'});
+ 	$data{'expiry'}=format_date_in_iso($data{'expiry'});
+ # 	$data{'borrowernumber'}=NewBorrowerNumber();
+ 	my $query="insert into borrowers (title,expiry,cardnumber,sex,ethnotes,streetaddress,faxnumber,
+ 	firstname,altnotes,dateofbirth,contactname,emailaddress,textmessaging,dateenrolled,streetcity,
+ 	altrelationship,othernames,phoneday,categorycode,city,area,phone,borrowernotes,altphone,surname,
+ 	initials,ethnicity,physstreet,branchcode,zipcode,homezipcode,sort1,sort2) values ('$data{'title'}','$data{'expiry'}','$data{'cardnumber'}',
+ 	'$data{'sex'}','$data{'ethnotes'}','$data{'address'}','$data{'faxnumber'}',
+ 	'$data{'firstname'}','$data{'altnotes'}','$data{'dateofbirth'}','$data{'contactname'}','$data{'emailaddress'}','$data{'textmessaging'}',
+ 	'$data{'joining'}','$data{'streetcity'}','$data{'altrelationship'}','$data{'othernames'}',
+ 	'$data{'phoneday'}','$data{'categorycode'}','$data{'city'}','$data{'area'}','$data{'phone'}',
+ 	'$data{'borrowernotes'}','$data{'altphone'}','$data{'surname'}','$data{'initials'}',
+ 	'$data{'ethnicity'}','$data{'streetaddress'}','$data{'branchcode'}','$data{'zipcode'}','$data{'homezipcode'}','$data{'sort1'}','$data{'sort2'}')";
+ 	my $sth=$dbh->prepare($query);
+ 	$sth->execute;
+ 	$sth->finish;
+ 	$data{borrowernumber} =$dbh->{'mysql_insertid'};
+ 	# ok if its an adult (type) it may have borrowers that depend on it as a guarantor
+ 	# so when we update information for an adult we should check for guarantees and update the relevant part
+ 	# of their records, ie addresses and phone numbers
+ 	if ($data{'categorycode'} eq 'A' || $data{'categorycode'} eq 'W'){
+ 		# is adult check guarantees;
+ 		updateguarantees(%data);
+ 	}
+ 	return $data{borrowernumber};
+ }
+ 
+ sub updateguarantees {
+ 	my (%data) = @_;
+ 	my $dbh = C4::Context->dbh;
+ 	my ($count,$guarantees)=findguarantees($data{'borrowernumber'});
+ 	for (my $i=0;$i<$count;$i++){
+ 		# FIXME
+ 		# It looks like the $i is only being returned to handle walking through
+ 		# the array, which is probably better done as a foreach loop.
+ 		#
+ 		my $guaquery="update borrowers set streetaddress='$data{'address'}',faxnumber='$data{'faxnumber'}',
+ 		streetcity='$data{'streetcity'}',phoneday='$data{'phoneday'}',city='$data{'city'}',area='$data{'area'}',phone='$data{'phone'}'
+ 		,streetaddress='$data{'address'}'
+ 		where borrowernumber='$guarantees->[$i]->{'borrowernumber'}'";
+ 		my $sth3=$dbh->prepare($guaquery);
+ 		$sth3->execute;
+ 		$sth3->finish;
+ 	}
+ }
  ################################################################################
  
***************
*** 111,113 ****
--- 194,239 ----
  }
  
+ sub findguarantees {
+   my ($bornum)=@_;
+   my $dbh = C4::Context->dbh;
+   my $sth=$dbh->prepare("select cardnumber,borrowernumber from borrowers where
+   guarantor=?");
+   $sth->execute($bornum);
+   my @dat;
+   my $i=0;
+   while (my $data=$sth->fetchrow_hashref){
+     $dat[$i]=$data;
+     $i++;
+   }
+   $sth->finish;
+   return($i,\@dat);
+ }
+ 
+ # =item NewBorrowerNumber
+ # 
+ #   $num = &NewBorrowerNumber();
+ # 
+ # Allocates a new, unused borrower number, and returns it.
+ # 
+ # =cut
+ # #'
+ # # FIXME - This is identical to C4::Search::NewBorrowerNumber.
+ # # Pick one (preferably this one) and stick with it.
+ # 
+ # # FIXME - Race condition: this function just says what the next unused
+ # # number is, but doesn't allocate it. Hence, two clients adding
+ # # patrons at the same time could get the same new borrower number and
+ # # clobber each other.
+ # # A better approach might be to set borrowernumber autoincrement and 
+ # 
+ # sub NewBorrowerNumber {
+ #   my $dbh = C4::Context->dbh;
+ #   my $sth=$dbh->prepare("Select max(borrowernumber) from borrowers");
+ #   $sth->execute;
+ #   my $data=$sth->fetchrow_hashref;
+ #   $sth->finish;
+ #   $data->{'max(borrowernumber)'}++;
+ #   return($data->{'max(borrowernumber)'});
+ # }
+ 
  1;





More information about the Koha-cvs mailing list