Bug 9448: Add separate permission for writing off fees
authorKyle M Hall <kyle@bywatersolutions.com>
Thu, 21 Mar 2013 11:18:50 +0000 (04:18 -0700)
committerGalen Charlton <gmc@esilibrary.com>
Thu, 17 Apr 2014 15:41:23 +0000 (15:41 +0000)
Adds new sub-permissions to updatecharges, 'writeoff' for writing off
fees and 'remaining_permissions' for all other fee related activites.

Test plan:
1) Apply patch
2) Run updatedatabase.pl
3) Remove the 'writeoff' permission from your privileges
4) Attempt to write off a fee, you should not be able to
5) Re-add the 'writeoff' permission
6) Attempt to write off a fee, you should now be able to do so

Signed-off-by: Joel Sasse <jsasse@plumcreeklibrary.net>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
18 files changed:
installer/data/mysql/de-DE/mandatory/userpermissions.sql
installer/data/mysql/en/mandatory/userpermissions.sql
installer/data/mysql/es-ES/mandatory/userpermissions.sql
installer/data/mysql/fr-FR/1-Obligatoire/userpermissions.sql
installer/data/mysql/it-IT/necessari/userpermissions.sql
installer/data/mysql/nb-NO/1-Obligatorisk/userpermissions.sql
installer/data/mysql/pl-PL/mandatory/userpermissions.sql
installer/data/mysql/ru-RU/mandatory/permissions_and_user_flags.sql
installer/data/mysql/uk-UA/mandatory/permissions_and_user_flags.sql
installer/data/mysql/updatedatabase.pl
koha-tmpl/intranet-tmpl/prog/en/modules/members/pay.tt
members/boraccount.pl
members/mancredit.pl
members/maninvoice.pl
members/pay.pl
members/paycollect.pl
members/printfeercpt.pl
members/printinvoice.pl

index 9c754ee..1f1e6ad 100644 (file)
@@ -11,6 +11,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES
    ( 9, 'edit_catalogue', 'Katalogdaten bearbeiten (Titel- und Exemplardaten ändern)'),
    ( 9, 'fast_cataloging', 'Schnellaufnahmen anlegen'),
    ( 9, 'edit_items', 'Exemplare bearbeiten'),
+   (10, 'writeoff', 'Write off charges'),
+   (10, 'remaining_permissions', 'Remaining updatecharges permissions'),
    (11, 'vendors_manage', 'Lieferanten verwalten'),
    (11, 'contracts_manage', 'Vereinbarungen verwalten'),
    (11, 'period_manage', 'Etats verwalten'),
index eb1275c..642f3be 100644 (file)
@@ -11,6 +11,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES
    ( 9, 'edit_catalogue', 'Edit catalog (Modify bibliographic/holdings data)'),
    ( 9, 'fast_cataloging', 'Fast cataloging'),
    ( 9, 'edit_items', 'Edit Items'),
+   (10, 'writeoff', 'Write off charges'),
+   (10, 'remaining_permissions', 'Remaining updatecharges permissions'),
    (11, 'vendors_manage', 'Manage vendors'),
    (11, 'contracts_manage', 'Manage contracts'),
    (11, 'period_manage', 'Manage periods'),
index 2f42224..fa22c18 100644 (file)
@@ -11,6 +11,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES
    ( 9, 'edit_catalogue', 'Edit catalog (Modify bibliographic/holdings data)'),
    ( 9, 'fast_cataloging', 'Fast cataloging'),
    ( 9, 'edit_items', 'Edit Items'),
+   (10, 'writeoff', 'Write off charges'),
+   (10, 'remaining_permissions', 'Remaining updatecharges permissions'),
    (11, 'vendors_manage', 'Manage vendors'),
    (11, 'contracts_manage', 'Manage contracts'),
    (11, 'period_manage', 'Manage periods'),
index 702db68..8966895 100644 (file)
@@ -11,6 +11,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES
    ( 9, 'edit_catalogue', 'Ajouter et modifier des notices au catalogue'),
    ( 9, 'fast_cataloging', 'Catalogage rapide'),
    ( 9, 'edit_items', 'Modifier des exemplaires'),
+   (10, 'writeoff', 'Write off charges'),
+   (10, 'remaining_permissions', 'Remaining updatecharges permissions'),
    (13, 'edit_news', 'Ecrire des nouvelles pour l''OPAC et l''interface professionnelle'),
    (13, 'label_creator', 'Créer des étiquettes à partir des données du catalogues et des adhérents'),
    (13, 'edit_calendar', 'Définir les jours de fermeture de la bibliothèque'),
