X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=members%2Fmemberentry.pl;h=6de07bf50bc41ff7b34f52efbe810f954e2bb921;hb=d508f0244bd288066d62dcaa40244702b2581514;hp=c665b6e9574002513e83fba941571b374b54dac6;hpb=8307a1f79d8143e05c734cc750bb420c1ff41e1c;p=koha.git diff --git a/members/memberentry.pl b/members/memberentry.pl index c665b6e957..6de07bf50b 100755 --- a/members/memberentry.pl +++ b/members/memberentry.pl @@ -100,19 +100,29 @@ my @field_check=split(/\|/,$check_BorrowerMandatoryField); foreach (@field_check) { $template->param( "mandatory$_" => 1); } +# function to designate unwanted fields +my $check_BorrowerUnwantedField=C4::Context->preference("BorrowerUnwantedField"); +@field_check=split(/\|/,$check_BorrowerUnwantedField); +foreach (@field_check) { + next unless m/\w/o; + $template->param( "no$_" => 1); +} $template->param( "add" => 1 ) if ( $op eq 'add' ); $template->param( "duplicate" => 1 ) if ( $op eq 'duplicate' ); $template->param( "checked" => 1 ) if ( defined($nodouble) && $nodouble eq 1 ); ( $borrower_data = GetMember( 'borrowernumber' => $borrowernumber ) ) if ( $op eq 'modify' or $op eq 'save' or $op eq 'duplicate' ); my $categorycode = $input->param('categorycode') || $borrower_data->{'categorycode'}; -my $category_type = $input->param('category_type'); +my $category_type = $input->param('category_type') || ''; +if ($category_type){ + $template->{VARS}->{'type_only'} = 1; +} my $new_c_type = $category_type; #if we have input param, then we've already chosen the cat_type. unless ($category_type or !($categorycode)){ my $borrowercategory = GetBorrowercategory($categorycode); $category_type = $borrowercategory->{'category_type'}; my $category_name = $borrowercategory->{'description'}; $template->param("categoryname"=>$category_name); -} + } $category_type="A" unless $category_type; # FIXME we should display a error message instead of a 500 error ! # if a add or modify is requested => check validity of data. @@ -128,6 +138,17 @@ if ( $op eq 'insert' || $op eq 'modify' || $op eq 'save' || $op eq 'duplicate' ) $newdata{$key} =~ s/\"/"/g unless $key eq 'borrowernotes' or $key eq 'opacnote'; } } + + ## Manipulate debarred + if ( $newdata{debarred} ) { + $newdata{debarred} = $newdata{datedebarred} ? $newdata{datedebarred} : "9999-12-31"; + } elsif ( exists( $newdata{debarred} ) && !( $newdata{debarred} ) ) { + undef( $newdata{debarred} ); + undef( $newdata{debarredcomment} ); + } elsif ( exists( $newdata{debarredcomment} ) && $newdata{debarredcomment} eq "" ) { + undef( $newdata{debarredcomment} ); + } + my $dateobject = C4::Dates->new(); my $syspref = $dateobject->regexp(); # same syspref format for all 3 dates my $iso = $dateobject->regexp('iso'); # @@ -180,37 +201,42 @@ if ( $op eq 'insert' || $op eq 'modify' || $op eq 'save' || $op eq 'duplicate' ) } #############test for member being unique ############# -if (($op eq 'insert') and !$nodouble){ - my $category_type_send=$category_type if ($category_type eq 'I'); - my $check_category; # recover the category code of the doublon suspect borrowers - # ($result,$categorycode) = checkuniquemember($collectivity,$surname,$firstname,$dateofbirth) - ($check_member,$check_category) = checkuniquemember( - $category_type_send, - ($newdata{surname} ? $newdata{surname} : $data{surname} ), - ($newdata{firstname} ? $newdata{firstname} : $data{firstname} ), - ($newdata{dateofbirth} ? $newdata{dateofbirth} : $data{dateofbirth}) - ); - if(!$check_member){ - $nodouble = 1; - } - # recover the category type if the borrowers is a doublon +if ( ( $op eq 'insert' ) and !$nodouble ) { + my $category_type_send; + if ( $category_type eq 'I' ) { + $category_type_send = $category_type; + } + my $check_category; # recover the category code of the doublon suspect borrowers + # ($result,$categorycode) = checkuniquemember($collectivity,$surname,$firstname,$dateofbirth) + ( $check_member, $check_category ) = checkuniquemember( + $category_type_send, + ( $newdata{surname} ? $newdata{surname} : $data{surname} ), + ( $newdata{firstname} ? $newdata{firstname} : $data{firstname} ), + ( $newdata{dateofbirth} ? $newdata{dateofbirth} : $data{dateofbirth} ) + ); + if ( !$check_member ) { + $nodouble = 1; + } + + # recover the category type if the borrowers is a doublon if ($check_category) { - my $tmpborrowercategory=GetBorrowercategory($check_category); - $check_categorytype=$tmpborrowercategory->{'category_type'}; - } + my $tmpborrowercategory = GetBorrowercategory($check_category); + $check_categorytype = $tmpborrowercategory->{'category_type'}; + } } #recover all data from guarantor address phone ,fax... if ( $guarantorid and ( $category_type eq 'C' || $category_type eq 'P' )) { if (my $guarantordata=GetMember(borrowernumber => $guarantorid)) { $guarantorinfo=$guarantordata->{'surname'}." , ".$guarantordata->{'firstname'}; - if ( !defined($data{'contactname'}) or $data{'contactname'} eq '' or - $data{'contactname'} ne $guarantordata->{'surname'} ) { - $newdata{'contactfirstname'}= $guarantordata->{'firstname'}; - $newdata{'contactname'} = $guarantordata->{'surname'}; - $newdata{'contacttitle'} = $guarantordata->{'title'}; + $newdata{'contactfirstname'}= $guarantordata->{'firstname'}; + $newdata{'contactname'} = $guarantordata->{'surname'}; + $newdata{'contacttitle'} = $guarantordata->{'title'}; + if ( $op eq 'add' ) { foreach (qw(streetnumber address streettype address2 - zipcode country city phone phonepro mobile fax email emailpro branchcode)) { + zipcode country city state phone phonepro mobile fax email emailpro branchcode + B_streetnumber B_streettype B_address B_address2 + B_city B_state B_zipcode B_country B_email B_phone)) { $newdata{$_} = $guarantordata->{$_}; } } @@ -218,12 +244,10 @@ if ( $guarantorid and ( $category_type eq 'C' || $category_type eq 'P' )) { } ###############test to take the right zipcode, country and city name ############## -if (!defined($guarantorid) or $guarantorid eq '' or $guarantorid eq '0') { - # set only if parameter was passed from the form - $newdata{'city'} = $input->param('city') if defined($input->param('city')); - $newdata{'zipcode'} = $input->param('zipcode') if defined($input->param('zipcode')); - $newdata{'country'} = $input->param('country') if defined($input->param('country')); -} +# set only if parameter was passed from the form +$newdata{'city'} = $input->param('city') if defined($input->param('city')); +$newdata{'zipcode'} = $input->param('zipcode') if defined($input->param('zipcode')); +$newdata{'country'} = $input->param('country') if defined($input->param('country')); #builds default userid if ( (defined $newdata{'userid'}) && ($newdata{'userid'} eq '')){ @@ -233,19 +257,22 @@ if ( (defined $newdata{'userid'}) && ($newdata{'userid'} eq '')){ $debug and warn join "\t", map {"$_: $newdata{$_}"} qw(dateofbirth dateenrolled dateexpiry); my $extended_patron_attributes = (); if ($op eq 'save' || $op eq 'insert'){ - if (checkcardnumber($newdata{cardnumber},$newdata{borrowernumber})){ - push @errors, 'ERROR_cardnumber'; - } - my $dateofbirthmandatory = (scalar grep {$_ eq "dateofbirth"} @field_check) ? 1 : 0; - if ($newdata{dateofbirth} && $dateofbirthmandatory) { - my $age = GetAge($newdata{dateofbirth}); - my $borrowercategory=GetBorrowercategory($newdata{'categorycode'}); - my ($low,$high) = ($borrowercategory->{'dateofbirthrequired'}, $borrowercategory->{'upperagelimit'}); - if (($high && ($age > $high)) or ($age < $low)) { - push @errors, 'ERROR_age_limitations'; - $template->param('ERROR_age_limitations' => "$low to $high"); + # If the cardnumber is blank, treat it as null. + $newdata{'cardnumber'} = undef if $newdata{'cardnumber'} =~ /^\s*$/; + + if (checkcardnumber($newdata{cardnumber},$newdata{borrowernumber})){ + push @errors, 'ERROR_cardnumber'; + } + my $dateofbirthmandatory = (scalar grep {$_ eq "dateofbirth"} @field_check) ? 1 : 0; + if ($newdata{dateofbirth} && $dateofbirthmandatory) { + my $age = GetAge($newdata{dateofbirth}); + my $borrowercategory=GetBorrowercategory($newdata{'categorycode'}); + my ($low,$high) = ($borrowercategory->{'dateofbirthrequired'}, $borrowercategory->{'upperagelimit'}); + if (($high && ($age > $high)) or ($age < $low)) { + push @errors, 'ERROR_age_limitations'; + $template->param('ERROR_age_limitations' => "$low to $high"); + } } - } if($newdata{surname} && C4::Context->preference('uppercasesurnames')) { $newdata{'surname'} = uc($newdata{'surname'}); @@ -334,7 +361,7 @@ if ((!$nok) and $nodouble and ($op eq 'insert' or $op eq 'save')){ C4::Members::Attributes::SetBorrowerAttributes($borrowernumber, $extended_patron_attributes); } if (C4::Context->preference('EnhancedMessagingPreferences') and $input->param('setting_messaging_prefs')) { - C4::Form::MessagingPreferences::handle_form_action($input, { borrowernumber => $borrowernumber }, $template); + C4::Form::MessagingPreferences::handle_form_action($input, { borrowernumber => $borrowernumber }, $template, 1, $newdata{'categorycode'}); } } elsif ($op eq 'save'){ if ($NoUpdateLogin) { @@ -374,7 +401,7 @@ if ($nok or !$nodouble){ } if (C4::Context->preference("IndependantBranches")) { my $userenv = C4::Context->userenv; - if ($userenv->{flags} % 2 != 1 && $data{branchcode}){ + if ($userenv->{flags} % 2 != 1 && $data{'branchcode'}){ unless ($userenv->{branch} eq $data{'branchcode'}){ print $input->redirect("/cgi-bin/koha/members/members-home.pl"); exit; @@ -393,7 +420,6 @@ if ( $op eq "duplicate" ) { $template->param( step_1 => 1, step_2 => 1, step_3 => 1, step_4 => 1, step_5 => 1, step_6 => 1 ) unless $step; } -# my $cardnumber=$data{'cardnumber'}; $data{'cardnumber'}=fixup_cardnumber($data{'cardnumber'}) if $op eq 'add'; if(!defined($data{'sex'})){ $template->param( none => 1); @@ -493,7 +519,7 @@ my $borrotitlepopup = CGI::popup_menu(-name=>'title', -default=>$default_borrowertitle ); -my @relationships = split /,|\|/, C4::Context->preference('BorrowerRelationship'); +my @relationships = split /,|\|/, C4::Context->preference('borrowerRelationship'); my @relshipdata; while (@relationships) { my $relship = shift @relationships || ''; @@ -507,8 +533,7 @@ while (@relationships) { } my %flags = ( 'gonenoaddress' => ['gonenoaddress' ], - 'lost' => ['lost'], - 'debarred' => ['debarred']); + 'lost' => ['lost']); my @flagdata; @@ -549,7 +574,9 @@ if(scalar(@select_branch) > 0){ # -------------------------------------------------------------------------------------------------------- #in modify mod :default value from $CGIbranch comes from borrowers table #in add mod: default value come from branches table (ip correspendence) -$default=$data{'branchcode'} if ($op eq 'modify' || ($op eq 'add' && $category_type eq 'C')); +if (defined ($data{'branchcode'}) and ( $op eq 'modify' || ( $op eq 'add' && $category_type eq 'C' ) )) { + $default = $data{'branchcode'}; +} $CGIbranch = CGI::scrolling_list(-id => 'branchcode', -name => 'branchcode', -values => \@select_branch, @@ -627,7 +654,10 @@ if (C4::Context->preference('uppercasesurnames')) { $data{'surname'} =uc($data{'surname'} ); $data{'contactname'}=uc($data{'contactname'}); } -foreach (qw(dateenrolled dateexpiry dateofbirth)) { + +$data{debarred} = C4::Overdues::CheckBorrowerDebarred($borrowernumber); +$data{datedebarred} = $data{debarred} if ( $data{debarred} && $data{debarred} ne "9999-12-31" ); +foreach (qw(dateenrolled dateexpiry dateofbirth datedebarred)) { $data{$_} = format_date($data{$_}); # back to syspref for display $template->param( $_ => $data{$_}); } @@ -668,7 +698,7 @@ $template->param(CGIbranch=>$CGIbranch) if ($CGIbranch); $template->param( nodouble => $nodouble, borrowernumber => $borrowernumber, #register number - guarantorid => (($borrower_data->{'guarantorid'})) ? $borrower_data->{'guarantorid'} : $guarantorid, + guarantorid => ($borrower_data->{'guarantorid'} || $guarantorid), ethcatpopup => $ethcatpopup, relshiploop => \@relshipdata, city_loop => $city_arrayref,