From 375f62bdb1eab2529f4ef47cc2b3091b3bfcd812 Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Fri, 20 Jun 2008 08:11:22 -0500 Subject: [PATCH] bug 2000 - remove admin/issuingrules.pl Patch to remove issuingrules.pl in favor of using smart-rules.pl to manage loan and fine rules. Several reasons for this: * issuingrules.pl's matrix could grow rather large if the library has a large number of item types and patron categories * successfully entering rules via issuingrules.pl requires placing commas within input fields * a sparse circulation policy matrix takes the same amount of screen space as one that uses rules for a lot of specific patron category/item type combinations. * having two administrative interfaces to the same policy settings could be confusing. * UI design of smart-rules.pl better lends itself to adding more policy setting attributes to the rules matrix. Signed-off-by: Joshua Ferraro --- admin/issuingrules.pl | 154 ------------------ .../prog/en/includes/admin-menu.inc | 3 +- .../prog/en/modules/admin/admin-home.tmpl | 6 +- .../prog/en/modules/admin/issuingrules.tmpl | 90 ---------- .../en/modules/help/admin/issuingrules.tmpl | 20 --- 5 files changed, 3 insertions(+), 270 deletions(-) delete mode 100755 admin/issuingrules.pl delete mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/admin/issuingrules.tmpl delete mode 100644 koha-tmpl/intranet-tmpl/prog/en/modules/help/admin/issuingrules.tmpl diff --git a/admin/issuingrules.pl b/admin/issuingrules.pl deleted file mode 100755 index 26cec089c3..0000000000 --- a/admin/issuingrules.pl +++ /dev/null @@ -1,154 +0,0 @@ -#!/usr/bin/perl - -# Copyright 2000-2002 Katipo Communications -# -# This file is part of Koha. -# -# Koha is free software; you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or (at your option) any later -# version. -# -# Koha is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -# A PARTICULAR PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along with -# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA - -use strict; -use CGI; -use C4::Context; -use C4::Output; -use C4::Auth; -use C4::Koha; -use C4::Branch; # GetBranches - -my $input = new CGI; -my $dbh = C4::Context->dbh; - -my $type=$input->param('type'); -my $branch = $input->param('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/issuingrules.tmpl", - 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 branchcode FROM issuingrules WHERE branchcode=? and categorycode=? and itemtype=?"); - - my $sth_Iinsert = $dbh->prepare("INSERT INTO issuingrules (branchcode,categorycode,itemtype,maxissueqty,issuelength,rentaldiscount) VALUES (?,?,?,?,?,?)"); - my $sth_Iupdate=$dbh->prepare("UPDATE issuingrules SET maxissueqty=?, issuelength=?, rentaldiscount=? WHERE branchcode=? AND categorycode=? AND itemtype=?"); - my $sth_Idelete=$dbh->prepare("DELETE FROM issuingrules WHERE branchcode=? AND categorycode=? AND itemtype=?"); - foreach my $key (@names){ - # ISSUES - if ($key =~ /I-(.*)-(.*)-(.*)/) { - my $br = base64_to_str($1); # branch - my $bor = base64_to_str($2); # borrower category - my $cat = base64_to_str($3); # item type - my $data=$input->param($key); - my ($issuelength,$maxissueqty,$rentaldiscount)=split(',',$data); - if ($maxissueqty) { - $sth_search->execute($br,$bor,$cat); - my $res = $sth_search->fetchrow_hashref(); - warn "$br / $bor / $cat = ".$res->{'total'}; - if ( $res->{'branchcode'} ne $br ) { - $sth_Iinsert->execute($br,$bor,$cat,$maxissueqty,$issuelength,$rentaldiscount); - } else { - $sth_Iupdate->execute($maxissueqty,$issuelength,$rentaldiscount,$br,$bor,$cat); - } - } else { - $sth_Idelete->execute($br,$bor,$cat); - } - } - } -} -my $branches = GetBranches; -my @branchloop; -for my $thisbranch (sort { $branches->{$a}->{branchname} cmp $branches->{$b}->{branchname} } keys %$branches) { - 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"); -$sth->execute; -my @trow3; -my @title_loop; -while (my $data=$sth->fetchrow_hashref){ - my %row = (in_title => $data->{'description'}); - push @title_loop,\%row; - push @trow3,$data->{'categorycode'}; -} - -my %row = (in_title => "*"); -push @title_loop, \%row; -push @trow3,'*'; - -$sth->finish; -$sth=$dbh->prepare("Select description,itemtype from itemtypes order by description"); -$sth->execute; -my $toggle= 1; -my @row_loop; -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'}; - my $maxissueqty = $dat->{'maxissueqty'}; - my $issuelength = $dat->{'issuelength'}; - my $issuingvalue; - $issuingvalue = "$issuelength,$maxissueqty" if $maxissueqty ne ''; - my $issuingname = join("-", "I", map { str_to_base64($_) } ($branch, $trow3[$i], $$data->{itemtype}) ); - my %row = (issuingname => $issuingname, - issuingvalue => $issuingvalue, - toggle => $toggle, - ); - push @cell_loop,\%row; - } - my %row = (categorycode => $$data->{description}, - total => ($$data->{itemtype} eq '*'?1:0), - cell =>\@cell_loop - ); - push @row_loop, \%row; -} - -$sth->finish; -$template->param(title => \@title_loop, - row => \@row_loop, - branchloop => \@branchloop, - branch => $branch, - ); -output_html_with_http_headers $input, $cookie, $template->output; diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/admin-menu.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/admin-menu.inc index e4bc8d75f0..df86901431 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/admin-menu.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/admin-menu.inc @@ -17,8 +17,7 @@
  • Cities and towns
  • Road types
  • Patron attribute types
  • -
  • Circulation rules
  • -
  • Alternate circulation rules
  • +
  • Circulation and fines rules
  • Catalogue
    diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/admin-home.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/admin-home.tmpl index 97cfb061c0..32407eb731 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/admin-home.tmpl +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/admin-home.tmpl @@ -46,10 +46,8 @@
    Define road types (street, avenue, way, etc.). Road types display as authorized values when adding/editing patrons and can be used in geographic statistics.
    Patron attribute types
    Define extended attributes (identifiers and statistical categories) for patron records
    -
    Circulation rules
    -
    Define circulation rules in a matrix for libraries / patrons / itemtypes / circ codes (number of checkouts, duration, fee, etc.).
    -
    Circulation and fines rules (alternate layout)
    -
    Define circulation rules and fines as a list
    +
    Circulation and fines rules
    +
    Define circulation and fines rules for combinations of libraries, patron categories, and item types
    diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/issuingrules.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/issuingrules.tmpl deleted file mode 100644 index c6f131f874..0000000000 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/issuingrules.tmpl +++ /dev/null @@ -1,90 +0,0 @@ - -Koha › Administration › Circulation Rules - - - - - - - - - - - -
    - -
    -
    -
    - -

    Defining circulation rules for default circulation rules

    -
    -

    HINT

    -

    Each box needs to be filled in with checkout-length,maxissues. For example: 21,5 enables 5 checkouts for 21 days

    -
    - -
    -

    Default values

    -
      -
    • If a cell is not filled, the value in the default column (top right) is used
    • -
    • If a total is filled (last line), the patron must fit both itemtype and total rule
    • -
    • If a rule is filled for a given branch, it is used, otherwise, it's the rule of the "default" branch
    • -
    -
    -
    - - - -
    -
    - - " /> - - - - - - - - - - - - - - - -
    Defining circulation rules for
     Default
    Total - - - - " value="" size="6" maxlength="10" /> -
    -
    Cancel
    -
    - -
    -
    -
    - -
    -
    - diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/help/admin/issuingrules.tmpl b/koha-tmpl/intranet-tmpl/prog/en/modules/help/admin/issuingrules.tmpl deleted file mode 100644 index 60b5242bef..0000000000 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/help/admin/issuingrules.tmpl +++ /dev/null @@ -1,20 +0,0 @@ - - -

    Issuing rules

    -

    Issuing rules deals with 2 topics :

    -
      -
    • Issuing length and quantity : they say how many items and how long a patron category can check out for an itemtype
    • -
    • Overdue charges : they are based on the item type and patron type. These charges are defined on this page.
    • -
    -

    Itemtypes and patron categories must be defined before issuing rules are defined. Your defined items types and patron categories are then displayed in a grid on this page.

    - -

    Issuing length and quantity

    -

    Each box in the grid contains 2 numbers, separated by commas, defining how many days a given patron type can check out how many material. For example : 21,5 means the patron can check out up to 5 books for up to 21 days

    -

    The * have a specific meaning. They mean "any". If you set 21,5 for itemtype=*, patron category=student, branch=main, then a student can't check out more than 5 items of ANY item type. This "any" box is cumulative with other boxes. It means that 21,5 as itemtype=book, 14,2 as itemtype=CD and 30,6 as itemtype=* (with category=student) means a student can check out up to 5 books, up to 2 CD but a maximum of 6 items (books or CD). In this case the "30 days" in itemtype=* is discarded and the issuing length is calculated on the exact itemtype

    - -

    Overdue charges

    -

    Each box in the grid contains three numbers separated by commas, defining the fine, how many days overdue the item must be before the fine is assessed and a first notice prepared (the "grace period"), and how many days after that the fine is assessed again and a second notice sent. For example, if you charge adults 1 dollar (or euro, or whatever currency) for overdue videos after three days and add another dollar charge after another five days, put "1,3,5" in the box in the grid that aligns with "Adult" and "Video." If you charge adults 25 cents for overdue fiction books after a grace period of seven days and repeat the charge seven days later, then the entry in the corresponding box in the grid would be ".25,7,7". After the first and second notice are given, Koha prepares a "final notice" after the number of days set by the final number in the grid and sets the charge to the maximum, which is 5.

    - -

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

    - - \ No newline at end of file -- 2.39.2