View | Details | Raw Unified | Return to bug 13014
Collapse All | Expand All

(-)a/misc/cronjobs/notice_unprocessed_suggestions.pl (-1 / +139 lines)
Line 0 Link Here
0
- 
1
#!/usr/bin/perl
2
3
use Modern::Perl;
4
5
use Pod::Usage;
6
use Getopt::Long;
7
8
use C4::Budgets qw( GetBudget );
9
use C4::Members qw( GetMember );
10
use C4::Suggestions qw( GetUnprocessedSuggestions );
11
12
my ( $help, $verbose, $confirm, @days );
13
GetOptions(
14
    'h|help'    => \$help,
15
    'v|verbose' => \$verbose,
16
    'days:s'    => \@days,
17
    'c|confirm' => \$confirm,
18
) || pod2usage(1);
19
20
if ($help) {
21
    pod2usage(1);
22
}
23
24
unless (@days) {
25
    pod2usage(q{At least one day parameter should be given});
26
    exit;
27
}
28
29
unless ($confirm) {
30
    say "Doing a dry run; no email will be sent.";
31
    say "Run again with --confirm to sent emails.";
32
    $verbose = 1 unless $verbose;
33
}
34
35
for my $number_of_days (@days) {
36
    say "Searching suggestions suggested $number_of_days ago" if $verbose;
37
38
    my $suggestions = C4::Suggestions::GetUnprocessedSuggestions($number_of_days);
39
40
    say "No suggestion found" if $verbose and not @$suggestions;
41
42
    for my $suggestion (@$suggestions) {
43
44
        say "Suggestion $suggestion->{suggestionid} should be processed" if $verbose;
45
46
        my $budget = C4::Budgets::GetBudget( $suggestion->{budgetid} );
47
        my $patron = C4::Members::GetMember( borrowernumber => $budget->{budget_owner_id} );
48
        my $email_address =
49
          C4::Members::GetNoticeEmailAddress( $budget->{budget_owner_id} );
50
        my $library = C4::Branch::GetBranchDetail( $patron->{branchcode} );
51
        my $admin_email_address = $library->{branchemail}
52
          || C4::Context->preference('KohaAdminEmailAddress');
53
54
        if ($email_address) {
55
            say "Patron $patron->{borrowernumber} is going to be notified" if $verbose;
56
            my $letter = C4::Letters::GetPreparedLetter(
57
                module      => 'suggestions',
58
                letter_code => 'TO_PROCESS',
59
                branchcode  => $patron->{branchcode},
60
                tables      => {
61
                    suggestions => $suggestion->{suggestionid},
62
                    branches    => $patron->{branchcode},
63
                    borrowers   => $patron->{borrowernumber},
64
                },
65
            );
66
            if ( $confirm ) {
67
                C4::Letters::EnqueueLetter(
68
                    {
69
                        letter                 => $letter,
70
                        borrowernumber         => $patron->{borrowernumber},
71
                        message_transport_type => 'email',
72
                        from_address           => $admin_email_address,
73
                    }
74
                );
75
            }
76
        } else {
77
            say "Patron $patron->{borrowernumber} does not have an email address" if $verbose;
78
        }
79
    }
80
81
}
82
83
=head1 NAME
84
85
notice_unprocessed_suggestions.pl - Generate notification for unprocessed suggestions.
86
87
The budget owner will be notified.
88
89
The letter template 'TO_PROCESS' will be used.
90
91
=head1 SYNOPSIS
92
93
notice_unprocessed_suggestions.pl [-h|--help] [-v|--verbose] [-c|--confirm] [--days=NUMBER_OF_DAYS]
94
95
=head1 OPTIONS
96
97
=over
98
99
=item B<-h|--help>
100
101
Print a brief help message
102
103
=item B<-c|--confirm>
104
105
This flag must be provided in order for the script to actually
106
generate notices.  If it is not supplied, the script will
107
only report on the patron it would have noticed.
108
109
=item B<--days>
110
111
This parameter is mandatory.
112
It must contain an integer representing the number of days elapsed since the last modification of suggestions to process.
113
114
=item B<-v|--verbose>
115
116
Verbose mode.
117
118
=back
119
120
=head1 AUTHOR
121
122
Jonathan Druart <jonathan.druart@biblibre.com>
123
124
=head1 COPYRIGHT
125
126
Copyright 2014 BibLibre
127
128
=head1 LICENSE
129
130
This file is part of Koha.
131
132
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
133
Foundation; either version 3 of the License, or (at your option) any later version.
134
135
You should have received a copy of the GNU General Public License along
136
with Koha; if not, write to the Free Software Foundation, Inc.,
137
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
138
139
=cut

Return to bug 13014