X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=admin%2Fcategorie.pl;h=6ea7b5aefe524c6e69d1432cb07e08426a325a07;hb=d1b6e0646fd6a70f6724189554e80aaa68aec64b;hp=63d629c3663ee98b0552de67cd8e768b68341171;hpb=98a207ef955effae8d6b26a1c74bddd9a3c9a801;p=koha_fer diff --git a/admin/categorie.pl b/admin/categorie.pl index 63d629c366..6ea7b5aefe 100755 --- a/admin/categorie.pl +++ b/admin/categorie.pl @@ -36,11 +36,12 @@ # with Koha; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -use strict; -#use warnings; FIXME - Bug 2505 +use Modern::Perl; + use CGI; use C4::Context; use C4::Auth; +use C4::Branch; use C4::Output; use C4::Dates; use C4::Form::MessagingPreferences; @@ -48,8 +49,10 @@ use C4::Form::MessagingPreferences; sub StringSearch { my ($searchstring,$type)=@_; my $dbh = C4::Context->dbh; + $searchstring //= ''; $searchstring=~ s/\'/\\\'/g; my @data=split(' ',$searchstring); + push @data,q{} if $#data==-1; my $count=@data; my $sth=$dbh->prepare("Select * from categories where (description like ?) order by category_type,description,categorycode"); $sth->execute("$data[0]%"); @@ -66,7 +69,7 @@ my $input = new CGI; my $searchfield=$input->param('description'); my $script_name="/cgi-bin/koha/admin/categorie.pl"; my $categorycode=$input->param('categorycode'); -my $op = $input->param('op'); +my $op = $input->param('op') // ''; my ($template, $loggedinuser, $cookie) = get_template_and_user({template_name => "admin/categorie.tmpl", @@ -90,31 +93,52 @@ if ($op eq 'add_form') { #---- if primkey exists, it's a modify action, so read values to modify... my $data; + my @selected_branches; if ($categorycode) { my $dbh = C4::Context->dbh; my $sth=$dbh->prepare("select categorycode,description,enrolmentperiod,enrolmentperioddate,upperagelimit,dateofbirthrequired,enrolmentfee,issuelimit,reservefee,hidelostitems,overduenoticerequired,category_type from categories where categorycode=?"); $sth->execute($categorycode); $data=$sth->fetchrow_hashref; - $sth->finish; - } - $data->{'enrolmentperioddate'} = undef if ($data->{'enrolmentperioddate'} eq '0000-00-00'); + $sth = $dbh->prepare("SELECT b.branchcode, b.branchname FROM categories_branches AS cb, branches AS b WHERE cb.branchcode = b.branchcode AND cb.categorycode = ?"); + $sth->execute( $categorycode ); + while ( my $branch = $sth->fetchrow_hashref ) { + push @selected_branches, $branch; + } + $sth->finish; + } + + if ($data->{'enrolmentperioddate'} && $data->{'enrolmentperioddate'} eq '0000-00-00') { + $data->{'enrolmentperioddate'} = undef; + } + $data->{'category_type'} //= ''; + + my $branches = GetBranches; + my @branches_loop; + foreach my $branch (sort keys %$branches) { + my $selected = ( grep {$$_{branchcode} eq $branch} @selected_branches ) ? 1 : 0; + push @branches_loop, { + branchcode => $$branches{$branch}{branchcode}, + branchname => $$branches{$branch}{branchname}, + selected => $selected, + }; + } $template->param(description => $data->{'description'}, enrolmentperiod => $data->{'enrolmentperiod'}, - enrolmentperioddate => C4::Dates::format_date($data->{'enrolmentperioddate'}), + enrolmentperioddate => $data->{'enrolmentperioddate'}, upperagelimit => $data->{'upperagelimit'}, dateofbirthrequired => $data->{'dateofbirthrequired'}, - enrolmentfee => sprintf("%.2f",$data->{'enrolmentfee'}), + enrolmentfee => sprintf("%.2f",$data->{'enrolmentfee'} || 0), overduenoticerequired => $data->{'overduenoticerequired'}, issuelimit => $data->{'issuelimit'}, - reservefee => sprintf("%.2f",$data->{'reservefee'}), + reservefee => sprintf("%.2f",$data->{'reservefee'} || 0), hidelostitems => $data->{'hidelostitems'}, category_type => $data->{'category_type'}, - DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), SMSSendDriver => C4::Context->preference("SMSSendDriver"), TalkingTechItivaPhone => C4::Context->preference("TalkingTechItivaPhoneNotification"), "type_".$data->{'category_type'} => 1, + branches_loop => \@branches_loop, ); if (C4::Context->preference('EnhancedMessagingPreferences')) { C4::Form::MessagingPreferences::set_form_values({ categorycode => $categorycode } , $template); @@ -133,6 +157,22 @@ if ($op eq 'add_form') { if ($is_a_modif) { my $sth=$dbh->prepare("UPDATE categories SET description=?,enrolmentperiod=?, enrolmentperioddate=?,upperagelimit=?,dateofbirthrequired=?,enrolmentfee=?,reservefee=?,hidelostitems=?,overduenoticerequired=?,category_type=? WHERE categorycode=?"); $sth->execute(map { $input->param($_) } ('description','enrolmentperiod','enrolmentperioddate','upperagelimit','dateofbirthrequired','enrolmentfee','reservefee','hidelostitems','overduenoticerequired','category_type','categorycode')); + my @branches = $input->param("branches"); + if ( @branches ) { + $sth = $dbh->prepare("DELETE FROM categories_branches WHERE categorycode = ?"); + $sth->execute( $input->param( "categorycode" ) ); + $sth = $dbh->prepare( + "INSERT INTO categories_branches + ( categorycode, branchcode ) + VALUES ( ?, ? )" + ); + for my $branchcode ( @branches ) { + next if not $branchcode; + $sth->bind_param( 1, $input->param( "categorycode" ) ); + $sth->bind_param( 2, $branchcode ); + $sth->execute; + } + } $sth->finish; } else { my $sth=$dbh->prepare("INSERT INTO categories (categorycode,description,enrolmentperiod,enrolmentperioddate,upperagelimit,dateofbirthrequired,enrolmentfee,reservefee,hidelostitems,overduenoticerequired,category_type) values (?,?,?,?,?,?,?,?,?,?,?)"); @@ -167,15 +207,18 @@ if ($op eq 'add_form') { $template->param(totalgtzero => 1); } + if ($data->{'enrolmentperioddate'} && $data->{'enrolmentperioddate'} eq '0000-00-00') { + $data->{'enrolmentperioddate'} = undef; + } $template->param( description => $data->{'description'}, enrolmentperiod => $data->{'enrolmentperiod'}, - enrolmentperioddate => C4::Dates::format_date($data->{'enrolmentperioddate'}), + enrolmentperioddate => $data->{'enrolmentperioddate'}, upperagelimit => $data->{'upperagelimit'}, dateofbirthrequired => $data->{'dateofbirthrequired'}, - enrolmentfee => sprintf("%.2f",$data->{'enrolmentfee'}), + enrolmentfee => sprintf("%.2f",$data->{'enrolmentfee'} || 0), overduenoticerequired => $data->{'overduenoticerequired'}, issuelimit => $data->{'issuelimit'}, - reservefee => sprintf("%.2f",$data->{'reservefee'}), + reservefee => sprintf("%.2f",$data->{'reservefee'} || 0), hidelostitems => $data->{'hidelostitems'}, category_type => $data->{'category_type'}, ); @@ -197,21 +240,35 @@ if ($op eq 'add_form') { $template->param(else => 1); my @loop; my ($count,$results)=StringSearch($searchfield,'web'); + my $dbh = C4::Context->dbh; + my $sth = $dbh->prepare("SELECT b.branchcode, b.branchname FROM categories_branches AS cb, branches AS b WHERE cb.branchcode = b.branchcode AND cb.categorycode = ?"); for (my $i=0; $i < $count; $i++){ + $sth->execute( $results->[$i]{'categorycode'} ); + my @selected_branches; + while ( my $branch = $sth->fetchrow_hashref ) { + push @selected_branches, $branch; + } + my $enrolmentperioddate = $results->[$i]{'enrolmentperioddate'}; + if ($enrolmentperioddate && $enrolmentperioddate eq '0000-00-00') { + $enrolmentperioddate = undef; + } + $results->[$i]{'category_type'} //= ''; my %row = ( categorycode => $results->[$i]{'categorycode'}, description => $results->[$i]{'description'}, enrolmentperiod => $results->[$i]{'enrolmentperiod'}, - enrolmentperioddate => C4::Dates::format_date($results->[$i]{'enrolmentperioddate'}), + enrolmentperioddate => $enrolmentperioddate, upperagelimit => $results->[$i]{'upperagelimit'}, dateofbirthrequired => $results->[$i]{'dateofbirthrequired'}, - enrolmentfee => sprintf("%.2f",$results->[$i]{'enrolmentfee'}), + enrolmentfee => sprintf("%.2f",$results->[$i]{'enrolmentfee'} || 0), overduenoticerequired => $results->[$i]{'overduenoticerequired'}, issuelimit => $results->[$i]{'issuelimit'}, - reservefee => sprintf("%.2f",$results->[$i]{'reservefee'}), + reservefee => sprintf("%.2f",$results->[$i]{'reservefee'} || 0), hidelostitems => $results->[$i]{'hidelostitems'}, category_type => $results->[$i]{'category_type'}, - "type_".$results->[$i]{'category_type'} => 1); + "type_".$results->[$i]{'category_type'} => 1, + branches => \@selected_branches, + ); if (C4::Context->preference('EnhancedMessagingPreferences')) { my $brief_prefs = _get_brief_messaging_prefs($results->[$i]{'categorycode'}); $row{messaging_prefs} = $brief_prefs if @$brief_prefs; @@ -220,8 +277,7 @@ if ($op eq 'add_form') { } $template->param(loop => \@loop); # check that I (institution) and C (child) exists. otherwise => warning to the user - my $dbh = C4::Context->dbh; - my $sth=$dbh->prepare("select category_type from categories where category_type='C'"); + $sth=$dbh->prepare("select category_type from categories where category_type='C'"); $sth->execute; my ($categoryChild) = $sth->fetchrow; $template->param(categoryChild => $categoryChild);