X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=members%2Fmemberentry.pl;h=4b410a7036127452cbe3221572354ff816d8e662;hb=9c5e40e4923179bf0b2b630d3e09797dc4c1fdb0;hp=9a3dd18bfc2bfa6daa9989c6e6e6e57762c0a10f;hpb=be12aa96094ab003949c78e8246db56027931cac;p=koha.git diff --git a/members/memberentry.pl b/members/memberentry.pl index 9a3dd18bfc..4b410a7036 100755 --- a/members/memberentry.pl +++ b/members/memberentry.pl @@ -41,6 +41,8 @@ use C4::Log; use C4::Letters; use C4::Branch; # GetBranches use C4::Form::MessagingPreferences; +use Koha::Borrower::Debarments; +use Koha::DateUtils; use vars qw($debug); @@ -62,6 +64,7 @@ my ($template, $loggedinuser, $cookie) flagsrequired => {borrowers => 1}, debug => ($debug) ? 1 : 0, }); + my $guarantorid = $input->param('guarantorid'); my $borrowernumber = $input->param('borrowernumber'); my $actionType = $input->param('actionType') || ''; @@ -90,6 +93,29 @@ my $borrower_data; my $NoUpdateLogin; my $userenv = C4::Context->userenv; + +## Deal with debarments +$template->param( + debarments => GetDebarments( { borrowernumber => $borrowernumber } ) ); +my @debarments_to_remove = $input->param('remove_debarment'); +foreach my $d ( @debarments_to_remove ) { + DelDebarment( $d ); +} +if ( $input->param('add_debarment') ) { + + my $expiration = $input->param('debarred_expiration'); + $expiration = $expiration ? output_pref( dt_from_string($expiration), 'iso' ) : undef; + + AddUniqueDebarment( + { + borrowernumber => $borrowernumber, + type => 'MANUAL', + comment => $input->param('debarred_comment'), + expiration => $expiration, + } + ); +} + $template->param("uppercasesurnames" => C4::Context->preference('uppercasesurnames')); my $minpw = C4::Context->preference('minPasswordLength'); @@ -142,16 +168,6 @@ if ( $op eq 'insert' || $op eq 'modify' || $op eq 'save' || $op eq 'duplicate' ) } } - ## 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'); # @@ -254,7 +270,18 @@ $newdata{'country'} = $input->param('country') if defined($input->param('country #builds default userid if ( (defined $newdata{'userid'}) && ($newdata{'userid'} eq '')){ - $newdata{'userid'} = Generate_Userid($borrowernumber, $newdata{'firstname'}, $newdata{'surname'}); + if ( ( defined $newdata{'firstname'} ) && ( defined $newdata{'surname'} ) ) { + # Full page edit, firstname and surname input zones are present + $newdata{'userid'} = Generate_Userid( $borrowernumber, $newdata{'firstname'}, $newdata{'surname'} ); + } + elsif ( ( defined $data{'firstname'} ) && ( defined $data{'surname'} ) ) { + # Partial page edit (access through "Details"/"Library details" tab), firstname and surname input zones are not used + # Still, if the userid field is erased, we can create a new userid with available firstname and surname + $newdata{'userid'} = Generate_Userid( $borrowernumber, $data{'firstname'}, $data{'surname'} ); + } + else { + $newdata{'userid'} = $data{'userid'}; + } } $debug and warn join "\t", map {"$_: $newdata{$_}"} qw(dateofbirth dateenrolled dateexpiry); @@ -281,7 +308,7 @@ if ($op eq 'save' || $op eq 'insert'){ $newdata{'surname'} = uc($newdata{'surname'}); } - if (C4::Context->preference("IndependantBranches")) { + if (C4::Context->preference("IndependentBranches")) { if ($userenv && $userenv->{flags} % 2 != 1){ $debug and print STDERR " $newdata{'branchcode'} : ".$userenv->{flags}.":".$userenv->{branch}; unless (!$newdata{'branchcode'} || $userenv->{branch} eq $newdata{'branchcode'}){ @@ -304,7 +331,7 @@ if ($op eq 'save' || $op eq 'insert'){ foreach my $attr (@$extended_patron_attributes) { unless (C4::Members::Attributes::CheckUniqueness($attr->{code}, $attr->{value}, $borrowernumber)) { push @errors, "ERROR_extended_unique_id_failed"; - $template->param(ERROR_extended_unique_id_failed => "$attr->{code}/$attr->{value}"); + $template->param(ERROR_extended_unique_id_failed_value => "$attr->{code}/$attr->{value}"); } } } @@ -411,7 +438,7 @@ if ($nok or !$nodouble){ $template->param( step_1 => 1,step_2 => 1,step_3 => 1, step_4 => 1, step_5 => 1, step_6 => 1); } } -if (C4::Context->preference("IndependantBranches")) { +if (C4::Context->preference("IndependentBranches")) { my $userenv = C4::Context->userenv; if ($userenv->{flags} % 2 != 1 && $data{'branchcode'}){ unless ($userenv->{branch} eq $data{'branchcode'}){ @@ -524,8 +551,8 @@ my $roadpopup = CGI::popup_menu(-name=>'streettype', -default=>$default_roadtype ); -my $default_borrowertitle; -$default_borrowertitle=$data{'title'} ; +my $default_borrowertitle = ''; +unless ( $op eq 'duplicate' ) { $default_borrowertitle=$data{'title'} } my($borrowertitle)=GetTitles(); $template->param( title_cgipopup => 1) if ($borrowertitle); my $borrotitlepopup = CGI::popup_menu(-name=>'title', @@ -568,43 +595,22 @@ foreach (keys(%flags)) { push @flagdata,\%row; } -#get Branches -my @branches; -my @select_branch; -my %select_branches; - -my $onlymine=(C4::Context->preference('IndependantBranches') && - C4::Context->userenv && - C4::Context->userenv->{flags} % 2 !=1 && - C4::Context->userenv->{branch}?1:0); - -my $branches=GetBranches($onlymine); -my $default; -my $CGIbranch; -for my $branch (sort { $branches->{$a}->{branchname} cmp $branches->{$b}->{branchname} } keys %$branches) { - push @select_branch,$branch; - $select_branches{$branch} = $branches->{$branch}->{'branchname'}; - $default = C4::Context->userenv->{'branch'} if (C4::Context->userenv && C4::Context->userenv->{'branch'}); -} -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) -if (defined ($data{'branchcode'}) and ( $op eq 'modify' || ( $op eq 'add' && $category_type eq 'C' ) )) { - $default = $data{'branchcode'}; +# get Branch Loop +# in modify mod: userbranch value for GetBranchesLoop() comes from borrowers table +# in add mod: userbranch value come from branches table (ip correspondence) + +my $userbranch = ''; +if (C4::Context->userenv && C4::Context->userenv->{'branch'}) { + $userbranch = C4::Context->userenv->{'branch'}; } -$CGIbranch = CGI::scrolling_list(-id => 'branchcode', - -name => 'branchcode', - -values => \@select_branch, - -labels => \%select_branches, - -size => 1, - -override => 1, - -multiple =>0, - -default => $default, - ); + +if (defined ($data{'branchcode'}) and ( $op eq 'modify' || ( $op eq 'add' && $category_type eq 'C' ) )) { + $userbranch = $data{'branchcode'}; } -if(!$CGIbranch){ +my $branchloop = GetBranchesLoop( $userbranch ); + +if( !$branchloop ){ $no_add = 1; $template->param(no_branches => 1); } @@ -667,13 +673,11 @@ if ( $op eq 'duplicate' ) { $data{'dateexpiry'} = GetExpiryDate( $data{'categorycode'}, $data{'dateenrolled'} ); } if (C4::Context->preference('uppercasesurnames')) { - $data{'surname'} =uc($data{'surname'} ); - $data{'contactname'}=uc($data{'contactname'}); + $data{'surname'} &&= uc( $data{'surname'} ); + $data{'contactname'} &&= uc( $data{'contactname'} ); } -$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)) { +foreach (qw(dateenrolled dateexpiry dateofbirth)) { $data{$_} = format_date($data{$_}); # back to syspref for display $template->param( $_ => $data{$_}); } @@ -699,19 +703,17 @@ $debug and warn "memberentry step: $step"; $template->param(%data); $template->param( "step_$step" => 1) if $step; # associate with step to know where u are $template->param( step => $step ) if $step; # associate with step to know where u are -$template->param( debug => $debug ) if $debug; $template->param( BorrowerMandatoryField => C4::Context->preference("BorrowerMandatoryField"),#field to test with javascript category_type => $category_type,#to know the category type of the borrower - DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), select_city => $select_city, "$category_type" => 1,# associate with step to know where u are destination => $destination,#to know wher u come from and wher u must go in redirect check_member => $check_member,#to know if the borrower already exist(=>1) or not (=>0) "op$op" => 1); -$template->param(CGIbranch=>$CGIbranch) if ($CGIbranch); +$template->param( branchloop => $branchloop ) if ( $branchloop ); $template->param( nodouble => $nodouble, borrowernumber => $borrowernumber, #register number @@ -723,8 +725,6 @@ $template->param( borrotitlepopup => $borrotitlepopup, guarantorinfo => $guarantorinfo, flagloop => \@flagdata, - dateformat => C4::Dates->new()->visual(), - C4::Context->preference('dateformat') => 1, check_categorytype =>$check_categorytype,#to recover the category type with checkcategorytype function category_type =>$category_type, modify => $modify,