c596d55374
some stuff to do, i'll write a mail on koha-devel NOW !
170 lines
5.9 KiB
Perl
Executable file
170 lines
5.9 KiB
Perl
Executable file
#!/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 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
|
|
|
|
use strict;
|
|
use C4::Context;
|
|
use CGI;
|
|
use C4::Interface::CGI::Output;
|
|
use C4::Auth;
|
|
use C4::Date;
|
|
use C4::Overdues; # AddNotifyLine
|
|
use C4::Koha; # GetDepartment...
|
|
use Mail::Sendmail;
|
|
use Getopt::Long;
|
|
use Date::Calc qw/Today Today_and_Now Now/;
|
|
|
|
=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
|
|
|
|
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
|
|
|
|
=cut
|
|
|
|
my $input = new CGI;
|
|
my $theme = $input->param('theme'); # only used if allowthemeoverride is set
|
|
|
|
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
|
|
{
|
|
template_name => "circ/branchoverdues.tmpl",
|
|
query => $input,
|
|
type => "intranet",
|
|
authnotrequired => 0,
|
|
flagsrequired => { circulate => 1 },
|
|
debug => 1,
|
|
}
|
|
);
|
|
|
|
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 );
|
|
}
|
|
|
|
# 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 );
|
|
}
|
|
|
|
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,
|
|
);
|
|
}
|
|
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'} );
|
|
$overdueforbranch{'title'} = $num->{'title'};
|
|
$overdueforbranch{'description'} = $num->{'description'};
|
|
$overdueforbranch{'barcode'} = $num->{'barcode'};
|
|
$overdueforbranch{'biblionumber'} = $num->{'biblionumber'};
|
|
$overdueforbranch{'borrowersurname'} = $num->{'surname'};
|
|
$overdueforbranch{'borrowerfirstname'} = $num->{'firstname'};
|
|
$overdueforbranch{'borrowerphone'} = $num->{'phone'};
|
|
$overdueforbranch{'borroweremail'} = $num->{'email'};
|
|
$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'};
|
|
|
|
push( @overduesloop, \%overdueforbranch );
|
|
}
|
|
|
|
# initiate the templates for the overdueloop
|
|
$template->param(
|
|
overduesloop => \@overduesloop,
|
|
show_date => format_date($todaysdate),
|
|
);
|
|
|
|
output_html_with_http_headers $input, $cookie, $template->output;
|