[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