Bug 17600: Standardize our EXPORT_OK
[srvgit] / circ / branchoverdues.pl
index 2503283..0bea167 100755 (executable)
 #!/usr/bin/perl
 
-# $Id$
 #
 # 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 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 3 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.
+# 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
+# You should have received a copy of the GNU General Public License
+# along with Koha; if not, see <http://www.gnu.org/licenses>.
 
-use strict;
+use Modern::Perl;
 use C4::Context;
-use CGI;
-use C4::Interface::CGI::Output;
-use C4::Auth;
-use C4::Date;
-use C4::Circulation::Circ2;    # AddNotifyLine
-use C4::Koha;                  # GetDepartment...
-use Mail::Sendmail;
-use Getopt::Long;
-use Date::Calc qw/Today Today_and_Now Now/;
+use CGI qw ( -utf8 );
+use C4::Output qw( output_html_with_http_headers );
+use C4::Auth qw( get_template_and_user );
+use C4::Overdues qw( GetOverduesForBranch );
+use C4::Biblio qw( GetMarcFromKohaField GetMarcStructure );
+use C4::Koha qw( GetAuthorisedValues );
+use Koha::DateUtils qw( dt_from_string output_pref );
+use Koha::BiblioFrameworks;
 
 =head1 branchoverdues.pl
 
- this module is a new interface, allow to the librarian to check all items on overdues (based on the acountlines type 'FU' )
- this interface is filtered by branches (automaticly), and by department (optional) ....
- all informations are stocked in the notifys BDD
+This view is used to display all overdue items to the librarian.
 
- FIXME for this time, we have only four methods to notify :
-       - mail : work with a batch programm
-       - letter : for us, the letters are generated by an open-office program
-       - phone : Simple method, when the method 'phone' is selected, we consider, that the borrower as been notified, and the notify send date is implemented
-       - considered lost : for us if the document is on the third overduelevel,
-
- FIXME the methods are actually hardcoded for the levels : (maybe can be improved by a new possibility in overduerule)
-
-       level 1 : three methods are possible : - mail, letter, phone
-       level 2 : only one method is possible : - letter
-       level 3 : only methode is possible  : - Considered Lost
-
-       the documents displayed on this interface, are checked on three points
-       - 1) the document must be on accountlines (Type 'FU')
-       - 2) item issues is not returned
-       - 3) this item as not been already notify
+It is automatically filtered by branch and can optionally be filtered
+by item location.
 
 =cut
 
-my $input       = new CGI;
-my $theme = $input->param('theme');    # only used if allowthemeoverride is set
+my $input       = CGI->new;
+my $dbh = C4::Context->dbh;
 
-my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
-    {
-        template_name   => "circ/branchoverdues.tmpl",
+my ( $template, $loggedinuser, $cookie, $flags ) = get_template_and_user({
+        template_name   => "circ/branchoverdues.tt",
         query           => $input,
         type            => "intranet",
-        authnotrequired => 0,
-        flagsrequired   => { circulate => 1 },
-        debug           => 1,
-    }
-);
+        flagsrequired   => { circulate => "circulate_remaining_permissions" },
+});
 
 my $default = C4::Context->userenv->{'branch'};
 
-# Initate localtime
-my ( $year, $month, $day ) = &Today;
-my $todaysdate = join "-", ( $year, $month, $day );
-
 # Deal with the vars recept from the template
 my $borrowernumber = $input->param('borrowernumber');
 my $itemnumber     = $input->param('itemnumber');
 my $method         = $input->param('method');
 my $overduelevel   = $input->param('overduelevel');
-my $notifyId       = $input->param('notifyId');
-my $department = $input->param('department');
-
-# now create the line in bdd (notifys)
-if ( $input->param('action') eq 'add' ) {
-    my $addnotify =
-      AddNotifyLine( $borrowernumber, $itemnumber, $overduelevel, $method,
-        $notifyId );
-}
+my $location       = $input->param('location');
 
-#  possibility to remove notify line
-if ( $input->param('action') eq 'remove' ) {
-    my $notify_date  = $input->param('notify_date');
-    my $removenotify =
-      RemoveNotifyLine( $borrowernumber, $itemnumber, $notify_date );
-}
+# FIXME: better check that borrowernumber is defined and valid.
+# FIXME: same for itemnumber and other variables passed in here.
 
 my @overduesloop;
