Notify the user on his account page when his account is almost expired
authorFrédérick Capovilla <frederick.capovilla@libeo.com>
Wed, 5 Oct 2011 19:12:04 +0000 (15:12 -0400)
committerPaul Poulain <paul.poulain@biblibre.com>
Sun, 6 Nov 2011 10:36:18 +0000 (11:36 +0100)
New feature : If the "NotifyBorrowerDeparture" system preference is defined, a
notification appears in the user's account page if his subscription is almost
expired.

http://bugs.koha-community.org/show_bug.cgi?id=6978
Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Paul Poulain <paul.poulain@biblibre.com>
works perfectly with date formatted DD/MM/YYYY as well

koha-tmpl/opac-tmpl/prog/en/modules/opac-user.tt
opac/opac-user.pl

index d9417ec..f460b40 100644 (file)
@@ -79,6 +79,12 @@ $.tablesorter.addParser({
         
                [% IF ( patronupdate ) %]<div class="dialog message"><h3>Thank you!</h3><p>Your corrections have been submitted to the library, and a staff member will update your record as soon as possible.</p></div>[% END %]
                
+        [% IF ( BORROWER_INF.warndeparture ) %]
+        <div class="dialog alert">
+                <strong>Please note:</strong><span> Your card will expire on [% BORROWER_INF.warndeparture %]. Please contact the library if you wish to renew your subscription.</span>
+                [% IF ( BORROWER_INF.returnbeforeexpiry ) %]<span> Also note that you must return all checked out items before your card expires.</span>[% END %]
+        </div>
+        [% END %]
 
         [% IF ( BORROWER_INF.flagged ) %]
                <div class="dialog alert">
index e99e557..03c9e81 100755 (executable)
@@ -38,6 +38,12 @@ use C4::Branch; # GetBranches
 
 use constant ATTRIBUTE_SHOW_BARCODE => 'SHOW_BCODE';
 
+use Date::Calc qw(
+  Today
+  Add_Delta_Days
+  Date_to_Days
+);
+
 my $query = new CGI;
 
 BEGIN {
@@ -64,6 +70,9 @@ my $patronupdate = $query->param('patronupdate');
 # get borrower information ....
 my ( $borr ) = GetMemberDetails( $borrowernumber );
 
+my (  $today_year,   $today_month,   $today_day) = Today();
+my ($warning_year, $warning_month, $warning_day) = split /-/, $borr->{'dateexpiry'};
+
 for (qw(dateenrolled dateexpiry dateofbirth)) {
     ($borr->{$_}) and $borr->{$_} = format_date($borr->{$_});
 }
@@ -99,6 +108,18 @@ $borr->{'amountoutstanding'} = sprintf "%.02f", $borr->{'amountoutstanding'};
 my @bordat;
 $bordat[0] = $borr;
 
+# Warningdate is the date that the warning starts appearing
+if ( C4::Context->preference('NotifyBorrowerDeparture') &&
+    Date_to_Days(Add_Delta_Days($warning_year,$warning_month,$warning_day,- C4::Context->preference('NotifyBorrowerDeparture'))) <
+    Date_to_Days( $today_year, $today_month, $today_day ) ) 
+{
+    # borrower card soon to expire, warn the borrower
+    $borr->{'warndeparture'} = $borr->{dateexpiry};
+    if (C4::Context->preference('ReturnBeforeExpiry')){
+        $borr->{'returnbeforeexpiry'} = 1;
+    }
+}
+
 $template->param(   BORROWER_INFO     => \@bordat,
                     borrowernumber    => $borrowernumber,
                     patron_flagged    => $borr->{flagged},