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

(-)a/circ/pendingreserves.pl (-84 / +60 lines)
Lines 17-29 Link Here
17
# You should have received a copy of the GNU General Public License
17
# You should have received a copy of the GNU General Public License
18
# along with Koha; if not, see <http://www.gnu.org/licenses>.
18
# along with Koha; if not, see <http://www.gnu.org/licenses>.
19
19
20
# Modification by D.Ulm, actually works (as long as indep. branches not turned on)
20
use Modern::Perl;
21
#		Someone let me know what indep. branches is supposed to do and I'll make that part work too
22
#
23
# 		The reserve pull lists *works* as long as not for indepencdant branches, I can fix!
24
25
use strict;
26
#use warnings; FIXME - Bug 2505
27
21
28
use constant PULL_INTERVAL => 2;
22
use constant PULL_INTERVAL => 2;
29
23
Lines 37-45 use Koha::DateUtils; Link Here
37
use DateTime::Duration;
31
use DateTime::Duration;
38
32
39
my $input = new CGI;
33
my $input = new CGI;
40
my $startdate=$input->param('from');
34
my $startdate = $input->param('from');
41
my $enddate=$input->param('to');
35
my $enddate = $input->param('to');
42
my $run_report = ( not defined $input->param('run_report') ) ? 1 : $input->param('run_report');
43
36
44
my $theme = $input->param('theme');    # only used if allowthemeoverride is set
37
my $theme = $input->param('theme');    # only used if allowthemeoverride is set
45
38
Lines 55-66 my ( $template, $loggedinuser, $cookie ) = get_template_and_user( Link Here
55
);
48
);
56
49
57
my $today = dt_from_string;
50
my $today = dt_from_string;
58
$startdate =~ s/^\s+//;
59
$startdate =~ s/\s+$//;
60
$enddate =~ s/^\s+//;
61
$enddate =~ s/\s+$//;
62
51
63
if ( $startdate ) {
52
if ( $startdate ) {
53
    $startdate =~ s/^\s+//;
54
    $startdate =~ s/\s+$//;
64
    $startdate = eval{dt_from_string( $startdate )};
55
    $startdate = eval{dt_from_string( $startdate )};
65
}
56
}
66
unless ( $startdate ){
57
unless ( $startdate ){
Lines 70-75 unless ( $startdate ){ Link Here
70
}
61
}
71
62
72
if ( $enddate ) {
63
if ( $enddate ) {
64
    $enddate =~ s/^\s+//;
65
    $enddate =~ s/\s+$//;
73
    $enddate = eval{dt_from_string( $enddate )};
66
    $enddate = eval{dt_from_string( $enddate )};
74
}
67
}
75
unless ( $enddate ) {
68
unless ( $enddate ) {
Lines 78-109 unless ( $enddate ) { Link Here
78
}
71
}
79
72
80
my @reservedata;
73
my @reservedata;
81
if ( $run_report ) {
74
my $dbh = C4::Context->dbh;
82
    my $dbh    = C4::Context->dbh;
75
my $sqldatewhere = "";
83
    my $sqldatewhere = "";
76
my $startdate_iso = output_pref({ dt => $startdate, dateformat => 'iso', dateonly => 1 });
84
    my $startdate_iso = output_pref({ dt => $startdate, dateformat => 'iso', dateonly => 1 });
77
my $enddate_iso   = output_pref({ dt => $enddate, dateformat => 'iso', dateonly => 1 });
85
    my $enddate_iso   = output_pref({ dt => $enddate, dateformat => 'iso', dateonly => 1 });
86
    $debug and warn $startdate_iso. "\n" . $enddate_iso;
87
    my @query_params = ();
88
    if ($startdate_iso) {
89
        $sqldatewhere .= " AND reservedate >= ?";
90
        push @query_params, $startdate_iso;
91
    }
92
    if ($enddate_iso) {
93
        $sqldatewhere .= " AND reservedate <= ?";
94
        push @query_params, $enddate_iso;
95
    }
96
78
97
    my $strsth =
79
$debug and warn $startdate_iso. "\n" . $enddate_iso;
80
81
my @query_params = ();
82
83
if ($startdate_iso) {
84
    $sqldatewhere .= " AND reservedate >= ?";
85
    push @query_params, $startdate_iso;
86
}
87
if ($enddate_iso) {
88
    $sqldatewhere .= " AND reservedate <= ?";
89
    push @query_params, $enddate_iso;
90
}
91
92
my $strsth =
98
    "SELECT min(reservedate) as l_reservedate,
93
    "SELECT min(reservedate) as l_reservedate,
99
            reserves.borrowernumber as borrowernumber,
94
            reserves.borrowernumber as borrowernumber,
100
            GROUP_CONCAT(DISTINCT items.holdingbranch 
95
            GROUP_CONCAT(DISTINCT items.holdingbranch 
101
                    ORDER BY items.itemnumber SEPARATOR '|') l_holdingbranch,
96
                    ORDER BY items.itemnumber SEPARATOR '|') l_holdingbranch,
102
            reserves.biblionumber,
97
            reserves.biblionumber,
103
            reserves.branchcode,
98
            reserves.branchcode as l_branch,
104
            GROUP_CONCAT(DISTINCT reserves.branchcode 
105
                    ORDER BY items.itemnumber SEPARATOR ', ') l_branch,
106
            items.holdingbranch as branch,
107
            GROUP_CONCAT(DISTINCT items.itype 
99
            GROUP_CONCAT(DISTINCT items.itype 
108
                    ORDER BY items.itemnumber SEPARATOR '|') l_itype,
100
                    ORDER BY items.itemnumber SEPARATOR '|') l_itype,
109
            GROUP_CONCAT(DISTINCT items.location 
101
            GROUP_CONCAT(DISTINCT items.location 
Lines 114-124 if ( $run_report ) { Link Here
114
                    ORDER BY items.itemnumber SEPARATOR '<br/>') l_enumchron,
106
                    ORDER BY items.itemnumber SEPARATOR '<br/>') l_enumchron,
115
            GROUP_CONCAT(DISTINCT items.copynumber
107
            GROUP_CONCAT(DISTINCT items.copynumber
116
                    ORDER BY items.itemnumber SEPARATOR '<br/>') l_copynumber,
108
                    ORDER BY items.itemnumber SEPARATOR '<br/>') l_copynumber,
117
            items.itemnumber,
118
            notificationdate,
119
            reminderdate,
120
            max(priority) as priority,
121
            reserves.found,
122
            biblio.title,
109
            biblio.title,
123
            biblio.author,
110
            biblio.author,
124
            count(DISTINCT items.itemnumber) as icount,
111
            count(DISTINCT items.itemnumber) as icount,
Lines 133-139 if ( $run_report ) { Link Here
133
    $sqldatewhere
120
    $sqldatewhere
134
    AND (reserves.itemnumber IS NULL OR reserves.itemnumber = items.itemnumber)
121
    AND (reserves.itemnumber IS NULL OR reserves.itemnumber = items.itemnumber)
135
    AND items.itemnumber NOT IN (SELECT itemnumber FROM branchtransfers where datearrived IS NULL)
122
    AND items.itemnumber NOT IN (SELECT itemnumber FROM branchtransfers where datearrived IS NULL)
136
    AND items.itemnumber NOT IN (select itemnumber FROM reserves where found='W')
123
    AND items.itemnumber NOT IN (select itemnumber FROM reserves where found IS NOT NULL)
137
    AND issues.itemnumber IS NULL
124
    AND issues.itemnumber IS NULL
138
    AND reserves.priority <> 0 
125
    AND reserves.priority <> 0 
139
    AND reserves.suspend = 0
126
    AND reserves.suspend = 0
Lines 143-201 if ( $run_report ) { Link Here
143
    #    multiple patrons have a hold on an item
130
    #    multiple patrons have a hold on an item
144
131
145
132
146
    if (C4::Context->preference('IndependentBranches')){
133
if (C4::Context->preference('IndependentBranches')){
147
        $strsth .= " AND items.holdingbranch=? ";
134
    $strsth .= " AND items.holdingbranch=? ";
148
        push @query_params, C4::Context->userenv->{'branch'};
135
    push @query_params, C4::Context->userenv->{'branch'};
149
    }
136
}
150
    $strsth .= " GROUP BY reserves.biblionumber ORDER BY biblio.title ";
137
$strsth .= " GROUP BY reserves.biblionumber ORDER BY biblio.title ";
151
138
152
    my $sth = $dbh->prepare($strsth);
139
my $sth = $dbh->prepare($strsth);
153
    $sth->execute(@query_params);
140
$sth->execute(@query_params);
154
141
155
    while ( my $data = $sth->fetchrow_hashref ) {
142
while ( my $data = $sth->fetchrow_hashref ) {
156
        my $record = Koha::Biblios->find($data->{biblionumber});
143
    my $record = Koha::Biblios->find($data->{biblionumber});
157
        if ($record){
144
    if ($record){
158
            $data->{subtitle} = [ $record->subtitles ];
145
        $data->{subtitle} = [ $record->subtitles ];
159
        }
160
        push(
161
            @reservedata,
162
            {
163
                reservedate     => $data->{l_reservedate},
164
                priority        => $data->{priority},
165
                name            => $data->{l_patron},
166
                title           => $data->{title},
167
                subtitle        => $data->{subtitle},
168
                author          => $data->{author},
169
                borrowernumber  => $data->{borrowernumber},
170
                itemnum         => $data->{itemnumber},
171
                phone           => $data->{phone},
172
                email           => $data->{email},
173
                biblionumber    => $data->{biblionumber},
174
                statusw         => ( $data->{found} eq "W" ),
175
                statusf         => ( $data->{found} eq "F" ),
176
                holdingbranches => [split('\|', $data->{l_holdingbranch})],,
177
                branch          => $data->{l_branch},
178
                itemcallnumber  => $data->{l_itemcallnumber},
179
                enumchron       => $data->{l_enumchron},
180
                copyno          => $data->{l_copynumber},
181
                notificationdate=> $data->{notificationdate},
182
                reminderdate    => $data->{reminderdate},
183
                count           => $data->{icount},
184
                rcount          => $data->{rcount},
185
                pullcount       => $data->{icount} <= $data->{rcount} ? $data->{icount} : $data->{rcount},
186
                itypes          => [split('\|', $data->{l_itype})],
187
                locations       => [split('\|', $data->{l_location})],
188
            }
189
        );
190
    }
146
    }
191
    $sth->finish;
147
    push(
148
        @reservedata, {
149
            reservedate     => $data->{l_reservedate},
150
            name            => $data->{l_patron},
151
            title           => $data->{title},
152
            subtitle        => $data->{subtitle},
153
            author          => $data->{author},
154
            borrowernumber  => $data->{borrowernumber},
155
            biblionumber    => $data->{biblionumber},
156
            holdingbranches => [split('\|', $data->{l_holdingbranch})],
157
            branch          => $data->{l_branch},
158
            itemcallnumber  => $data->{l_itemcallnumber},
159
            enumchron       => $data->{l_enumchron},
160
            copyno          => $data->{l_copynumber},
161
            count           => $data->{icount},
162
            rcount          => $data->{rcount},
163
            pullcount       => $data->{icount} <= $data->{rcount} ? $data->{icount} : $data->{rcount},
164
            itypes          => [split('\|', $data->{l_itype})],
165
            locations       => [split('\|', $data->{l_location})],
166
        }
167
    );
192
}
168
}
169
$sth->finish;
193
170
194
$template->param(
171
$template->param(
195
    todaysdate          => $today,
172
    todaysdate          => $today,
196
    from                => $startdate,
173
    from                => $startdate,
197
    to                  => $enddate,
174
    to                  => $enddate,
198
    run_report          => $run_report,
199
    reserveloop         => \@reservedata,
175
    reserveloop         => \@reservedata,
200
    "BiblioDefaultView".C4::Context->preference("BiblioDefaultView") => 1,
176
    "BiblioDefaultView".C4::Context->preference("BiblioDefaultView") => 1,
201
    HoldsToPullStartDate => C4::Context->preference('HoldsToPullStartDate') || PULL_INTERVAL,
177
    HoldsToPullStartDate => C4::Context->preference('HoldsToPullStartDate') || PULL_INTERVAL,
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/pendingreserves.tt (-5 / +1 lines)
Lines 82-89 $(document).ready(function() { Link Here
82
    <div id="yui-main">
82
    <div id="yui-main">
83
    <div class="yui-b">
83
    <div class="yui-b">
84
84
85
<h2>Holds to pull[% IF ( run_report ) %] placed between [% from | $KohaDates %] and [% to | $KohaDates %][% END %]</h2>
85
<h2>Holds to pull placed between [% from | $KohaDates %] and [% to | $KohaDates %]</h2>
86
[% IF ( run_report ) %]
87
<h3>Reported on [% todaysdate | $KohaDates %]</h3>
86
<h3>Reported on [% todaysdate | $KohaDates %]</h3>
88
<p>The following holds have not been filled. Please retrieve them and check them in.</p>
87
<p>The following holds have not been filled. Please retrieve them and check them in.</p>
89
<div class="searchresults">
88
<div class="searchresults">
Lines 143-149 $(document).ready(function() { Link Here
143
        </td>
142
        </td>
144
        <td>
143
        <td>
145
            <span title="[% reserveloo.reservedate %]">[% reserveloo.reservedate | $KohaDates %] in [% Branches.GetName ( reserveloo.branch ) %]</span>
144
            <span title="[% reserveloo.reservedate %]">[% reserveloo.reservedate | $KohaDates %] in [% Branches.GetName ( reserveloo.branch ) %]</span>
146
            [% IF ( reserveloo.statusw ) %]<p>Waiting</p>[% END %][% IF ( reserveloo.statusf ) %]<p>Fulfilled</p>[% END %]
147
        </td>
145
        </td>
148
        </tr>
146
        </tr>
149
        [% END %]
147
        [% END %]
Lines 168-174 $(document).ready(function() { Link Here
168
        <b>No items found.</b>
166
        <b>No items found.</b>
169
    [% END %]
167
    [% END %]
170
</div>
168
</div>
171
[% END %]
172
169
173
</div>
170
</div>
174
</div>
171
</div>
175
- 

Return to bug 18079