-my @todayoverduesloop;
-my $counter = 0;
-
-my @getoverdues = GetOverduesForBranch( $default, $department );
-
-# filter by department
-if ($department) {
-    my ( $departmentlib, $departmentValue ) = GetDepartmentLib($department);
-    $template->param(
-        department      => $departmentlib,
-        departmentValue => $departmentValue,
-    );
+my @getoverdues = GetOverduesForBranch( $default, $location );
+# search for location authorised value
+my ($tag,$subfield) = GetMarcFromKohaField( 'items.location' );
+my $tagslib = &GetMarcStructure(1,'');
+if ($tagslib->{$tag}->{$subfield}->{authorised_value}) {
+    my $values= GetAuthorisedValues($tagslib->{$tag}->{$subfield}->{authorised_value});
+    for (@$values) { $_->{selected} = 1 if defined $location && $location eq $_->{authorised_value} }
+    $template->param(locationsloop => $values);
 }
-else {
-
-    # initiate the selector of departments .....
-    my @getdepartments = GetDepartments();
-    my @departmentsloop;
-    foreach my $dpt (@getdepartments) {
-        my %department;
-        $department{'authorised_value'} = $dpt->{'authorised_value'};
-        $department{'lib'}              = $dpt->{'lib'};
-        push( @departmentsloop, \%department );
-    }
-    $template->param( departmentsloop => \@departmentsloop, );
-}
-
 # now display infos
 foreach my $num (@getoverdues) {
-
     my %overdueforbranch;
-    $overdueforbranch{'date_due'}          = format_date( $num->{'date_due'} );
+    my $dt = dt_from_string($num->{date_due}, 'sql');
+    $overdueforbranch{'date_due'}          = output_pref($dt);
     $overdueforbranch{'title'}             = $num->{'title'};
+    $overdueforbranch{'subtitle'}          = $num->{'subtitle'};
+    $overdueforbranch{'medium'}            = $num->{'medium'};
+    $overdueforbranch{'part_number'}       = $num->{'part_number'};
+    $overdueforbranch{'part_name'}         = $num->{'part_name'};
     $overdueforbranch{'description'}       = $num->{'description'};
     $overdueforbranch{'barcode'}           = $num->{'barcode'};
     $overdueforbranch{'biblionumber'}      = $num->{'biblionumber'};
+    $overdueforbranch{'author'}            = $num->{'author'};
     $overdueforbranch{'borrowersurname'}   = $num->{'surname'};
     $overdueforbranch{'borrowerfirstname'} = $num->{'firstname'};
     $overdueforbranch{'borrowerphone'}     = $num->{'phone'};
     $overdueforbranch{'borroweremail'}     = $num->{'email'};
+    $overdueforbranch{'homebranch'}        = $num->{'homebranch'};
     $overdueforbranch{'itemcallnumber'}    = $num->{'itemcallnumber'};
     $overdueforbranch{'borrowernumber'}    = $num->{'borrowernumber'};
     $overdueforbranch{'itemnumber'}        = $num->{'itemnumber'};
-
-    # now we add on the template, the differents values of notify_level
-    if ( $num->{'notify_level'} eq '1' ) {
-        $overdueforbranch{'overdue1'}     = 1;
-        $overdueforbranch{'overdueLevel'} = 1;
-    }
-
-    if ( $num->{'notify_level'} eq '2' ) {
-        $overdueforbranch{'overdue2'}     = 1;
-        $overdueforbranch{'overdueLevel'} = 2;
-    }
-
-    if ( $num->{'notify_level'} eq '3' ) {
-        $overdueforbranch{'overdue3'}     = 1;
-        $overdueforbranch{'overdueLevel'} = 3;
-    }
-    $overdueforbranch{'notify_id'} = $num->{'notify_id'};
+    $overdueforbranch{'cardnumber'}        = $num->{'cardnumber'};
 
     push( @overduesloop, \%overdueforbranch );
 }
@@ -164,7 +98,10 @@ foreach my $num (@getoverdues) {
 # initiate the templates for the overdueloop
 $template->param(
     overduesloop => \@overduesloop,
-    show_date    => format_date($todaysdate),
+    location     => $location,
 );
 
+# Checking if there is a Fast Cataloging Framework
+$template->param( fast_cataloging => 1 ) if Koha::BiblioFrameworks->find( 'FA' );
+
 output_html_with_http_headers $input, $cookie, $template->output;