# 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 warnings; FIXME - Bug 2505
+use Modern::Perl;
use CGI qw ( -utf8 );
use C4::Context;
use C4::Output;
-use C4::Debug;
use C4::Letters;
use C4::Biblio qw( GetMarcFromKohaField );
-use Koha::DateUtils;
+use Koha::DateUtils qw( dt_from_string );
use Koha::Suggestions;
-use List::MoreUtils qw(any);
use base qw(Exporter);
our @EXPORT = qw(
ConnectSuggestionAndBiblio
- CountSuggestion
DelSuggestion
GetSuggestion
GetSuggestionByStatus
U2.email AS emailmanagedby,
U2.branchcode AS branchcodemanagedby,
U2.borrowernumber AS borrnummanagedby,
+ U3.surname AS surnamelastmodificationby,
+ U3.firstname AS firstnamelastmodificationby,
BU.budget_name AS budget_name
FROM suggestions
LEFT JOIN borrowers AS U1 ON suggestedby=U1.borrowernumber
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
+ LEFT JOIN borrowers AS U3 ON lastmodificationby=U3.borrowernumber
LEFT JOIN aqbudgets AS BU ON budgetid=BU.budget_id
WHERE 1=1
}
}
# filter on date fields
+ my $dtf = Koha::Database->new->schema->storage->datetime_parser;
foreach my $field (qw( suggesteddate manageddate accepteddate )) {
my $from = $field . "_from";
my $to = $field . "_to";
my $from_dt;
$from_dt = eval { dt_from_string( $suggestion->{$from} ) } if ( $suggestion->{$from} );
- my $from_sql = '0000-00-00';
- $from_sql = output_pref({ dt => $from_dt, dateformat => 'iso', dateonly => 1 })
- if ($from_dt);
- $debug && warn "SQL for start date ($field): $from_sql";
- if ( $suggestion->{$from} || $suggestion->{$to} ) {
- push @query, qq{ AND suggestions.$field BETWEEN ? AND ? };
- push @sql_params, $from_sql;
- push @sql_params,
- output_pref({ dt => dt_from_string( $suggestion->{$to} ), dateformat => 'iso', dateonly => 1 }) || output_pref({ dt => dt_from_string, dateformat => 'iso', dateonly => 1 });
+ my $to_dt;
+ $to_dt = eval { dt_from_string( $suggestion->{$to} ) } if ( $suggestion->{$to} );
+ if ( $from_dt ) {
+ push @query, qq{ AND suggestions.$field >= ?};
+ push @sql_params, $dtf->format_date($from_dt);
+ }
+ if ( $to_dt ) {
+ push @query, qq{ AND suggestions.$field <= ?};
+ push @sql_params, $dtf->format_date($to_dt);
}
}
- $debug && warn "@query";
+ # By default do not search for archived suggestions
+ unless ( exists $suggestion->{archived} && $suggestion->{archived} ) {
+ push @query, q{ AND suggestions.archived = 0 };
+ }
+
my $sth = $dbh->prepare("@query");
$sth->execute(@sql_params);
my @results;
LEFT JOIN categories AS C1 ON C1.categorycode=U1.categorycode
LEFT JOIN branches AS B1 on B1.branchcode=U1.branchcode
WHERE status = ?
+ ORDER BY suggestionid
};
# filter on branch
return $results;
}
-=head2 CountSuggestion
-
-&CountSuggestion($status)
-
-Count the number of aqorders with the status given on input argument.
-the arg status can be :
-
-=over 2
-
-=item * ASKED : asked by the user, not dealed by the librarian
-
-=item * ACCEPTED : accepted by the librarian, but not yet ordered
-
-=item * REJECTED : rejected by the librarian (definitive status)
-
-=item * ORDERED : ordered by the librarian (acquisition module)
-
-=back
-
-return :
-the number of suggestion with this status.
-
-=cut
-
-sub CountSuggestion {
- my ($status) = @_;
- my $dbh = C4::Context->dbh;
- my $sth;
- my $userenv = C4::Context->userenv;
- if ( C4::Context->preference("IndependentBranches")
- && !C4::Context->IsSuperLibrarian() )
- {
- my $query = q{
- SELECT count(*)
- FROM suggestions
- LEFT JOIN borrowers ON borrowers.borrowernumber=suggestions.suggestedby
- WHERE STATUS=?
- AND (suggestions.branchcode='' OR suggestions.branchcode=?)
- };
- $sth = $dbh->prepare($query);
- $sth->execute( $status, $userenv->{branch} );
- }
- else {
- my $query = q{
- SELECT count(*)
- FROM suggestions
- WHERE STATUS=?
- };
- $sth = $dbh->prepare($query);
- $sth->execute($status);
- }
- my ($result) = $sth->fetchrow;
- return $result;
-}
-
=head2 NewSuggestion
if ( $emailpurchasesuggestions eq "BranchEmailAddress" ) {
my $library =
Koha::Libraries->find( $full_suggestion->{branchcode} );
- $toaddress =
- $library->branchreplyto
- || $library->branchemail
- || C4::Context->preference('ReplytoDefault')
- || C4::Context->preference('KohaAdminEmailAddress');
+ $toaddress = $library->inbound_email_address;
}
elsif ( $emailpurchasesuggestions eq "KohaAdminEmailAddress" ) {
$toaddress = C4::Context->preference('ReplytoDefault')
};
return 0 if $@;
- if ( $suggestion->{STATUS} ) {
+ if ( $suggestion->{STATUS} && $suggestion_object->suggestedby ) {
# fetch the entire updated suggestion so that we can populate the letter
my $full_suggestion = GetSuggestion( $suggestion->{suggestionid} );
+
my $patron = Koha::Patrons->find( $full_suggestion->{suggestedby} );
my $transport = (C4::Context->preference("FallbackToSMSIfNoEmail")) && ($patron->smsalertnumber) && (!$patron->email) ? 'sms' : 'email';