[Koha-patches] [PATCH] [SIGNED-OFF] Bug 5811: Add sysprefs to control overriding fines

Chris Nighswonger cnighswonger at foundations.edu
Sat Mar 5 01:09:07 CET 2011


This patch does not apply cleanly to 3.2.x. Please fixup and resubmit with
[3.2.x] in the subject line.

Kind Regards,
Chris

# On branch 3.2.x
# Your branch is ahead of 'origin/3.2.x' by 3 commits.
#
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   C4/Circulation.pm
#       modified:   C4/Members.pm
#       modified:
koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref
#
# Unmerged paths:
#   (use "git reset HEAD <file>..." to unstage)
#   (use "git add/rm <file>..." as appropriate to mark resolution)
#
#       both modified:
installer/data/mysql/de-DE/mandatory/sysprefs.sql
#       both modified:      installer/data/mysql/en/mandatory/sysprefs.sql
#       both modified:
installer/data/mysql/fr-FR/1-Obligatoire/unimarc_standard_systemprefs.sql
#       both modified:
installer/data/mysql/it-IT/necessari/sysprefs.sql
#       both modified:
installer/data/mysql/pl-PL/mandatory/sysprefs.sql
#       both modified:
installer/data/mysql/ru-RU/mandatory/system_preferences_full_optimal_for_install_only.sql
#       both modified:
installer/data/mysql/uk-UA/mandatory/system_preferences_full_optimal_for_install_only.sql
#       both modified:      installer/data/mysql/updatedatabase.pl
#



On Sun, Feb 20, 2011 at 9:55 PM, Nicole C. Engard <
nengard at bywatersolutions.com> wrote:

