X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;ds=sidebyside;f=serials%2Fclaims.pl;h=5b5479f7499930317805d69bc9afa04b540cca74;hb=b128878294cc76ce4a45f62b1b48ef0c19247ef2;hp=1b97a1b23275a7af843ce9a906198f78d65a7561;hpb=5432bd488f2cd842f4fece93c42423a3fc26143b;p=koha-ffzg.git diff --git a/serials/claims.pl b/serials/claims.pl index 1b97a1b232..5b5479f749 100755 --- a/serials/claims.pl +++ b/serials/claims.pl @@ -4,30 +4,29 @@ # 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., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . -use strict; -use warnings; -use CGI; -use C4::Auth; -use C4::Serials; -use C4::Acquisition; -use C4::Output; -use C4::Bookseller qw( GetBookSeller ); +use Modern::Perl; +use CGI qw ( -utf8 ); +use C4::Auth qw( get_template_and_user ); +use C4::Serials qw( GetSuppliersWithLateIssues GetLateOrMissingIssues updateClaim can_claim_subscription ); +use C4::Output qw( output_html_with_http_headers ); use C4::Context; -use C4::Letters; -use C4::Branch; # GetBranches GetBranchesLoop +use C4::Letters qw( GetLetters SendAlerts ); + +use Koha::AdditionalFields; +use Koha::CsvProfiles; my $input = CGI->new; @@ -36,70 +35,69 @@ my $op = $input->param('op'); my $claimletter = $input->param('claimletter'); my $supplierid = $input->param('supplierid'); my $suppliername = $input->param('suppliername'); -my $order = $input->param('order'); # open template first (security & userenv set here) my ($template, $loggedinuser, $cookie) -= get_template_and_user({template_name => 'serials/claims.tmpl', += get_template_and_user({template_name => 'serials/claims.tt', query => $input, type => 'intranet', - authnotrequired => 0, flagsrequired => {serials => 'claim_serials'}, - debug => 1, }); # supplierlist is returned in name order my $supplierlist = GetSuppliersWithLateIssues(); for my $s (@{$supplierlist} ) { - $s->{count} = scalar GetLateOrMissingIssues($s->{id}, q{}, $order); + $s->{count} = scalar GetLateOrMissingIssues($s->{id}); if ($supplierid && $s->{id} == $supplierid) { $s->{selected} = 1; } } -my $letters = GetLetters('claimissues'); -my @letters; -foreach (keys %{$letters}){ - push @letters ,{code=>$_,name=> $letters->{$_}}; -} +my $additional_fields = Koha::AdditionalFields->search( { tablename => 'subscription', searchable => 1 } ); -my $letter=((scalar(@letters)>1) || ($letters[0]->{name}||$letters[0]->{code})); -my @missingissues; -my @supplierinfo; -if ($supplierid) { - @missingissues = GetLateOrMissingIssues($supplierid,$serialid,$order); - @supplierinfo=GetBookSeller($supplierid); +my @serialnums=$input->multi_param('serialid'); +if (@serialnums) { # i.e. they have been flagged to generate claims + my $err; + eval { + $err = SendAlerts( 'claimissues', \@serialnums, scalar $input->param("letter_code") ); + if ( not ref $err or not exists $err->{error} ) { + C4::Serials::updateClaim( \@serialnums ); + } + }; + if ( $@ ) { + $template->param(error_claim => $@); + } elsif ( ref $err and exists $err->{error} ) { + if ( $err->{error} eq "no_email" ) { + $template->param( error_claim => 'no_vendor_email' ); + } elsif ( $err->{error} =~ m|Bad or missing From address| ) { + $template->param( error_claim => 'bad_or_missing_sender' ); + } + } else { + $template->param( info_claim => 1 ); + } } -my $branchloop = GetBranchesLoop(); -unshift @$branchloop, {value=> 'all',name=>''}; +my $letters = GetLetters({ module => 'claimissues' }); -my $preview=0; -if($op && $op eq 'preview'){ - $preview = 1; -} else { - my @serialnums=$input->param('serialid'); - if (@serialnums) { # i.e. they have been flagged to generate claims - SendAlerts('claimissues',\@serialnums,$input->param("letter_code")); - my $cntupdate=UpdateClaimdateIssues(\@serialnums); - ### $cntupdate SHOULD be equal to scalar(@$serialnums) +my @missingissues; +if ($supplierid) { + my $supplier = Koha::Acquisition::Booksellers->find( $supplierid ); + @missingissues = GetLateOrMissingIssues($supplierid); + foreach my $issue (@missingissues) { + $issue->{cannot_claim} = 1 + unless C4::Serials::can_claim_subscription($issue); } + $template->param( suppliername => $supplier->name ); } -$template->param('letters'=>\@letters,'letter'=>$letter); + $template->param( - order =>$order, suploop => $supplierlist, - phone => $supplierinfo[0]->{phone}, - booksellerfax => $supplierinfo[0]->{booksellerfax}, - bookselleremail => $supplierinfo[0]->{bookselleremail}, - preview => $preview, missingissues => \@missingissues, supplierid => $supplierid, claimletter => $claimletter, - supplierloop => \@supplierinfo, - branchloop => $branchloop, - dateformat => C4::Context->preference("dateformat"), - DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), + additional_fields_for_subscription => $additional_fields, + csv_profiles => Koha::CsvProfiles->search({ type => 'sql', used_for => 'late_issues' }), + letters => $letters, (uc(C4::Context->preference("marcflavour"))) => 1 ); output_html_with_http_headers $input, $cookie, $template->output;