Fixing bug in deletemem.pl :
[koha.git] / members / memberentry.pl
index 474853d..62f2002 100755 (executable)
@@ -52,12 +52,15 @@ my ($template, $loggedinuser, $cookie)
                             debug => 1,
                             });
 
-my $member=$input->param('bornum');
+my $borrowernumber=$input->param('borrowernumber');
 my $actionType=$input->param('actionType') || '';
 my $modify=$input->param('modify');
 my $delete=$input->param('delete');
 my $op=$input->param('op');
 my $categorycode=$input->param('categorycode');
+my $destination=$input->param('destination');
+
+
 
 my $nok;
 # if a add or modify is requested => check validity of data.
@@ -76,7 +79,7 @@ if ($op eq 'add' or $op eq 'modify') {
        } else {
                #check cardnumber is valid
                my $nounique;
-               if ( $data{'actionType'} eq "Add" )    {
+               if ( $op eq "add" )    {
                        $nounique = 0;
                } else {
                        $nounique = 1;
@@ -87,6 +90,7 @@ if ($op eq 'add' or $op eq 'modify') {
                        push @errors, "ERROR_invalid_cardnumber";
                }
        }
+
        if ($data{'sex'} eq '' && $categorycode ne "I"){
                push @errors, "ERROR_gender";
                $nok=1;
@@ -99,7 +103,7 @@ if ($op eq 'add' or $op eq 'modify') {
                push @errors,"ERROR_surname";
                $nok=1;
        }
-       if ($data{'address'} eq ''){
+       if ($data{'streetaddress'} eq ''){
                push @errors, "ERROR_address";
                $nok=1;
        }
@@ -107,6 +111,15 @@ if ($op eq 'add' or $op eq 'modify') {
                push @errors, "ERROR_city";
                $nok=1;
        }
+       if (C4::Context->preference("IndependantBranches")) {
+               my $userenv = C4::Context->userenv;
+               if ($userenv->{flags} == 1){
+                       unless ($userenv->{branch} eq $data{'branchcode'}){
+                               push @errors, "ERROR_branch";
+                               $nok=1;
+                       }
+               }
+       }
        if ($nok) {
                foreach my $error (@errors) {
                        $template->param( $error => 1);
@@ -117,66 +130,38 @@ if ($op eq 'add' or $op eq 'modify') {
                my $sth=$dbh->prepare($query);
                $sth->execute($data{'borrowernumber'});
                if (my $data2=$sth->fetchrow_hashref){
-                       $data{'dateofbirth'}=format_date_in_iso($data{'dateofbirth'});
-                       $data{'joining'}=format_date_in_iso($data{'joining'});
-                       $data{'expiry'}=format_date_in_iso($data{'expiry'});
-                       $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'}'
-                       where borrowernumber=$data{'borrowernumber'}";
+                       &modmember(%data);
                }else{
-                       $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();
-                       $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) 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'}')";
+                       $borrowernumber = &newmember(%data);
                }
-               # 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;
-                       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;
-                       }
+               
+       if($destination eq "circ"){
+               print $input->redirect("/cgi-bin/koha/circ/circulation.pl?findborrower=$data{'cardnumber'}");
+       } else {
+               print $input->redirect("/cgi-bin/koha/members/moremember.pl?bornum=$borrowernumber");
                }
-               my $sth2=$dbh->prepare($query);
-               $sth2->execute;
-               $sth2->finish;
-               $sth->finish;
-               print $input->redirect("/cgi-bin/koha/members/moremember.pl?bornum=$data{'borrowernumber'}");   }
+       }
 }
 if ($delete){
-       print $input->redirect("/cgi-bin/koha/deletemem.pl?member=$member");
+       my @errors;
+       my $nok;
+       my $branch =$input->param('branchcode');
+       if (C4::Context->preference("IndependantBranches")) {
+               my $userenv = C4::Context->userenv;
+               if ($userenv->{flags} == 1){
+                       if ($userenv->{branch} eq $branch){
+                               print $input->redirect("/cgi-bin/koha/deletemem.pl?member=$borrowernumber");
+                       } else {
+                               push @errors, "ERROR_branch";
+                               $nok=1;
+                               print $input->redirect("/cgi-bin/koha/members/moremember.pl?bornum=$borrowernumber");
+                       }
+               } else {
+                       print $input->redirect("/cgi-bin/koha/deletemem.pl?member=$borrowernumber");
+               }
+       } else {
+               print $input->redirect("/cgi-bin/koha/deletemem.pl?member=$borrowernumber");
+       }
 } else {  # this else goes down the whole script
        if ($actionType eq 'Add'){
                $template->param( addAction => 1);
@@ -191,7 +176,17 @@ if ($delete){
                        $data->{$key}=$input->param($key);
                }
        } else {
-               $data=borrdata('',$member);
+               $data=borrdata('',$borrowernumber);
+       }
+       if (C4::Context->preference("IndependantBranches")) {
+               my $userenv = C4::Context->userenv;
+               unless ($userenv->{flags} == 1){
+                       warn "userenv=".$userenv->{'branch'}."  member branch :".$data->{'branchcode'};
+                       unless ($userenv->{'branch'} eq $data->{'branchcode'}){
+                               print $input->redirect("/cgi-bin/koha/members/moremember.pl?bornum=$borrowernumber");
+                               exit 1;
+                       }
+               }
        }
        if ($actionType eq 'Add'){
                $template->param( updtype => 'I');
@@ -221,7 +216,7 @@ if ($delete){
                                        -default=>$data->{'categorycode'},
                                        -labels=>$labels);
 
-       my @relationships = ('workplace', 'relative','friend', 'neighbour');
+       my @relationships = ('','workplace', 'relative','friend', 'neighbour');
        my @relshipdata;
        while (@relationships) {
                my $relship = shift @relationships;
@@ -266,10 +261,26 @@ if ($delete){
        my @select_branch;
        my %select_branches;
        my $branches=getbranches();
+       my $default;
        foreach my $branch (keys %$branches) {
-               push @select_branch, $branch;
-               $select_branches{$branch} = $branches->{$branch}->{'branchname'};
+               if (C4::Context->preference("IndependantBranches")) {
+                       my $userenv = C4::Context->userenv;
+                       if ($userenv->{flags} == 1){
+                               push @select_branch, $branch;
+                               $select_branches{$branch} = $branches->{$branch}->{'branchname'};
+                               $default = $data->{'branchcode'};
+                       } else {
+                               push @select_branch, $branch if ($branch eq $userenv->{branch});
+                               $select_branches{$branch} = $branches->{$branch}->{'branchname'} if ($branch eq $userenv->{branch});
+                               $default = $userenv->{branch};
+                       }
+               } else {
+                       push @select_branch, $branch;
+                       $select_branches{$branch} = $branches->{$branch}->{'branchname'};
+                       $default = $data->{'branchcode'};
+               }
        }
+       
        my $CGIbranch=CGI::scrolling_list( -name     => 'branchcode',
                                -id => 'branchcode',
                                -values   => \@select_branch,
@@ -277,9 +288,25 @@ if ($delete){
                                -labels   => \%select_branches,
                                -size     => 1,
                                -multiple => 0 );
+                               
+
+       my $CGIsort1 = buildCGIsort("Bsort1","sort1",$data->{'sort1'});
+       if ($CGIsort1) {
+               $template->param(CGIsort1 => $CGIsort1);
+       } else {
+               $template->param( sort1 => $data->{'sort1'});
+       }
 
+       my $CGIsort2 = buildCGIsort("Bsort2","sort2",$data->{'sort2'});
+       if ($CGIsort2) {
+               $template->param(CGIsort2 =>$CGIsort2);
+       } else {
+               $template->param( sort2 => $data->{'sort2'});
+       }
+       
        $template->param(       actionType              => $actionType,
-                               member          => $member,
+                               destination => $destination,
+                               borrowernumber          => $borrowernumber,
                                address         => $data->{'streetaddress'},
                                firstname       => $data->{'firstname'},
                                surname         => $data->{'surname'},
@@ -287,7 +314,8 @@ if ($delete){
                                initials        => $data->{'initials'},
                                ethcatpopup     => $ethcatpopup,
                                catcodepopup    => $catcodepopup,
-                               streetaddress   => $data->{'physstreet'},
+                               streetaddress   => $data->{'streetaddress'},
+                               physstreet   => $data->{'physstreet'},
                                zipcode => $data->{'zipcode'},
                                streetcity      => $data->{'streetcity'},
                                homezipcode => $data->{'homezipcode'},
@@ -304,8 +332,8 @@ if ($delete){
                                flagloop        => \@flagdata,
                                relshiploop     => \@relshipdata,
                                "title_".$data->{'title'} => " SELECTED ",
-                               dateenrolled    => $data->{'dateenrolled'},
-                               expiry          => $data->{'expiry'},
+                               joining => format_date($data->{'dateenrolled'}),
+                               expiry          => format_date($data->{'expiry'}),
                                cardnumber      => $cardnumber,
                                dateofbirth     => $data->{'dateofbirth'},
                                dateformat      => display_date_format(),