index 0d27fc0..ec121e0 100644 (file)
@@ -13,6 +13,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES
    ( 9, 'edit_catalogue', 'Cataloga (crea/modifica dati bibliografici e di copia)'),
    ( 9, 'fast_cataloging', 'Catalogazione veloce'),
    ( 9, 'edit_items', 'Crea/modifica copie'),
+   (10, 'writeoff', 'Write off charges'),
+   (10, 'remaining_permissions', 'Remaining updatecharges permissions'),
    (11, 'vendors_manage', 'Crea/modifica fornitori'),
    (11, 'contracts_manage', 'Crea/modifica contratti'),
    (11, 'period_manage', 'Gestisci scadenze budgets'),
index c581bbd..88f91c7 100644 (file)
@@ -31,6 +31,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES
    ( 9, 'edit_catalogue', 'Endre katalogen (Endre bibliografiske poster og eksemplaropplysninger)'),
    ( 9, 'fast_cataloging', 'Hurtigkatalogisering'),
    ( 9, 'edit_items', 'Endre eksmeplarer'),
+   (10, 'writeoff', 'Write off charges'),
+   (10, 'remaining_permissions', 'Remaining updatecharges permissions'),
    (11, 'vendors_manage', 'Administrere leverandører'),
    (11, 'contracts_manage', 'Administrere kontrakter'),
    (11, 'period_manage', 'Administrere perioder'),
index dcd8aef..4ae6b6f 100644 (file)
@@ -11,6 +11,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES
    ( 9, 'edit_catalogue', 'Edit catalogue'),
    ( 9, 'fast_cataloging', 'Szybkie katalogowanie'),
    ( 9, 'edit_items', 'Edit Items'),
+   (10, 'writeoff', 'Write off charges'),
+   (10, 'remaining_permissions', 'Remaining updatecharges permissions'),
    (11, 'vendors_manage', 'Zarządzanei dostawcami'),
    (11, 'contracts_manage', 'Zarządzanie kontraktami'),
    (11, 'period_manage', 'Manage periods'),
index acf904d..0c18a35 100644 (file)
@@ -37,6 +37,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES
    ( 9, 'edit_catalogue', 'Edit catalog (Modify bibliographic/holdings data)'),
    ( 9, 'fast_cataloging', 'Fast cataloging'),
    ( 9, 'edit_items', 'Edit Items'),
+   (10, 'writeoff', 'Write off charges'),
+   (10, 'remaining_permissions', 'Remaining updatecharges permissions'),
    (11, 'vendors_manage', 'Manage vendors'),
    (11, 'contracts_manage', 'Manage contracts'),
    (11, 'period_manage', 'Manage periods'),
index adee3ff..de7b934 100644 (file)
@@ -37,6 +37,8 @@ INSERT INTO permissions (module_bit, code, description) VALUES
    ( 9, 'edit_catalogue', 'Edit catalog (Modify bibliographic/holdings data)'),
    ( 9, 'fast_cataloging', 'Fast cataloging'),
    ( 9, 'edit_items', 'Edit Items'),
+   (10, 'writeoff', 'Write off charges'),
+   (10, 'remaining_permissions', 'Remaining updatecharges permissions'),
    (11, 'vendors_manage', 'Manage vendors'),
    (11, 'contracts_manage', 'Manage contracts'),
    (11, 'period_manage', 'Manage periods'),
index 4de4f4e..e67e60a 100755 (executable)
@@ -8129,6 +8129,14 @@ if(CheckVersion($DBversion)) {
     SetVersion($DBversion);
 }
 
+$DBversion = "3.15.00.XXX";
+if ( CheckVersion($DBversion) ) {
+   $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES ('10', 'writeoff', 'Write off charges')");
+   $dbh->do("INSERT INTO permissions (module_bit, code, description) VALUES ('10', 'remaining_permissions', 'Remaining updatecharges permissions')");
+   print "Upgrade to $DBversion done (Bug 9448 - Add separate permission for writing off fees)\n";
+   SetVersion ($DBversion);
+}
+
 =head1 FUNCTIONS
 
 =head2 TableExists($table)
