From 4794cec2447d64ed82713e660e8901ab89b40c1d Mon Sep 17 00:00:00 2001 From: Paul POULAIN Date: Fri, 12 Oct 2007 17:35:27 -0500 Subject: [PATCH] #1485 (issuing rules improvement) continued updating fines rules management : - replacing '*' by default - removing bottom line (*) that means nothing - dealing correctly with .0000 fine values - fixing fine storage still fines.pl to do Signed-off-by: Chris Cormack Signed-off-by: Joshua Ferraro --- admin/finesrules.pl | 108 +++++++-------- .../prog/en/modules/admin/finesrules.tmpl | 123 +++++++++--------- 2 files changed, 109 insertions(+), 122 deletions(-) diff --git a/admin/finesrules.pl b/admin/finesrules.pl index b5fdeb7082..3fea7f3848 100755 --- a/admin/finesrules.pl +++ b/admin/finesrules.pl @@ -31,27 +31,27 @@ my $dbh = C4::Context->dbh; my $type=$input->param('type'); my $branch = $input->param('branch'); -$branch="" unless $branch; +$branch="*" unless $branch; my $op = $input->param('op'); # my $flagsrequired; # $flagsrequired->{circulation}=1; my ($template, $loggedinuser, $cookie) = get_template_and_user({template_name => "admin/finesrules.tmpl", - query => $input, - type => "intranet", - authnotrequired => 0, - flagsrequired => {parameters => 1}, - debug => 1, + query => $input, + type => "intranet", + authnotrequired => 0, + flagsrequired => {parameters => 1}, + debug => 1, }); # save the values entered if ($op eq 'save') { my @names=$input->param(); - my $sth_search = $dbh->prepare("select count(*) as total from issuingrules where branchcode=? and categorycode=? and itemtype=?"); + my $sth_search = $dbh->prepare("SELECT count(*) AS total FROM issuingrules WHERE branchcode=? AND categorycode=? AND itemtype=?"); - my $sth_Finsert = $dbh->prepare("insert into issuingrules (branchcode,categorycode,itemtype,fine,firstremind,chargeperiod) values (?,?,?,?,?,?)"); - my $sth_Fupdate=$dbh->prepare("Update issuingrules set fine=?,firstremind=?,chargeperiod=? where branchcode=? and categorycode=? and itemtype=?"); - my $sth_Fdelete=$dbh->prepare("delete from issuingrules where branchcode=? and categorycode=? and itemtype=? and issuelength=0"); + my $sth_Finsert = $dbh->prepare("INSERT INTO issuingrules (branchcode,categorycode,itemtype,fine,firstremind,chargeperiod) VALUES (?,?,?,?,?,?)"); + my $sth_Fupdate=$dbh->prepare("UPDATE issuingrules SET fine=?,firstremind=?,chargeperiod=? WHERE branchcode=? AND categorycode=? AND itemtype=?"); + my $sth_Fdelete=$dbh->prepare("DELETE FROM issuingrules WHERE branchcode=? AND categorycode=? AND itemtype=? AND issuelength=0"); foreach my $key (@names){ # FINES @@ -61,17 +61,14 @@ if ($op eq 'save') { my $cat = $3; # item type my $data=$input->param($key); my ($fine,$firstremind,$chargeperiod)=split(',',$data); -# warn "$br $bor $cat $fine $firstremind $chargeperiod"; -# if ($fine >0) { -# $br="*" unless ($br); $bor="*" unless ($bor); $cat="*" unless ($cat); $sth_search->execute($br,$bor,$cat); my $res = $sth_search->fetchrow_hashref(); - if ($res->{total}) { - $sth_Fupdate->execute($fine,$firstremind,$chargeperiod,$br,$bor,$cat); + if ($res->{total} >0) { + $sth_Fupdate->execute($fine,$firstremind,$chargeperiod,$br,$bor,$cat); } else { - $sth_Finsert->execute($br,$bor,$cat,$fine,$firstremind,$chargeperiod); + $sth_Finsert->execute($br,$bor,$cat,$fine,$firstremind,$chargeperiod); } } } @@ -80,12 +77,12 @@ if ($op eq 'save') { my $branches = GetBranches; my @branchloop; foreach my $thisbranch (keys %$branches) { - my $selected = 1 if $thisbranch eq $branch; - my %row =(value => $thisbranch, - selected => $selected, - branchname => $branches->{$thisbranch}->{'branchname'}, - ); - push @branchloop, \%row; + my $selected = 1 if $thisbranch eq $branch; + my %row =(value => $thisbranch, + selected => $selected, + branchname => $branches->{$thisbranch}->{'branchname'}, + ); + push @branchloop, \%row; } my $sth=$dbh->prepare("Select description,categorycode from categories order by description"); @@ -94,10 +91,9 @@ my @trow3; my @title_loop; # my $i=0; while (my $data=$sth->fetchrow_hashref){ - my %row = (in_title => $data->{'description'}); - push @title_loop,\%row; - push @trow3,$data->{'categorycode'}; -# $i++; + my %row = (in_title => $data->{'description'}); + push @title_loop,\%row; + push @trow3,$data->{'categorycode'}; } my %row = (in_title => "*"); @@ -114,36 +110,35 @@ my @itemtypes; while (my $row=$sth->fetchrow_hashref){ push @itemtypes,\$row; } -my $line; -$line->{itemtype} = "*"; -$line->{description} = "*"; -push @itemtypes,\$line; foreach my $data (@itemtypes) { - my @trow2; - my @cell_loop; - if ( $toggle eq 1 ) { - $toggle = 0; - } else { - $toggle = 1; - } - for (my $i=0;$i<=$#trow3;$i++){ - my $sth2=$dbh->prepare("select * from issuingrules where branchcode=? and categorycode=? and itemtype=?"); - $sth2->execute($branch,$trow3[$i],$$data->{'itemtype'}); - my $dat=$sth2->fetchrow_hashref; - $sth2->finish; - my $fine=$dat->{'fine'}+0; - my $finesvalue; - $finesvalue= "$fine,$dat->{'firstremind'},$dat->{'chargeperiod'}" if $fine+$dat->{'firstremind'}+$dat->{'chargeperiod'}>0; - my %row = (finesname=> "F-$branch-$trow3[$i].$$data->{'itemtype'}", - finesvalue => $finesvalue, - toggle => $toggle, - ); - push @cell_loop,\%row; - } - my %row = (categorycode => $$data->{description}, - cell =>\@cell_loop); - push @row_loop, \%row; + my @trow2; + my @cell_loop; + if ( $toggle eq 1 ) { + $toggle = 0; + } else { + $toggle = 1; + } + for (my $i=0;$i<=$#trow3;$i++){ + my $sth2=$dbh->prepare("SELECT * FROM issuingrules WHERE branchcode=? AND categorycode=? AND itemtype=?"); + $sth2->execute($branch,$trow3[$i],$$data->{'itemtype'}); + my $dat=$sth2->fetchrow_hashref; + $sth2->finish; + my $fine=$dat->{'fine'}; + # remove trailing 0s + $fine =~ s/\.*0*$//g; + my $finesvalue; + $finesvalue= "$fine,$dat->{'firstremind'},$dat->{'chargeperiod'}" if $fine ne ''; + my %row = (finesname=> "F-$branch-$trow3[$i].$$data->{'itemtype'}", + finesvalue => $finesvalue, + toggle => $toggle, + ); + push @cell_loop,\%row; + } + my %row = (categorycode => $$data->{description}, + cell =>\@cell_loop, + ); + push @row_loop, \%row; } $sth->finish; @@ -151,8 +146,5 @@ $template->param(title => \@title_loop, row => \@row_loop, branchloop => \@branchloop, branch => $branch, - intranetcolorstylesheet => C4::Context->preference("intranetcolorstylesheet"), - intranetstylesheet => C4::Context->preference("intranetstylesheet"), - IntranetNav => C4::Context->preference("IntranetNav"), - ); + ); output_html_with_http_headers $input, $cookie, $template->output; diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/finesrules.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/finesrules.tmpl index eee2b37f05..818c7521eb 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/finesrules.tmpl +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/finesrules.tmpl @@ -9,71 +9,66 @@
- -
-
-
-