> From: Jared Camins-Esakov <jcamins at bywatersolutions.com>
>
> This patch adds two sysprefs to allow libraries more fine-grained control
> over
> when fines can and can't be overridden. The two sysprefs are:
> * AllFinesNeedOverride - when this syspref is set to "Require" (default)
> any
>    fine will require a staffmember to override the fine in order to check
> out a
>    book.  When set to "Don't require," fines below noissuescharge will not
> need
>    any override.
> * AllowFineOverride - when this syspref is set to "Allow," staff will be
> able to
>    override fines that are above noissuescharge. When set to "Don't allow"
>    (default), staff will not be able to check out items to patrons with
> fines
>    greater than noissuescharge.
>
> Signed-off-by: Nicole C. Engard <nengard at bywatersolutions.com>
> ---
>  C4/Circulation.pm                                  |   17
> ++++++++++++-----
>  C4/Members.pm                                      |    2 +-
>  installer/data/mysql/de-DE/mandatory/sysprefs.sql  |    2 ++
>  installer/data/mysql/en/mandatory/sysprefs.sql     |    2 ++
>  .../1-Obligatoire/unimarc_standard_systemprefs.sql |    4 +++-
>  installer/data/mysql/it-IT/necessari/sysprefs.sql  |    4 +++-
>  installer/data/mysql/pl-PL/mandatory/sysprefs.sql  |    4 +++-
>  ...m_preferences_full_optimal_for_install_only.sql |    4 +++-
>  ...m_preferences_full_optimal_for_install_only.sql |    4 +++-
>  installer/data/mysql/updatedatabase.pl             |    8 ++++++++
>  .../en/modules/admin/preferences/circulation.pref  |   12 ++++++++++++
>  11 files changed, 52 insertions(+), 11 deletions(-)
>
> diff --git a/C4/Circulation.pm b/C4/Circulation.pm
> index f7846ac..2b4e86c 100644
> --- a/C4/Circulation.pm
> +++ b/C4/Circulation.pm
> @@ -730,17 +730,24 @@ sub CanBookBeIssued {
>     # DEBTS
>     my ($amount) =
>       C4::Members::GetMemberAccountRecords( $borrower->{'borrowernumber'},
> '' && $duedate->output('iso') );
> +    my $amountlimit = C4::Context->preference("noissuescharge");
> +    my $allowfineoverride = C4::Context->preference("AllowFineOverride");
> +    my $allfinesneedoverride =
> C4::Context->preference("AllFinesNeedOverride");
>     if ( C4::Context->preference("IssuingInProcess") ) {
> -        my $amountlimit = C4::Context->preference("noissuescharge");
> -        if ( $amount > $amountlimit && !$inprocess ) {
> +        if ( $amount > $amountlimit && !$inprocess && !$allowfineoverride)
> {
>             $issuingimpossible{DEBT} = sprintf( "%.2f", $amount );
> -        }
> -        elsif ( $amount > 0 && $amount <= $amountlimit && !$inprocess ) {
> +        } elsif ( $amount > $amountlimit && !$inprocess &&
> $allowfineoverride) {
> +            $needsconfirmation{DEBT} = sprintf( "%.2f", $amount );
> +        } elsif ( $allfinesneedoverride && $amount > 0 && $amount <=
> $amountlimit && !$inprocess ) {
>             $needsconfirmation{DEBT} = sprintf( "%.2f", $amount );
>         }
>     }
>     else {
> -        if ( $amount > 0 ) {
> +        if ( $amount > $amountlimit && $allowfineoverride ) {
> +            $needsconfirmation{DEBT} = sprintf( "%.2f", $amount );
> +        } elsif ( $amount > $amountlimit && !$allowfineoverride) {
> +            $issuingimpossible{DEBT} = sprintf( "%.2f", $amount );
> +        } elsif ( $amount > 0 && $allfinesneedoverride ) {
>             $needsconfirmation{DEBT} = sprintf( "%.2f", $amount );
>         }
>     }
> diff --git a/C4/Members.pm b/C4/Members.pm
> index fafc99b..a292054 100644
> --- a/C4/Members.pm
> +++ b/C4/Members.pm
> @@ -444,7 +444,7 @@ sub patronflags {
>         my $noissuescharge = C4::Context->preference("noissuescharge") ||
> 5;
>         $flaginfo{'message'} = sprintf "Patron owes \$%.02f", $amount;
>         $flaginfo{'amount'}  = sprintf "%.02f", $amount;
> -        if ( $amount > $noissuescharge ) {
> +        if ( $amount > $noissuescharge &&
> !C4::Context->preference("AllowFineOverride") ) {
>             $flaginfo{'noissues'} = 1;
>         }
>         $flags{'CHARGES'} = \%flaginfo;
> diff --git a/installer/data/mysql/de-DE/mandatory/sysprefs.sql
> b/installer/data/mysql/de-DE/mandatory/sysprefs.sql
> index 02511d8..221017a 100644
> --- a/installer/data/mysql/de-DE/mandatory/sysprefs.sql
> +++ b/installer/data/mysql/de-DE/mandatory/sysprefs.sql
> @@ -285,3 +285,5 @@ INSERT INTO systempreferences
> (variable,value,explanation,options,type) VALUES('
>  INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesLocation','1','Use the item location when finding
> items for the shelf browser.','1','YesNo');
>  INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesHomeBranch','1','Use the item home branch when
> finding items for the shelf browser.','1','YesNo');
>  INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesCcode','1','Use the item collection code when
> finding items for the shelf browser.','0','YesNo');
> +INSERT INTO `systempreferences` (variable,value,explanation,options,type)
> VALUES ('AllowFineOverride','0','If on, staff will be able to issue books to
> patrons with fines greater than noissuescharge.','0','YesNo');
> +INSERT INTO `systempreferences` (variable,value,explanation,options,type)
> VALUES ('AllFinesNeedOverride','1','If on, staff will be asked to override
> every fine, even if it is below noissuescharge.','0','YesNo');
> diff --git a/installer/data/mysql/en/mandatory/sysprefs.sql
> b/installer/data/mysql/en/mandatory/sysprefs.sql
> index 0b75e98..363774d 100644
> --- a/installer/data/mysql/en/mandatory/sysprefs.sql
> +++ b/installer/data/mysql/en/mandatory/sysprefs.sql
> @@ -285,3 +285,5 @@ INSERT INTO `systempreferences`
> (variable,value,explanation,options,type) VALUES
>  INSERT INTO `systempreferences` (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesLocation','1','Use the item location when finding
> items for the shelf browser.','1','YesNo');
>  INSERT INTO `systempreferences` (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesHomeBranch','1','Use the item home branch when
> finding items for the shelf browser.','1','YesNo');
>  INSERT INTO `systempreferences` (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesCcode','1','Use the item collection code when
> finding items for the shelf browser.','0','YesNo');
> +INSERT INTO `systempreferences` (variable,value,explanation,options,type)
> VALUES ('AllowFineOverride','0','If on, staff will be able to issue books to
> patrons with fines greater than noissuescharge.','0','YesNo');
> +INSERT INTO `systempreferences` (variable,value,explanation,options,type)
> VALUES ('AllFinesNeedOverride','1','If on, staff will be asked to override
> every fine, even if it is below noissuescharge.','0','YesNo');
> diff --git
> a/installer/data/mysql/fr-FR/1-Obligatoire/unimarc_standard_systemprefs.sql
> b/installer/data/mysql/fr-FR/1-Obligatoire/unimarc_standard_systemprefs.sql
> index 757f255..9386fee 100644
> ---
> a/installer/data/mysql/fr-FR/1-Obligatoire/unimarc_standard_systemprefs.sql
> +++
> b/installer/data/mysql/fr-FR/1-Obligatoire/unimarc_standard_systemprefs.sql
> @@ -286,4 +286,6 @@ INSERT INTO systempreferences
> (variable,value,explanation,options,type) VALUES('
>  INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES('OpacPublic',1,'Turn on/off public OPAC',NULL,'YesNo');
>  INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES('ShelfBrowserUsesLocation','1','Use the item location when finding
> items for the shelf browser.','1','YesNo');
>  INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesHomeBranch','1','Use the item home branch when
> finding items for the shelf browser.','1','YesNo');
> -INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesCcode','1','Use the item collection code when
> finding items for the shelf browser.','0','YesNo');
> \ No newline at end of file
> +INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesCcode','1','Use the item collection code when
> finding items for the shelf browser.','0','YesNo');
> +INSERT INTO `systempreferences` (variable,value,explanation,options,type)
> VALUES ('AllowFineOverride','0','If on, staff will be able to issue books to
> patrons with fines greater than noissuescharge.','0','YesNo');
> +INSERT INTO `systempreferences` (variable,value,explanation,options,type)
> VALUES ('AllFinesNeedOverride','1','If on, staff will be asked to override
> every fine, even if it is below noissuescharge.','0','YesNo');
> diff --git a/installer/data/mysql/it-IT/necessari/sysprefs.sql
> b/installer/data/mysql/it-IT/necessari/sysprefs.sql
> index 79c469c..49da6ce 100644
> --- a/installer/data/mysql/it-IT/necessari/sysprefs.sql
> +++ b/installer/data/mysql/it-IT/necessari/sysprefs.sql
> @@ -271,4 +271,6 @@ INSERT INTO systempreferences
> (variable,value,explanation,options,type) VALUES('
>  INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES('OpacPublic',1,'Turn on/off public OPAC',NULL,'YesNo');
>  INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesLocation','1','Use the item location when finding
> items for the shelf browser.','1','YesNo');
>  INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesHomeBranch','1','Use the item home branch when
> finding items for the shelf browser.','1','YesNo');
> -INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesCcode','1','Use the item collection code when
> finding items for the shelf browser.','0','YesNo');
> \ No newline at end of file
> +INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesCcode','1','Use the item collection code when
> finding items for the shelf browser.','0','YesNo');
> +INSERT INTO `systempreferences` (variable,value,explanation,options,type)
> VALUES ('AllowFineOverride','0','If on, staff will be able to issue books to
> patrons with fines greater than noissuescharge.','0','YesNo');
> +INSERT INTO `systempreferences` (variable,value,explanation,options,type)
> VALUES ('AllFinesNeedOverride','1','If on, staff will be asked to override
> every fine, even if it is below noissuescharge.','0','YesNo');
> diff --git a/installer/data/mysql/pl-PL/mandatory/sysprefs.sql
> b/installer/data/mysql/pl-PL/mandatory/sysprefs.sql
> index 8689c4c..5715de1 100644
> --- a/installer/data/mysql/pl-PL/mandatory/sysprefs.sql
> +++ b/installer/data/mysql/pl-PL/mandatory/sysprefs.sql
> @@ -283,4 +283,6 @@ INSERT INTO systempreferences
> (variable,value,explanation,options,type) VALUES('
>  INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES('OpacPublic',1,'Turn on/off public OPAC',NULL,'YesNo');
>  INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesLocation','1','Use the item location when finding
> items for the shelf browser.','1','YesNo');
>  INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesHomeBranch','1','Use the item home branch when
> finding items for the shelf browser.','1','YesNo');
> -INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesCcode','1','Use the item collection code when
> finding items for the shelf browser.','0','YesNo');
> \ No newline at end of file
> +INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesCcode','1','Use the item collection code when
> finding items for the shelf browser.','0','YesNo');
> +INSERT INTO `systempreferences` (variable,value,explanation,options,type)
> VALUES ('AllowFineOverride','0','If on, staff will be able to issue books to
> patrons with fines greater than noissuescharge.','0','YesNo');
> +INSERT INTO `systempreferences` (variable,value,explanation,options,type)
> VALUES ('AllFinesNeedOverride','1','If on, staff will be asked to override
> every fine, even if it is below noissuescharge.','0','YesNo');
> diff --git
> a/installer/data/mysql/ru-RU/mandatory/system_preferences_full_optimal_for_install_only.sql
> b/installer/data/mysql/ru-RU/mandatory/system_preferences_full_optimal_for_install_only.sql
> index c862e60..2b38cfa 100644
> ---
> a/installer/data/mysql/ru-RU/mandatory/system_preferences_full_optimal_for_install_only.sql
> +++
> b/installer/data/mysql/ru-RU/mandatory/system_preferences_full_optimal_for_install_only.sql
> @@ -338,4 +338,6 @@ INSERT INTO systempreferences
> (variable,value,explanation,options,type) VALUES('
>  INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES('OpacPublic',1,'Turn on/off public OPAC',NULL,'YesNo');
>  INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesLocation','1','Use the item location when finding
> items for the shelf browser.','1','YesNo');
>  INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesHomeBranch','1','Use the item home branch when
> finding items for the shelf browser.','1','YesNo');
> -INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesCcode','1','Use the item collection code when
> finding items for the shelf browser.','0','YesNo');
> \ No newline at end of file
> +INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesCcode','1','Use the item collection code when
> finding items for the shelf browser.','0','YesNo');
> +INSERT INTO `systempreferences` (variable,value,explanation,options,type)
> VALUES ('AllowFineOverride','0','If on, staff will be able to issue books to
> patrons with fines greater than noissuescharge.','0','YesNo');
> +INSERT INTO `systempreferences` (variable,value,explanation,options,type)
> VALUES ('AllFinesNeedOverride','1','If on, staff will be asked to override
> every fine, even if it is below noissuescharge.','0','YesNo');
> diff --git
> a/installer/data/mysql/uk-UA/mandatory/system_preferences_full_optimal_for_install_only.sql
> b/installer/data/mysql/uk-UA/mandatory/system_preferences_full_optimal_for_install_only.sql
> index 82e285b..874a6e4 100644
> ---
> a/installer/data/mysql/uk-UA/mandatory/system_preferences_full_optimal_for_install_only.sql
> +++
> b/installer/data/mysql/uk-UA/mandatory/system_preferences_full_optimal_for_install_only.sql
> @@ -363,4 +363,6 @@ INSERT INTO systempreferences
> (variable,value,explanation,options,type) VALUES('
>  INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES('OpacPublic',1,'Turn on/off public OPAC',NULL,'YesNo');
>  INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesLocation','1','Use the item location when finding
> items for the shelf browser.','1','YesNo');
>  INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesHomeBranch','1','Use the item home branch when
> finding items for the shelf browser.','1','YesNo');
> -INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesCcode','1','Use the item collection code when
> finding items for the shelf browser.','0','YesNo');
> \ No newline at end of file
> +INSERT INTO systempreferences (variable,value,explanation,options,type)
> VALUES ('ShelfBrowserUsesCcode','1','Use the item collection code when
> finding items for the shelf browser.','0','YesNo');
> +INSERT INTO `systempreferences` (variable,value,explanation,options,type)
> VALUES ('AllowFineOverride','0','If on, staff will be able to issue books to
> patrons with fines greater than noissuescharge.','0','YesNo');
> +INSERT INTO `systempreferences` (variable,value,explanation,options,type)
> VALUES ('AllFinesNeedOverride','1','If on, staff will be asked to override
> every fine, even if it is below noissuescharge.','0','YesNo');
> diff --git a/installer/data/mysql/updatedatabase.plb/installer/data/mysql/
> updatedatabase.pl
> index 31aa998..c297810 100755
> --- a/installer/data/mysql/updatedatabase.pl
> +++ b/installer/data/mysql/updatedatabase.pl
> @@ -4014,6 +4014,14 @@ if (C4::Context->preference("Version") <
> TransformToNum($DBversion)) {
>     SetVersion ($DBversion);
>  }
>
> +$DBversion = '3.03.00.XXX';
> +if (C4::Context->preference("Version") < TransformToNum($DBversion)) {
> +    $dbh->do("INSERT INTO `systempreferences`
> (variable,value,explanation,options,type) VALUES
> ('AllowFineOverride','0','If on, staff will be able to issue books to
> patrons with fines greater than noissuescharge.','0','YesNo')");
> +    $dbh->do("INSERT INTO `systempreferences`
> (variable,value,explanation,options,type) VALUES
> ('AllFinesNeedOverride','1','If on, staff will be asked to override every
> fine, even if it is below noissuescharge.','0','YesNo')");
> +    print "Upgrade to $DBversion done (Bug 5811: Add sysprefs controlling
> overriding fines)\n";
> +    SetVersion($DBversion);
> +};
> +
>  =head1 FUNCTIONS
>
>  =head2 DropAllForeignKeys($table)
> diff --git
> a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref
> b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref
> index 3742b23..87769b6 100644
> ---
> a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref
> +++
> b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref
> @@ -86,6 +86,18 @@ Circulation:
>                   no: "Don't allow"
>             - staff to manually override the renewal limit and renew a
> checkout when it would go over the renewal limit.
>         -
> +            - pref: AllFinesNeedOverride
> +              choices:
> +                  yes: Require
> +                  no: "Don't require"
> +            - staff to manually override all fines, even fines less than
> noissuescharge.
> +        -
> +            - pref: AllowFineOverride
> +              choices:
> +                  yes: Allow
> +                  no: "Don't allow"
> +            - staff to manually override and check out items to patrons
> who have more than noissuescharge in fines.
> +        -
>             - pref: InProcessingToShelvingCart
>               choices:
>                   yes: Move
> --
> 1.7.2.3
>
> _______________________________________________
> Koha-patches mailing list
> Koha-patches at lists.koha-community.org
> http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-patches
> website : http://www.koha-community.org/
> git : http://git.koha-community.org/
> bugs : http://bugs.koha-community.org/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/koha-patches/attachments/20110304/b35274fc/attachment-0001.htm>


More information about the Koha-patches mailing list