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

(-)a/C4/Members.pm (+62 lines)
Lines 101-106 BEGIN { Link Here
101
        &GetMessagesCount
101
        &GetMessagesCount
102
102
103
        &IssueSlip
103
        &IssueSlip
104
        &FineSlip
104
        GetBorrowersWithEmail
105
        GetBorrowersWithEmail
105
106
106
        HasOverdues
107
        HasOverdues
Lines 2405-2410 sub IssueSlip { Link Here
2405
    );
2406
    );
2406
}
2407
}
2407
2408
2409
2410
sub GetBorrowerFines {
2411
    my ($borrowernumber) = @_;
2412
    my $dbh       = C4::Context->dbh;
2413
    my $query = qq{
2414
        SELECT * FROM accountlines
2415
        LEFT JOIN borrowers ON borrowers.borrowernumber = accountlines.borrowernumber
2416
        LEFT JOIN items ON accountlines.itemnumber = items.itemnumber
2417
        WHERE accountlines.borrowernumber = ?
2418
        ORDER BY accountlines.timestamp
2419
    };
2420
    my $sth = $dbh->prepare( $query );
2421
    $sth->execute( $borrowernumber );
2422
    my $data = $sth->fetchall_arrayref({});
2423
    return $data;
2424
}
2425
2426
sub FineSlip {
2427
    my ($borrowernumber, $branch) = @_;
2428
2429
    #my $now       = POSIX::strftime("%Y-%m-%d", localtime);
2430
2431
    my $issueslist = GetBorrowerFines($borrowernumber);
2432
2433
    my $total = 0.0;
2434
2435
    foreach my $it (@$issueslist){
2436
        my $dt = dt_from_string( $it->{'date'} );
2437
        $it->{'date_due'} = output_pref({ dt => $dt, dateonly => 1 });
2438
        $it->{'amount'} = sprintf('%.2f', $it->{'amount'});
2439
        $total = $total + $it->{'amount'};
2440
        $it->{'barcode'} = '-' if (!defined($it->{'barcode'}));
2441
    }
2442
    my @issues = sort { $b->{'timestamp'} <=> $a->{'timestamp'} } @$issueslist;
2443
2444
    my %repeat = (
2445
        'fines' => [ map {
2446
            'fines' => $_,
2447
            'borrowers' => $_,
2448
            'items' => $_
2449
                     }, @issues ],
2450
        );
2451
2452
    return  C4::Letters::GetPreparedLetter (
2453
        module => 'circulation',
2454
        letter_code => 'FINESLIP',
2455
        branchcode => $branch,
2456
        tables => {
2457
            'branches'    => $branch,
2458
            'borrowers'   => $borrowernumber,
2459
        },
2460
        substitute => {
2461
            'total.amount' => sprintf('%.2f', $total),
2462
            'total.fines' => scalar(@issues)
2463
        },
2464
        repeat => \%repeat,
2465
        message_transport_type => 'print',
2466
    );
2467
}
2468
2469
2408
=head2 GetBorrowersWithEmail
2470
=head2 GetBorrowersWithEmail
2409
2471
2410
    ([$borrnum,$userid], ...) = GetBorrowersWithEmail('me@example.com');
2472
    ([$borrnum,$userid], ...) = GetBorrowersWithEmail('me@example.com');
