X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=serials%2Fclaims.pl;h=fbf7743852bb8a5feb84e186e9515d35fe0a441d;hb=3c83e117869e501275fffc88ac10c9e1aee92160;hp=d6a7ce70a027108e6a41321457a13ad58d73857b;hpb=d339abf0bfc334a819818bbb9b4c31f23326cbd1;p=koha.git diff --git a/serials/claims.pl b/serials/claims.pl index d6a7ce70a0..fbf7743852 100755 --- a/serials/claims.pl +++ b/serials/claims.pl @@ -1,93 +1,111 @@ #!/usr/bin/perl -use strict; -use warnings; -use CGI; +# Parts Copyright 2010 Biblibre + +# 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 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. +# +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . + +use Modern::Perl; +use CGI qw ( -utf8 ); use C4::Auth; use C4::Serials; use C4::Acquisition; use C4::Output; -use C4::Bookseller; use C4::Context; use C4::Letters; -my $input = new CGI; +use C4::Koha qw( GetAuthorisedValues ); + +use Koha::AdditionalField; +use Koha::CsvProfiles; + +my $input = CGI->new; my $serialid = $input->param('serialid'); 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'); -my %supplierlist = GetSuppliersWithLateIssues(); -my @select_supplier; # 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", + type => 'intranet', authnotrequired => 0, - flagsrequired => {serials => 1}, + flagsrequired => {serials => 'claim_serials'}, debug => 1, }); -my $supplier_loop = []; -foreach my $s_id (sort {$supplierlist{$a} cmp $supplierlist{$b} } keys %supplierlist){ - my ($count) = GetLateOrMissingIssues($supplierid,q{},$order); - push @{$supplier_loop}, { - id => $s_id, - name => $supplierlist{$s_id} . "($count)", - selected => ( $supplierid && $supplierid == $s_id ), - }; -} -my $letters = GetLetters('claimissues'); -my @letters; -foreach (keys %{$letters}){ - push @letters ,{code=>$_,name=> $letters->{$_}}; +# supplierlist is returned in name order +my $supplierlist = GetSuppliersWithLateIssues(); +for my $s (@{$supplierlist} ) { + $s->{count} = scalar GetLateOrMissingIssues($s->{id}); + if ($supplierid && $s->{id} == $supplierid) { + $s->{selected} = 1; + } } -my $letter=((scalar(@letters)>1) || ($letters[0]->{name}||$letters[0]->{code})); -my ($count2, @missingissues); -if ($supplierid) { - ($count2, @missingissues) = GetLateOrMissingIssues($supplierid,$serialid,$order); +my $additional_fields = Koha::AdditionalField->all( { tablename => 'subscription', searchable => 1 } ); +for my $field ( @$additional_fields ) { + if ( $field->{authorised_value_category} ) { + $field->{authorised_value_choices} = GetAuthorisedValues( $field->{authorised_value_category} ); + } } -my ($singlesupplier,@supplierinfo); -if($supplierid){ - (@supplierinfo)=GetBookSeller($supplierid); -} else { # set up supplierid for the claim links out of main table if all suppliers is chosen - for my $mi (@missingissues){ - $mi->{supplierid} = getsupplierbyserialid($mi->{serialid}); - } -} -my $preview=0; -if($op && $op eq 'preview'){ - $preview = 1; +my @serialnums=$input->multi_param('serialid'); +if (@serialnums) { # i.e. they have been flagged to generate claims + my $err; + eval { + $err = SendAlerts('claimissues',\@serialnums,$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 ); + } } -if ($op eq "send_alert"){ - my @serialnums=$input->param("serialid"); - SendAlerts('claimissues',\@serialnums,$input->param("letter_code")); - my $cntupdate=UpdateClaimdateIssues(\@serialnums); - ### $cntupdate SHOULD be equal to scalar(@$serialnums) - $template->param('SHOWCONFIRMATION' => 1); - $template->param('suppliername' => $suppliername); + +my $letters = GetLetters({ module => 'claimissues' }); + +my @missingissues; +if ($supplierid) { + @missingissues = GetLateOrMissingIssues($supplierid); + foreach my $issue (@missingissues) { + $issue->{cannot_claim} = 1 + unless C4::Serials::can_claim_subscription($issue); + } } -$template->param('letters'=>\@letters,'letter'=>$letter); $template->param( - order =>$order, - supplier_loop => $supplier_loop, - phone => $supplierinfo[0]->{phone}, - booksellerfax => $supplierinfo[0]->{booksellerfax}, - bookselleremail => $supplierinfo[0]->{bookselleremail}, - preview => $preview, + suploop => $supplierlist, missingissues => \@missingissues, supplierid => $supplierid, claimletter => $claimletter, - singlesupplier => $singlesupplier, - supplierloop => \@supplierinfo, - dateformat => C4::Context->preference("dateformat"), - DHTMLcalendar_dateformat => C4::Dates->DHTMLcalendar(), + additional_fields_for_subscription => $additional_fields, + csv_profiles => [ Koha::CsvProfiles->search({ type => 'late_issues' }) ], + letters => $letters, + (uc(C4::Context->preference("marcflavour"))) => 1 ); output_html_with_http_headers $input, $cookie, $template->output;