index e584588..2b012d3 100644 (file)
@@ -100,7 +100,7 @@ function enableCheckboxActions(){
     <td>
     [% IF ( line.amountoutstanding > 0 ) %]
         <input type="submit" name="pay_indiv_[% line.accountno %]" value="Pay" />
-        <input type="submit" name="wo_indiv_[% line.accountno %]" value="Write off" />
+        [% IF CAN_user_updatecharges_writeoff %]<input type="submit" name="wo_indiv_[% line.accountno %]" value="Write off" />[% END %]
     [% END %]
     <input type="hidden" name="itemnumber[% line.accountno %]" value="[% line.itemnumber %]" />
     <input type="hidden" name="description[% line.accountno %]" value="[% line.description %]" />
@@ -148,7 +148,7 @@ function enableCheckboxActions(){
 </table>
 <fieldset class="action">
 <input type="submit" id="paycollect" name="paycollect"  value="Pay amount" class="submit" />
-<input type="submit" name="woall"  id="woall" value="Write off all" class="submit" />
+[% IF CAN_user_updatecharges_writeoff %]<input type="submit" name="woall"  id="woall" value="Write off all" class="submit" />[% END %]
 <input type="submit" id="payselected" name="payselected"  value="Pay selected" class="submit" />
 <a class="cancel" href="/cgi-bin/koha/members/boraccount.pl?borrowernumber=[% borrower.borrowernumber %]">Cancel</a>
 </fieldset>
index 255b1ff..314f558 100755 (executable)
@@ -42,7 +42,7 @@ my ($template, $loggedinuser, $cookie)
                             query => $input,
                             type => "intranet",
                             authnotrequired => 0,
-                            flagsrequired => {borrowers => 1, updatecharges => 1},
+                            flagsrequired => {borrowers => 1, updatecharges => 'remaining_permissions'},
                             debug => 1,
                             });
 
index a2c2258..0ba52f3 100755 (executable)
@@ -65,7 +65,7 @@ if ($add){
                                          query => $input,
                                          type => "intranet",
                                          authnotrequired => 0,
-                      flagsrequired => $flagsrequired,
+                      flagsrequired => { borrowers => 1, updatecharges => 'remaining_permissions' },
                                          debug => 1,
                                          });
                                          
index c4a9294..4bf294a 100755 (executable)
@@ -83,7 +83,7 @@ if ($add){
                                        query => $input,
                                        type => "intranet",
                                        authnotrequired => 0,
-                                       flagsrequired => {borrowers => 1, updatecharges => 1},
+                                      flagsrequired => {borrowers => 1, updatecharges => 'remaining_permissions'},
                                        debug => 1,
                                        });
                                        
index 8a8e902..3e36073 100755 (executable)
@@ -44,12 +44,13 @@ use C4::Members::Attributes qw(GetBorrowerAttributes);
 
 our $input = CGI->new;
 
+my $updatecharges_permissions = $input->param('woall') ? 'writeoff' : 'remaining_permissions';
 our ( $template, $loggedinuser, $cookie ) = get_template_and_user(
     {   template_name   => 'members/pay.tmpl',
         query           => $input,
         type            => 'intranet',
         authnotrequired => 0,
-        flagsrequired   => { borrowers => 1, updatecharges => 1 },
+        flagsrequired   => { borrowers => 1, updatecharges => $updatecharges_permissions },
         debug           => 1,
     }
 );
index 96ca0fb..2e88efc 100755 (executable)
@@ -31,12 +31,13 @@ use C4::Branch;
 
 my $input = CGI->new();
 
+my $updatecharges_permissions = $input->param('writeoff_individual') ? 'writeoff' : 'remaining_permissions';
 my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
     {   template_name   => 'members/paycollect.tmpl',
         query           => $input,
         type            => 'intranet',
         authnotrequired => 0,
-        flagsrequired   => { borrowers => 1, updatecharges => 1 },
+        flagsrequired   => { borrowers => 1, updatecharges => $updatecharges_permissions },
         debug           => 1,
     }
 );
index 6a86bc3..048f938 100755 (executable)
@@ -41,7 +41,7 @@ my ($template, $loggedinuser, $cookie)
                             query => $input,
                             type => "intranet",
                             authnotrequired => 0,
-                            flagsrequired => {borrowers => 1, updatecharges => 1},
+                            flagsrequired => {borrowers => 1, updatecharges => 'remaining_permissions'},
                             debug => 1,
                             });
 
index 10ae114..5ad43f1 100755 (executable)
@@ -38,7 +38,7 @@ my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
         query           => $input,
         type            => "intranet",
         authnotrequired => 0,
-        flagsrequired   => { borrowers => 1, updatecharges => 1 },
+        flagsrequired => { borrowers => 1, updatecharges => 'remaining_permissions' },
         debug           => 1,
     }
 );