(-)a/installer/data/mysql/en/mandatory/sample_notices.sql (+15 lines)
Lines 142-144 Thank you. Link Here
142
142
143
Your library.'
143
Your library.'
144
);
144
);
145
146
INSERT INTO  letter (module, code, branchcode, name, is_html, title, content, message_transport_type)
147
VALUES ( 'circulation', 'FINESLIP', '', 'Patron fines -slip', '1', 'Fines', '<<borrowers.firstname>> <<borrowers.surname>><br>
148
<<borrowers.cardnumber>><br>
149
Fines: <<total.fines>>
150
<ul>
151
<fines>
152
<li><<fines.date_due>>, <<fines.amount>><br>
153
Bar code: <<items.barcode>><br>
154
<<fines.description>>
155
</fines>
156
</ul>
157
Total: <<total.amount>>
158
', 'print'
159
);
(-)a/installer/data/mysql/updatedatabase.pl (+21 lines)
Lines 8560-8565 if ( CheckVersion($DBversion) ) { Link Here
8560
    SetVersion($DBversion);
8560
    SetVersion($DBversion);
8561
}
8561
}
8562
8562
8563
$DBversion = "3.17.00.XXX";
8564
if ( CheckVersion($DBversion) ) {
8565
    $dbh->do("
8566
INSERT INTO  letter (module, code, branchcode, name, is_html, title, content, message_transport_type)
8567
VALUES ( 'circulation', 'FINESLIP', '', 'Patron fines -slip', '1', 'Fines', '<<borrowers.firstname>> <<borrowers.surname>><br>
8568
<<borrowers.cardnumber>><br>
8569
Fines: <<total.fines>>
8570
<ul>
8571
<fines>
8572
<li><<fines.date_due>>, <<fines.amount>><br>
8573
Bar code: <<items.barcode>><br>
8574
<<fines.description>>
8575
</fines>
8576
</ul>
8577
Total: <<total.amount>>
8578
', 'print'
8579
);");
8580
    print "Upgrade to $DBversion done (Bug 12285 - Allow easy printing of patron fines slip)\n";
8581
    SetVersion($DBversion);
8582
}
8583
8563
=head1 FUNCTIONS
8584
=head1 FUNCTIONS
8564
8585
8565
=head2 TableExists($table)
8586
=head2 TableExists($table)
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/members-toolbar.inc (+6 lines)
Lines 38-43 $(document).ready(function(){ Link Here
38
        $(".btn-group").removeClass("open");
38
        $(".btn-group").removeClass("open");
39
        return false;
39
        return false;
40
    });
40
    });
41
    $("#printfineslip").click(function(){
42
        printx_window("fineslip");
43
        $(".btn-group").removeClass("open");
44
        return false;
45
    });
41
    $("#searchtohold").click(function(){
46
    $("#searchtohold").click(function(){
42
        searchToHold();
47
        searchToHold();
43
        return false;
48
        return false;
Lines 124-129 function searchToHold(){ Link Here
124
                [% IF ( CAN_user_borrowers ) %]<li><a id="printsummary" href="#">Print summary</a></li>[% END %]
129
                [% IF ( CAN_user_borrowers ) %]<li><a id="printsummary" href="#">Print summary</a></li>[% END %]
125
                <li><a id="printslip" href="#">Print slip</a></li>
130
                <li><a id="printslip" href="#">Print slip</a></li>
126
                <li><a id="printquickslip" href="#">Print quick slip</a></li>
131
                <li><a id="printquickslip" href="#">Print quick slip</a></li>
132
                <li><a id="printfineslip" href="#">Print fines</a></li>
127
            </ul>
133
            </ul>
128
    </div>
134
    </div>
129
    <a id="searchtohold" class="btn btn-small" href="#"><i class="icon-search"></i> Search to hold</a>
135
    <a id="searchtohold" class="btn btn-small" href="#"><i class="icon-search"></i> Search to hold</a>
(-)a/members/printslip.pl (-2 / +5 lines)
Lines 76-82 my ( $template, $loggedinuser, $cookie ) = get_template_and_user( Link Here
76
my $borrowernumber = $input->param('borrowernumber');
76
my $borrowernumber = $input->param('borrowernumber');
77
my $branch=C4::Context->userenv->{'branch'};
77
my $branch=C4::Context->userenv->{'branch'};
78
my ($slip, $is_html);
78
my ($slip, $is_html);
79
if (my $letter = IssueSlip ($session->param('branch') || $branch, $borrowernumber, $print eq "qslip")) {
79
if ($print eq 'fineslip') {
80
    my $letter = FineSlip($borrowernumber, $session->param('branch') || $branch);
81
    $slip = $letter->{content};
82
    $is_html = $letter->{is_html};
83
} elsif (my $letter = IssueSlip ($session->param('branch') || $branch, $borrowernumber, $print eq "qslip")) {
80
    $slip = $letter->{content};
84
    $slip = $letter->{content};
81
    $is_html = $letter->{is_html};
85
    $is_html = $letter->{is_html};
82
}
86
}
83
- 

Return to bug 12285