X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=C4%2FSuggestions.pm;h=ccc0c8e6ac4a9dbba14ae3f2e293ae52169ee304;hb=a1ec82845372cd888021220f056d465e9e65f4f2;hp=01bd3e2b2d9deb60b0559bbbd4711cf2564d7e65;hpb=29eadaa1f7be053c347e02825a3080ba6cbfd9db;p=koha_gimpoz diff --git a/C4/Suggestions.pm b/C4/Suggestions.pm index 01bd3e2b2d..ccc0c8e6ac 100644 --- a/C4/Suggestions.pm +++ b/C4/Suggestions.pm @@ -1,6 +1,7 @@ package C4::Suggestions; # Copyright 2000-2002 Katipo Communications +# Parts Copyright Biblibre 2011 # # This file is part of Koha. # @@ -24,51 +25,27 @@ use CGI; use C4::Context; use C4::Output; -use C4::Dates qw(format_date); +use C4::Dates qw(format_date format_date_in_iso); use C4::SQLHelper qw(:all); use C4::Debug; use C4::Letters; use List::MoreUtils qw; -use base 'Exporter'; # parent would be better there +use C4::Dates qw(format_date_in_iso); +use base qw(Exporter); our $VERSION = 3.01; our @EXPORT = qw< - &ConnectSuggestionAndBiblio - &CountSuggestion - &DelSuggestion - &GetSuggestion - &GetSuggestionByStatus - &GetSuggestionFromBiblionumber - &ModStatus - &ModSuggestion - &NewSuggestion - &SearchSuggestion + ConnectSuggestionAndBiblio + CountSuggestion + DelSuggestion + GetSuggestion + GetSuggestionByStatus + GetSuggestionFromBiblionumber + ModStatus + ModSuggestion + NewSuggestion + SearchSuggestion + DelSuggestionsOlderThan >; -use C4::Dates qw(format_date_in_iso); -use vars qw($VERSION @ISA @EXPORT); - -BEGIN { - # set the version for version checking - $VERSION = 3.01; - require Exporter; - @ISA = qw(Exporter); - @EXPORT = qw( - &NewSuggestion - &SearchSuggestion - &GetSuggestion - &GetSuggestionByStatus - &DelSuggestion - &CountSuggestion - &ModSuggestion - &ConnectSuggestionAndBiblio - &GetSuggestionFromBiblionumber - &ConnectSuggestionAndBiblio - &DelSuggestion - &GetSuggestion - &GetSuggestionByStatus - &GetSuggestionFromBiblionumber - &ModStatus - ); -} =head1 NAME @@ -136,7 +113,7 @@ sub SearchSuggestion { LEFT JOIN borrowers AS U2 ON managedby=U2.borrowernumber LEFT JOIN branches AS B2 ON B2.branchcode=U2.branchcode LEFT JOIN categories AS C2 ON C2.categorycode = U2.categorycode - WHERE STATUS NOT IN ('CLAIMED') + WHERE 1=1 } , map { if ( my $s = $suggestion->{$_} ) { push @sql_params,'%'.$s.'%'; @@ -150,7 +127,7 @@ sub SearchSuggestion { if ($userenv) { if (($userenv->{flags} % 2) != 1 && !$suggestion->{branchcode}){ push @sql_params,$$userenv{branch}; - push @query,q{ and (branchcode = ? or branchcode ='')}; + push @query,q{ and (suggestions.branchcode = ? or suggestions.branchcode ='')}; } } } @@ -170,6 +147,17 @@ sub SearchSuggestion { } } + my $today = C4::Dates->today('iso'); + + foreach ( qw( suggesteddate manageddate accepteddate ) ) { + my $from = $_ . "_from"; + my $to = $_ . "_to"; + if ($$suggestion{$from} || $$suggestion{$to}) { + push @query, " AND suggestions.suggesteddate BETWEEN '" + . (format_date_in_iso($$suggestion{$from}) || 0000-00-00) . "' AND '" . (format_date_in_iso($$suggestion{$to}) || $today) . "'"; + } + } + $debug && warn "@query"; my $sth=$dbh->prepare("@query"); $sth->execute(@sql_params); @@ -379,18 +367,24 @@ Note that there is no function to modify a suggestion. sub ModSuggestion { my ($suggestion)=@_; my $status_update_table=UpdateInTable("suggestions", $suggestion); - # check mail sending. - if ($$suggestion{STATUS}){ - my $letter=C4::Letters::getletter('suggestions',$suggestion->{STATUS}); - if ($letter){ - my $enqueued = C4::Letters::EnqueueLetter({ - letter=>$letter, - borrowernumber=>$suggestion->{suggestedby}, - suggestionid=>$suggestion->{suggestionid}, - LibraryName => C4::Context->preference("LibraryName"), - msg_transport_type=>'email' + + if ($suggestion->{STATUS}) { + # fetch the entire updated suggestion so that we can populate the letter + my $full_suggestion = GetSuggestion($suggestion->{suggestionid}); + my $letter = C4::Letters::getletter('suggestions', $full_suggestion->{STATUS}); + if ($letter) { + C4::Letters::parseletter($letter, 'branches', $full_suggestion->{branchcode}); + C4::Letters::parseletter($letter, 'borrowers', $full_suggestion->{suggestedby}); + C4::Letters::parseletter($letter, 'suggestions', $full_suggestion->{suggestionid}); + C4::Letters::parseletter($letter, 'biblio', $full_suggestion->{biblionumber}); + my $enqueued = C4::Letters::EnqueueLetter({ + letter => $letter, + borrowernumber => $full_suggestion->{suggestedby}, + suggestionid => $full_suggestion->{suggestionid}, + LibraryName => C4::Context->preference("LibraryName"), + message_transport_type => 'email', }); - if (!$enqueued){warn "can't enqueue letter $letter";} + if (!$enqueued){warn "can't enqueue letter $letter";} } } return $status_update_table; @@ -447,13 +441,30 @@ sub DelSuggestion { } } +=head2 DelSuggestionsOlderThan + &DelSuggestionsOlderThan($days) + + Delete all suggestions older than TODAY-$days , that have be accepted or rejected. + +=cut +sub DelSuggestionsOlderThan { + my ($days) = @_; + return if not $days; + my $dbh = C4::Context->dbh; + + my $sth = $dbh->prepare(" + DELETE FROM suggestions WHERE STATUS <> 'ASKED' AND date < ADDDATE(NOW(), ?); + "); + $sth->execute("-$days"); +} + 1; __END__ =head1 AUTHOR -Koha Development Team +Koha Development Team =cut