From 563802263e9a48cf83511dcea92f818170097e59 Mon Sep 17 00:00:00 2001
From: Yohann Dufour <dufour.yohann@gmail.com>
Date: Mon, 4 Aug 2014 16:09:35 +0200
Subject: [PATCH] Bug 8007: Discharge - Glue

This patch adds:
- links to the new pages.
- syspref description
- links on the main page (intranet)
- the DISCHARGE type for debarment
---
 C4/Auth.pm                                                    |  2 ++
 Koha/Borrower/Debarments.pm                                   |  2 +-
 .../intranet-tmpl/prog/en/includes/borrower_debarments.inc    |  2 ++
 koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.inc        |  3 +++
 koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.tt         |  3 +++
 koha-tmpl/intranet-tmpl/prog/en/includes/members-menu.inc     |  3 +++
 .../prog/en/modules/admin/preferences/patrons.pref            |  6 ++++++
 koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt      | 11 ++++++++++-
 koha-tmpl/opac-tmpl/bootstrap/en/includes/usermenu.inc        |  9 +++++++++
 mainpage.pl                                                   |  3 +++
 10 files changed, 42 insertions(+), 2 deletions(-)

diff --git a/C4/Auth.pm b/C4/Auth.pm
index 22f1e8e..c9f67eb 100644
--- a/C4/Auth.pm
+++ b/C4/Auth.pm
@@ -416,6 +416,7 @@ sub get_template_and_user {
             EnableBorrowerFiles                                                        => C4::Context->preference('EnableBorrowerFiles'),
             UseKohaPlugins                                                             => C4::Context->preference('UseKohaPlugins'),
             UseCourseReserves                                                          => C4::Context->preference("UseCourseReserves"),
+            useDischarge                                                               => C4::Context->preference('useDischarge'),
         );
     }
     else {
@@ -528,6 +529,7 @@ sub get_template_and_user {
             OPACLocalCoverImages                  => C4::Context->preference("OPACLocalCoverImages"),
             PatronSelfRegistration                => C4::Context->preference("PatronSelfRegistration"),
             PatronSelfRegistrationDefaultCategory => C4::Context->preference("PatronSelfRegistrationDefaultCategory"),
+            useDischarge                 => C4::Context->preference('useDischarge'),
         );
 
         $template->param( OpacPublic => '1' ) if ( $user || C4::Context->preference("OpacPublic") );
diff --git a/Koha/Borrower/Debarments.pm b/Koha/Borrower/Debarments.pm
index 2c91af2..9efdc42 100644
--- a/Koha/Borrower/Debarments.pm
+++ b/Koha/Borrower/Debarments.pm
@@ -131,7 +131,7 @@ sub DelDebarment {
 my $success = ModDebarment({
     borrower_debarment_id => $borrower_debarment_id,
     expiration            => $expiration,
-    type                  => $type, ## enum('FINES','OVERDUES','MANUAL')
+    type                  => $type, ## enum('FINES','OVERDUES','MANUAL','DISCHARGE')
     comment               => $comment,
 });
 
diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/borrower_debarments.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/borrower_debarments.inc
index 8d6ac33..aea0889 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/borrower_debarments.inc
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/borrower_debarments.inc
@@ -47,6 +47,8 @@
                                     Overdues
                                 [% CASE 'SUSPENSION' %]
                                     Suspension
+                                [% CASE 'DISCHARGE' %]
+                                    Discharge
                             [% END %]
                         </td>
                         <td>[% d.comment %]</td>
diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.inc
index 49a29ccb..fa0238f 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.inc
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.inc
@@ -91,6 +91,9 @@
     [% IF ( CAN_user_borrowers ) %]
         [% IF ( suggestionsview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/members/purchase-suggestions.pl?borrowernumber=[% borrowernumber %]">Purchase suggestions</a></li>
     [% END %]
+    [% IF CAN_user_borrowers && useDischarge %]
+        [% IF dischargeview %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/members/discharge.pl?borrowernumber=[% borrowernumber %]">Discharge</a></li>
+    [% END %]
 </ul></div>
 [% END %]
 
diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.tt b/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.tt
index 2a1da6b..1b62db2 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/circ-menu.tt
@@ -90,6 +90,9 @@ in the global namespace %]
     [% IF ( CAN_user_borrowers ) %]
         [% IF (  suggestionsview ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/members/purchase-suggestions.pl?borrowernumber=[% borrower.borrowernumber %]">Purchase<br/>suggestions</a></li>
     [% END %]
+    [% IF CAN_user_borrowers && useDischarge %]
+        [% IF dischargeview %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/members/discharge.pl?borrowernumber=[% borrowernumber %]">Discharge</a></li>
+    [% END %]
 </ul></div>
 [% END %]
 
diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/members-menu.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/members-menu.inc
index 9bd5285..e7e8772 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/includes/members-menu.inc
+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/members-menu.inc
@@ -19,6 +19,9 @@
     [% IF EnableBorrowerFiles %]
         [% IF ( borrower_files ) %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/members/files.pl?borrowernumber=[% borrowernumber %]">Files</a></li>
     [% END %]
+    [% IF CAN_user_borrowers && useDischarge %]
+        [% IF dischargeview %]<li class="active">[% ELSE %]<li>[% END %]<a href="/cgi-bin/koha/members/discharge.pl?borrowernumber=[% borrowernumber %]">Discharge</a></li>
+    [% END %]
   </ul>
 </div>
 [% END %]
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref
index aa567c3..6f6776a 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/patrons.pref
@@ -139,6 +139,12 @@ Patrons:
          - pref: CardnumberLength
          - "characters long. The length can be a single number to specify an exact length, a range separated by a comma (i.e., 'Min,Max'), or a maximum with no minimum (i.e., ',Max')."
          - "If 'cardnumber' is included in the BorrowerMandatoryField list, the minimum length, if not specified here, defaults to one."
+     -
+         - pref: useDischarge
+           choices:
+               yes: Allows
+               no: "Don't allow"
+         - librarians to discharge borrowers and borrowers to request a discharge.
     "Norwegian patron database":
      -
          - pref: NorwegianPatronDBEnable
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt
index c34ca85..8440526 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/intranet-main.tt
@@ -111,7 +111,9 @@
             [% IF ( ( CAN_user_tools_moderate_comments  && pendingcomments ) 
                     || ( CAN_user_tools_moderate_tags && pendingtags )
                     || ( CAN_user_borrowers && pending_borrower_modifications )
-                    || ( CAN_user_acquisition && pendingsuggestions ) ) %]
+                    || ( CAN_user_acquisition && pendingsuggestions )
+                    || ( CAN_user_borrowers && pending_discharge_requests )
+            ) %]
                 <div id="area-pending">
                     [% IF ( CAN_user_acquisition && pendingsuggestions ) %]
                     <div class="pending-info" id="suggestions_pending">
@@ -143,6 +145,13 @@
                     </div>
                     [% END %]
 
+                    [% IF CAN_user_borrowers && pending_discharge_requests %]
+                    <div class="pending-info" id="patron_discharges_pending">
+                        <a href="/cgi-bin/koha/members/discharges.pl">Discharge requests pending</a>:
+                        <span class="pending-number-link">[% pending_discharge_requests %]</span>
+                    </div>
+                    [% END %]
+
                 </div>
 
             [% END %]
diff --git a/koha-tmpl/opac-tmpl/bootstrap/en/includes/usermenu.inc b/koha-tmpl/opac-tmpl/bootstrap/en/includes/usermenu.inc
index 182543b..2c896fa 100644
--- a/koha-tmpl/opac-tmpl/bootstrap/en/includes/usermenu.inc
+++ b/koha-tmpl/opac-tmpl/bootstrap/en/includes/usermenu.inc
@@ -95,6 +95,15 @@
                 [% END %]
                 <a href="/cgi-bin/koha/opac-shelves.pl?display=privateshelves">your lists</a></li>
             [% END %]
+
+            [% IF Koha.Preference( 'useDischarge' ) == 1 %]
+                [% IF ( dischargeview ) %]
+                    <li class="active">
+                [% ELSE %]
+                    <li>
+                [% END %]
+                <a href="/cgi-bin/koha/opac-discharge.pl">ask for a discharge</a></li>
+            [% END %]
         </ul>
     </div>
 [% END %]
diff --git a/mainpage.pl b/mainpage.pl
index 09450f6..1ccffad 100755
--- a/mainpage.pl
+++ b/mainpage.pl
@@ -29,6 +29,7 @@ use C4::Review qw/numberofreviews/;
 use C4::Suggestions qw/CountSuggestion/;
 use C4::Tags qw/get_count_by_tag_status/;
 use Koha::Borrower::Modifications;
+use Koha::Borrower::Discharge;
 
 my $query = new CGI;
 
@@ -65,12 +66,14 @@ my $pendingtags        = get_count_by_tag_status(0);
 my $pendingsuggestions = CountSuggestion("ASKED");
 my $pending_borrower_modifications =
   Koha::Borrower::Modifications->GetPendingModificationsCount( $branch );
+my $pending_discharge_requests = Koha::Borrower::Discharge::count({ pending => 1 });
 
 $template->param(
     pendingcomments                => $pendingcomments,
     pendingtags                    => $pendingtags,
     pendingsuggestions             => $pendingsuggestions,
     pending_borrower_modifications => $pending_borrower_modifications,
+    pending_discharge_requests     => $pending_discharge_requests,
 );
 
 #
-- 
2.1.0