#!/usr/bin/perl
+# NOTE: This file uses standard 8-space tabs
+# DO NOT SET TAB SIZE TO 4
# $Id$
use C4::Interface::CGI::Output;
use CGI;
use C4::Search;
+use C4::Members;
use C4::Koha;
use HTML::Template;
+use Date::Manip;
+use C4::Date;
my $input = new CGI;
});
my $member=$input->param('bornum');
-if ($member eq ''){
- $member=NewBorrowerNumber();
-}
+# if ($member eq ''){
+# $member=NewBorrowerNumber();
+# }
my $type=$input->param('type') || '';
-my $modify=$input->param('modify.x');
-my $delete=$input->param('delete.x');
+my $modify=$input->param('modify');
+my $delete=$input->param('delete');
if ($delete){
- print $input->redirect("/cgi-bin/koha/deletemem.pl?member=$member");
-
+ print $input->redirect("/cgi-bin/koha/deletemem.pl?member=$member");
} else { # this else goes down the whole script
- if ($type ne 'Add'){
- $template->param( header => 'Update Member Details'); # bad templating style
- } else {
- $template->param( header => 'Add New Member');
- }
-
- my $data=borrdata('',$member);
-
- if ($type eq 'Add'){
- $template->param( updtype => 'I');
- } else {
- $template->param( updtype => 'M');
- }
-
- my $cardnumber=$data->{'cardnumber'};
- my $autonumber_members = C4::Context->preference("autoMemberNum") || 0;
- # Find out whether member numbers should be generated
- # automatically. Should be either "1" or something else.
- # Defaults to "0", which is interpreted as "no".
- # FIXME
- # This logic should probably be moved out of the presentation code.
- # Not tonight though.
- #
- if ($cardnumber eq '' && $autonumber_members eq '1') {
- my $dbh = C4::Context->dbh;
- 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;
- # 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; # FIXME - $cardnumber++;
- }
-
- 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<br>";
- $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'};
- }
-
- if ($data->{'sex'} eq 'F'){
- $template->param(female => 1);
- }
-
- my @titles = ('Miss', 'Mrs', 'Ms', 'Mr', 'Dr', 'Sir');
- # FIXME - Assumes English. This ought to be made part of i18n.
- my @titledata;
- while (@titles) {
- my %row;
- my $title = shift @titles;
- $row{'title'} = $title;
- if ($data->{'title'} eq $title) {
- $row{'selected'}=' selected';
- } else {
- $row{'selected'}='';
- }
- push(@titledata, \%row);
- }
-
- my ($categories,$labels)=ethnicitycategories();
- my $ethnicitycategoriescount=$#{$categories};
- my $ethcatpopup;
- if ($ethnicitycategoriescount>=0) {
- $ethcatpopup = CGI::popup_menu(-name=>'ethnicity',
- -values=>$categories,
- -default=>$data->{'ethnicity'},
- -labels=>$labels);
- $template->param(ethcatpopup => $ethcatpopup); # bad style, has to be fixed
- }
-
- ($categories,$labels)=borrowercategories();
- my $catcodepopup = CGI::popup_menu(-name=>'categorycode',
- -values=>$categories,
- -default=>$data->{'categorycode'},
- -labels=>$labels);
-
- my @areas = ('L','F','S','H','K','O','X','Z','V');
- my %arealabels = ('L' => 'Levin',
- 'F' => 'Foxton',
- 'S' => 'Shannon',
- 'H' => 'Horowhenua',
- 'K' => 'Kapiti',
- 'O' => 'Out of District',
- 'X' => 'Temporary Visitor',
- 'Z' => 'Interloan Libraries',
- 'V' => 'Village');
-
- my @areadata;
- while (@areas) {
- my %row;
- my $shortcut = shift @areas;
- $row{'shortcut'} = $shortcut;
- if ($data->{'area'} eq $shortcut) {
- $row{'selected'}=' selected';
- } else {
- $row{'selected'}='';
- }
- $row{'area'}=$arealabels{$shortcut};
- push(@areadata, \%row);
- }
-
-
- my @relationships = ('workplace', 'relative','friend', 'neighbour');
- my @relshipdata;
- while (@relationships) {
- my $relship = shift @relationships;
- my %row = ('relationship' => $relship);
- if ($data->{'altrelationship'} eq $relship) {
- $row{'selected'}=' selected';
- } else {
- $row{'selected'}='';
- }
- push(@relshipdata, \%row);
- }
-
- # %flags: keys=$data-keys, datas=[formname, HTML-explanation]
- my %flags = ('gonenoaddress' => ['gna', 'Gone no address'],
- 'lost' => ['lost', 'Lost'],
- 'debarred' => ['debarred', 'Debarred']);
-
- my @flagdata;
- foreach (keys(%flags)) {
- my $key = $_;
- my %row = ('key' => $key,
- 'name' => $flags{$key}[0],
- 'html' => $flags{$key}[1]);
- if ($data->{$key}) {
- $row{'yes'}=' checked';
- $row{'no'}='';
- } else {
- $row{'yes'}='';
- $row{'no'}=' checked';
- }
- push(@flagdata, \%row);
- }
-
- if ($modify){
- $template->param( modify => 1 );
- }
-
- $template->param(
- member => $member,
- firstname => $data->{'firstname'},
- surname => $data->{'surname'},
- othernames => $data->{'othernames'},
- initials => $data->{'initials'},
- ethcatpopup => $ethcatpopup,
- catcodepopup => $catcodepopup,
- streetaddress => $data->{'streetaddress'},
- streetcity => $data->{'streetcity'},
- city => $data->{'city'},
- phone => $data->{'phone'},
- phoneday => $data->{'phoneday'},
- faxnumber => $data->{'faxnumber'},
- emailaddress => $data->{'emailaddress'},
- contactname => $data->{'contactname'},
- altphone => $data->{'altphone'},
- altnotes => $data->{'altnotes'},
- borrowernotes => $data->{'borrowernotes'},
- flagloop => \@flagdata,
- relshiploop => \@relshipdata,
- titleloop => \@titledata,
- arealoop => \@areadata,
- dateenrolled => $data->{'dateenrolled'},
- expiry => $data->{'expiry'},
- cardnumber => $cardnumber,
- dateofbirth => $data->{'dateofbirth'});
-
-output_html_with_http_headers $input, $cookie, $template->output;
+ if ($type eq 'Add'){
+ $template->param( addAction => 1);
+ } else {
+ $template->param( addAction =>0);
+ }
+
+ my $data=borrdata('',$member);
+ if ($type eq 'Add'){
+ $template->param( updtype => 'I');
+ } else {
+ $template->param( updtype => 'M');
+ }
+ my $cardnumber=C4::Members::fixup_cardnumber($data->{'cardnumber'});
+ if ($data->{'sex'} eq 'F'){
+ $template->param(female => 1);
+ }
+ my ($categories,$labels)=ethnicitycategories();
+ my $ethnicitycategoriescount=$#{$categories};
+ my $ethcatpopup;
+ if ($ethnicitycategoriescount>=0) {
+ $ethcatpopup = CGI::popup_menu(-name=>'ethnicity',
+ -id => 'ethnicity',
+ -values=>$categories,
+ -default=>$data->{'ethnicity'},
+ -labels=>$labels);
+ $template->param(ethcatpopup => $ethcatpopup); # bad style, has to be fixed
+ }
+
+ ($categories,$labels)=borrowercategories();
+ my $catcodepopup = CGI::popup_menu(-name=>'categorycode',
+ -id => 'categorycode',
+ -values=>$categories,
+ -default=>$data->{'categorycode'},
+ -labels=>$labels);
+
+ my @relationships = ('workplace', 'relative','friend', 'neighbour');
+ my @relshipdata;
+ while (@relationships) {
+ my $relship = shift @relationships;
+ my %row = ('relationship' => $relship);
+ if ($data->{'altrelationship'} eq $relship) {
+ $row{'selected'}=' selected';
+ } else {
+ $row{'selected'}='';
+ }
+ push(@relshipdata, \%row);
+ }
+
+ # %flags: keys=$data-keys, datas=[formname, HTML-explanation]
+ my %flags = ('gonenoaddress' => ['gna', 'Gone no address'],
+ 'lost' => ['lost', 'Lost'],
+ 'debarred' => ['debarred', 'Debarred']);
+
+ my @flagdata;
+ foreach (keys(%flags)) {
+ my $key = $_;
+ my %row = ('key' => $key,
+ 'name' => $flags{$key}[0],
+ 'html' => $flags{$key}[1]);
+ if ($data->{$key}) {
+ $row{'yes'}=' checked';
+ $row{'no'}='';
+ } else {
+ $row{'yes'}='';
+ $row{'no'}=' checked';
+ }
+ push(@flagdata, \%row);
+ }
+
+ if ($modify){
+ $template->param( modify => 1 );
+ }
+
+ #Convert dateofbirth to correct format
+ $data->{'dateofbirth'} = format_date($data->{'dateofbirth'});
+
+ my @branches;
+ my @select_branch;
+ my %select_branches;
+ my $branches=getbranches();
+ foreach my $branch (keys %$branches) {
+ push @select_branch, $branch;
+ $select_branches{$branch} = $branches->{$branch}->{'branchname'};
+ }
+ my $CGIbranch=CGI::scrolling_list( -name => 'branchcode',
+ -id => 'branchcode',
+ -values => \@select_branch,
+ -default => $data->{'branchcode'},
+ -labels => \%select_branches,
+ -size => 1,
+ -multiple => 0 );
+
+ $template->param( type => $type,
+ member => $member,
+ address => $data->{'streetaddress'},
+ firstname => $data->{'firstname'},
+ surname => $data->{'surname'},
+ othernames => $data->{'othernames'},
+ initials => $data->{'initials'},
+ ethcatpopup => $ethcatpopup,
+ catcodepopup => $catcodepopup,
+ streetaddress => $data->{'physstreet'},
+ zipcode => $data->{'zipcode'},
+ streetcity => $data->{'streetcity'},
+ homezipcode => $data->{'homezipcode'},
+ city => $data->{'city'},
+ phone => $data->{'phone'},
+ phoneday => $data->{'phoneday'},
+ faxnumber => $data->{'faxnumber'},
+ emailaddress => $data->{'emailaddress'},
+ textmessaging => $data->{'textmessaging'},
+ contactname => $data->{'contactname'},
+ altphone => $data->{'altphone'},
+ altnotes => $data->{'altnotes'},
+ borrowernotes => $data->{'borrowernotes'},
+ flagloop => \@flagdata,
+ relshiploop => \@relshipdata,
+ "title_".$data->{'title'} => " SELECTED ",
+ dateenrolled => $data->{'dateenrolled'},
+ expiry => $data->{'expiry'},
+ cardnumber => $cardnumber,
+ dateofbirth => $data->{'dateofbirth'},
+ dateformat => display_date_format(),
+ modify => $modify,
+ CGIbranch => $CGIbranch);
+ output_html_with_http_headers $input, $cookie, $template->output;
}
+
+# Local Variables:
+# tab-width: 8
+# End: