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

(-)a/C4/Members.pm (-21 lines)
Lines 83-90 BEGIN { Link Here
83
83
84
        &IssueSlip
84
        &IssueSlip
85
        GetBorrowersWithEmail
85
        GetBorrowersWithEmail
86
87
        GetOverduesForPatron
88
    );
86
    );
89
87
90
    #Modify data
88
    #Modify data
Lines 1656-1680 WHERE borrowernumber = 0 AND DATEDIFF( NOW(), timestamp ) > ?|; Link Here
1656
    return $cnt eq '0E0'? 0: $cnt;
1654
    return $cnt eq '0E0'? 0: $cnt;
1657
}
1655
}
1658
1656
1659
sub GetOverduesForPatron {
1660
    my ( $borrowernumber ) = @_;
1661
1662
    my $sql = "
1663
        SELECT *
1664
        FROM issues, items, biblio, biblioitems
1665
        WHERE items.itemnumber=issues.itemnumber
1666
          AND biblio.biblionumber   = items.biblionumber
1667
          AND biblio.biblionumber   = biblioitems.biblionumber
1668
          AND issues.borrowernumber = ?
1669
          AND date_due < NOW()
1670
    ";
1671
1672
    my $sth = C4::Context->dbh->prepare( $sql );
1673
    $sth->execute( $borrowernumber );
1674
1675
    return $sth->fetchall_arrayref({});
1676
}
1677
1678
END { }    # module clean-up code here (global destructor)
1657
END { }    # module clean-up code here (global destructor)
1679
1658
1680
1;
1659
1;
(-)a/Koha/Object.pm (-2 / +43 lines)
Lines 190-195 sub unblessed { Link Here
190
    return { $self->_result->get_columns };
190
    return { $self->_result->get_columns };
191
}
191
}
192
192
193
=head3 $object->unblessed_all_relateds
194
195
my $everything_into_one_hashref = $object->unblessed_all_relateds
196
197
The unblessed method only retrieves column' values for the column of the object.
198
In a *few* cases we want to retrieve the information of all the prefetched data.
199
200
=cut
201
202
sub unblessed_all_relateds {
203
    my ($self) = @_;
204
205
    my %data;
206
    my $related_resultsets = $self->_result->{related_resultsets} || {};
207
    my $rs = $self;
208
    while ( $related_resultsets and %$related_resultsets ) {
209
        my @relations = keys %{ $related_resultsets };
210
        if ( @relations ) {
211
            my $relation = $relations[0];
212
            $rs = $rs->related_resultset($relation)->get_cache;
213
            $rs = $rs->[0]; # Does it makes sense to have several values here?
214
            my $object_class = Koha::Object::_get_object_class( $rs->result_class );
215
            my $koha_object = $object_class->_new_from_dbic( $rs );
216
            $related_resultsets = $rs->{related_resultsets};
217
            %data = ( %data, %{ $koha_object->unblessed } );
218
        }
219
    }
220
    %data = ( %data, %{ $self->unblessed } );
221
    return \%data;
222
}
223
193
=head3 $object->_result();
224
=head3 $object->_result();
194
225
195
Returns the internal DBIC Row object
226
Returns the internal DBIC Row object
Lines 221-226 sub _columns { Link Here
221
    return $self->{_columns};
252
    return $self->{_columns};
222
}
253
}
223
254
255
sub _get_object_class {
256
    my ( $type ) = @_;
257
    return unless $type;
258
259
    if( $type->can('koha_object_class') ) {
260
        return $type->koha_object_class;
261
    }
262
    $type =~ s|Schema::Result::||;
263
    return ${type};
264
}
224
265
225
=head3 AUTOLOAD
266
=head3 AUTOLOAD
226
267
Lines 246-258 sub AUTOLOAD { Link Here
246
        }
287
        }
247
    }
288
    }
248
289
249
    my @known_methods = qw( is_changed id in_storage get_column );
290
    my @known_methods = qw( is_changed id in_storage get_column related_resultset );
250
291
251
    Koha::Exceptions::Object::MethodNotCoveredByTests->throw( "The method $method is not covered by tests!" ) unless grep {/^$method$/} @known_methods;
292
    Koha::Exceptions::Object::MethodNotCoveredByTests->throw( "The method $method is not covered by tests!" ) unless grep {/^$method$/} @known_methods;
252
293
253
    my $r = eval { $self->_result->$method(@_) };
294
    my $r = eval { $self->_result->$method(@_) };
254
    if ( $@ ) {
295
    if ( $@ ) {
255
        Koha::Exceptions::Object::MethodNotFound->throw( "No method $method for " . ref($self) );
296
        Koha::Exceptions::Object::MethodNotFound->throw( "No method $method for " . ref($self) . " " . $@ );
256
    }
297
    }
257
    return $r;
298
    return $r;
258
}
299
}
(-)a/members/print_overdues.pl (-2 / +3 lines)
Lines 24-32 use CGI; Link Here
24
use C4::Context;
24
use C4::Context;
25
use C4::Auth;
25
use C4::Auth;
26
use C4::Output;
26
use C4::Output;
27
use C4::Members qw(GetOverduesForPatron);
28
use C4::Overdues qw(parse_overdues_letter);
27
use C4::Overdues qw(parse_overdues_letter);
29
28
29
use Koha::Patrons;
30
30
my $input = new CGI;
31
my $input = new CGI;
31
32
32
my $flagsrequired = { circulate => "circulate_remaining_permissions" };
33
my $flagsrequired = { circulate => "circulate_remaining_permissions" };
Lines 45-51 my ( $template, $loggedinuser, $cookie ) = get_template_and_user( Link Here
45
my $borrowernumber = $input->param('borrowernumber');
46
my $borrowernumber = $input->param('borrowernumber');
46
my $branchcode     = C4::Context->userenv->{'branch'};
47
my $branchcode     = C4::Context->userenv->{'branch'};
47
48
48
my $overdues = GetOverduesForPatron($borrowernumber);
49
my $overdues = Koha::Patrons->find($borrowernumber)->get_overdues->unblessed_all_relateds;
49
50
50
my $letter = parse_overdues_letter(
51
my $letter = parse_overdues_letter(
51
    {
52
    {
(-)a/t/db_dependent/Koha/Patrons.t (-2 / +8 lines)
Lines 517-523 subtest 'search_patrons_to_anonymise & anonymise_issue_history' => sub { Link Here
517
};
517
};
518
518
519
subtest 'get_overdues' => sub {
519
subtest 'get_overdues' => sub {
520
    plan tests => 4;
520
    plan tests => 8;
521
521
522
    my $library = $builder->build( { source => 'Branch' } );
522
    my $library = $builder->build( { source => 'Branch' } );
523
    my ($biblionumber_1) = AddBiblio( MARC::Record->new, '' );
523
    my ($biblionumber_1) = AddBiblio( MARC::Record->new, '' );
Lines 573-578 subtest 'get_overdues' => sub { Link Here
573
    is( $overdues->next->itemnumber, $item_1->{itemnumber}, 'The issue should be returned in the same order as they have been done, first is correct' );
573
    is( $overdues->next->itemnumber, $item_1->{itemnumber}, 'The issue should be returned in the same order as they have been done, first is correct' );
574
    is( $overdues->next->itemnumber, $item_2->{itemnumber}, 'The issue should be returned in the same order as they have been done, second is correct' );
574
    is( $overdues->next->itemnumber, $item_2->{itemnumber}, 'The issue should be returned in the same order as they have been done, second is correct' );
575
575
576
    my $o = $overdues->reset->next;
577
    my $unblessed_overdue = $o->unblessed_all_relateds;
578
    is( exists( $unblessed_overdue->{issuedate} ), 1, 'Fields from the issues table should be filled' );
579
    is( exists( $unblessed_overdue->{itemcallnumber} ), 1, 'Fields from the items table should be filled' );
580
    is( exists( $unblessed_overdue->{title} ), 1, 'Fields from the biblio table should be filled' );
581
    is( exists( $unblessed_overdue->{itemtype} ), 1, 'Fields from the biblioitems table should be filled' );
582
576
    # Clean stuffs
583
    # Clean stuffs
577
    Koha::Issues->search( { borrowernumber => $patron->borrowernumber } )->delete;
584
    Koha::Issues->search( { borrowernumber => $patron->borrowernumber } )->delete;
578
    $patron->delete;
585
    $patron->delete;
579
- 

Return to bug 17553