Defining fining rules for default fining rules

- -
-

HINT for fines

-

Each box needs to be filled in with fine,time to start charging,charging cycle

-

eg 1,7,7 = 1 [USD,EUR,etc] fine after 7 days, every 7 days

-

Fines are calculated by the fines2.pl script, located in misc directory. Ask your administrator to put this script in crontab, after midnight, to have fines calculated every night

-
-
-

Default values

-

If a cell is not filled, the 1st of the following value is searched :

-
    -
  • same library and same patron category, itemtype *
  • -
  • same patron and same itemtype, patron category *
  • -
  • same itemtype and patron category, library *
  • -
  • library * and itemtype *, same patron category
  • -
  • library * and patron category *, same itemtype
  • -
  • library * and patron category *, itemtype *
  • -
-
-
- - - -
-
- - " /> - - - - - - - - - - - - - - - -
Defining fines rules for
 
- - - - " value="" size="6" maxlength="10" /> -
- - -
+
+
+
+ +

Defining fining rules for default fining rules

+ +
+

HINT for fines

+

Each box needs to be filled in with fine,time to start charging,charging cycle

+

eg 1,7,7 = 1 [USD,EUR,etc] fine after 7 days, every 7 days

+

Fines are calculated by the fines2.pl script, located in misc directory. Ask your administrator to put this script in crontab, after midnight, to have fines calculated every night

+

The rules are applied from most specific to less specific, the 1st who is filled :

+
    +
  • same branch, same category
  • +
  • same branch, default category
  • +
  • default branch, same category
  • +
  • default branch, default category
  • +
+
+
+ + + +
+
+ + " /> + + + + + + + + + + + + + + + +
Defining fines rules for
 Default
Total + + + + " value="" size="6" maxlength="10" /> +
+ +
-- 2.20.1