style sheet to hide styles from Netscape 4.7
[koha.git] / newmember.pl
1 #!/usr/bin/perl
2
3 # $Id$
4
5 #script to print confirmation screen, then if accepted calls itself to insert data
6 # FIXME - Yes, but what does it _do_?
7 # 2002/12/18 hdl@ifrance.com templating
8
9 # 2003/01/20 acli@ada.dhs.org XXX it seems to do the following:
10 # * "insert" seems to do nothing; in 1.2.2 the script just returns a blank
11 #   page (with the headers etc.) if "insert" has anything in it
12 # * $ok has the opposite meaning of what one expects; $ok == 1 means "not ok"
13 # * if ($ok == 0) considers the "ok" case; it displays a confirmation page
14 #   for the user to "click to confirm that everything is entered correctly"
15 # * The "else" case for ($ok == 0) handles the "not ok" case; $string is the
16 #   error message to display
17
18 # FIXME - What is the correct value of "flagsrequired"?
19 # FIXME - untranslatable strings here
20
21 # Copyright 2000-2002 Katipo Communications
22 #
23 # This file is part of Koha.
24 #
25 # Koha is free software; you can redistribute it and/or modify it under the
26 # terms of the GNU General Public License as published by the Free Software
27 # Foundation; either version 2 of the License, or (at your option) any later
28 # version.
29 #
30 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
31 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
32 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
33 #
34 # You should have received a copy of the GNU General Public License along with
35 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
36 # Suite 330, Boston, MA  02111-1307 USA
37
38 use strict;
39 use C4::Auth;
40 use C4::Input;
41 use C4::Interface::CGI::Output;
42 use CGI;
43 use Date::Manip;
44 use HTML::Template;
45 use C4::Date;
46 my %env;
47 my $input = new CGI;
48
49 #get rest of data
50 my %data;
51 my @names=$input->param;
52 foreach my $key (@names){
53   $data{$key}=$input->param($key);
54 }
55
56 my ($template, $borrowernumber, $cookie)
57     = get_template_and_user({template_name => "newmember.tmpl",
58                              query => $input,
59                              type => "intranet",
60                              authnotrequired => 0,
61                              flagsrequired => {parameters => 1},
62                          });
63
64 # Check that all compulsary fields are entered
65 # If everything is ok, set $ok = 0
66 # Otherwise set $ok = 1 and $string to the error message to display.
67
68 my $ok=0;
69 my $string = "The following compulsary fields have been left blank. "
70         . "Please push the back button and try again<p>";
71
72 if ($data{'cardnumber'} eq ''){
73     $string.=" Cardnumber<br>";
74     $ok=1;
75 } else {
76     #check cardnumber is valid
77     my $valid=checkdigit(\%env,$data{'cardnumber'});
78     if ($valid != 1){
79         $ok=1;
80         $string.=" Invalid Cardnumber<br>";
81     }
82 }
83 if ($data{'sex'} eq ''){
84     $string.=" Gender <br>";
85     $ok=1;
86 }
87 if ($data{'firstname'} eq ''){
88     $string.=" Given Names<br>";
89     $ok=1;
90 }
91 if ($data{'surname'} eq ''){
92     $string.=" Surname<br>";
93     $ok=1;
94 }
95 if ($data{'address'} eq ''){
96     $string.=" Postal Street Address<br>";
97     $ok=1;
98 }
99 if ($data{'city'} eq ''){
100     $string.=" Postal City<br>";
101     $ok=1;
102 }
103 if ($data{'contactname'} eq ''){
104     $string.=" Alternate Contact<br>";
105     $ok=1;
106 }
107
108 # Pass the ok/not ok status and the error message to the template
109 $template->param(       OK=> ($ok==0),
110                         string=> $string);
111
112 # If things are ok, display the confirmation page
113 if ($ok == 0) {
114     my $name=$data{'title'}." ";
115     if ($data{'othernames'} ne ''){
116         $name.=$data{'othernames'}." ";
117     } else {
118         $name.=$data{'firstname'}." ";
119     }
120     $name.="$data{'surname'} ( $data{'firstname'}, $data{'initials'})";
121     my $sex;
122     if ($data{'sex'} eq 'M'){
123         $sex="Male";
124     } else {
125         $sex="Female";
126     }
127     if ($data{'joining'} eq ''){
128         $data{'joining'}=ParseDate('today');
129         $data{'joining'}=format_date($data{'joining'});
130     }
131     if ($data{'expiry'} eq ''){
132         $data{'expiry'}=ParseDate('in 1 year');
133         $data{'expiry'}=format_date($data{'expiry'});
134     }
135     my $ethnic=$data{'ethnicity'}." ".$data{'ethnicnotes'};
136     my $postal=$data{'address'}."<br>".$data{'city'};
137     my $home;
138     if ($data{'streetaddress'} ne ''){
139         $home=$data{'streetaddress'}."<br>".$data{'streetcity'};
140     } else {
141         $home=$postal;
142     }
143     my @inputsloop;
144     while (my ($key, $value) = each %data) {
145         $value=~ s/\"/%22/g;
146         my %line;
147         $line{'key'}=$key;
148         $line{'value'}=$value;
149         push(@inputsloop, \%line);
150     }
151
152     #Get the fee
153     my $dbh = C4::Context->dbh;
154     my $sth = $dbh->prepare("SELECT enrolmentfee FROM categories WHERE categorycode = ?");
155     $sth->execute($data{'categorycode'});
156     my ($fee) = $sth->fetchrow;
157     $sth->finish;
158
159     $template->param(name => $name,
160                      bornum => $data{'borrowernumber'},
161                      cardnum => $data{'cardnumber'},
162                      memcat => $data{'categorycode'},
163                      fee => $fee,
164                      joindate => format_date($data{'joining'}),
165                      expdate => format_date($data{'expiry'}),
166                      branchcode => $data{'branchcode'},
167                      ethnic => $ethnic,
168                      dob => format_date($data{'dateofbirth'}),
169                      sex => $sex,
170                      postal => $postal,
171                      home => $home,
172                         zipcode => $data{'zipcode'},
173                         homezipcode => $data{'homezipcode'},
174                      phone => $data{'phone'},
175                      phoneday => $data{'phoneday'},
176                      faxnumber => $data{'faxnumber'},
177                      emailaddress => $data{'emailaddress'},
178                         textmessaging => $data{'textmessaging'},
179                      contactname => $data{'contactname'},
180                      altphone => $data{'altphone'},
181                      altrelationship => $data{'altrelationship'},
182                      altnotes => $data{'altnotes'},
183                      bornotes => $data{'borrowernotes'},
184                      inputsloop => \@inputsloop);
185
186 # If things are not ok, display the error message
187 } else {
188     # Nothing to do; the "OK" and "string" variables have already been set
189     ;
190 }
191
192 output_html_with_http_headers $input, $cookie, $template->output;
193
194