|
Lines 2808-2813
sub AddRenewal {
Link Here
|
| 2808 |
my $item_object = Koha::Items->find( $itemnumber ); # Should replace $item |
2808 |
my $item_object = Koha::Items->find( $itemnumber ); # Should replace $item |
| 2809 |
my $biblio = $item_object->biblio; |
2809 |
my $biblio = $item_object->biblio; |
| 2810 |
|
2810 |
|
|
|
2811 |
my $schema = Koha::Database->new->schema; |
| 2811 |
my $dbh = C4::Context->dbh; |
2812 |
my $dbh = C4::Context->dbh; |
| 2812 |
|
2813 |
|
| 2813 |
# Find the issues record for this book |
2814 |
# Find the issues record for this book |
|
Lines 2825-2834
sub AddRenewal {
Link Here
|
| 2825 |
my $patron = Koha::Patrons->find( $borrowernumber ) or return; # FIXME Should do more than just return |
2826 |
my $patron = Koha::Patrons->find( $borrowernumber ) or return; # FIXME Should do more than just return |
| 2826 |
my $patron_unblessed = $patron->unblessed; |
2827 |
my $patron_unblessed = $patron->unblessed; |
| 2827 |
|
2828 |
|
|
|
2829 |
$schema->storage->txn_begin; |
| 2830 |
|
| 2828 |
if ( C4::Context->preference('CalculateFinesOnReturn') && $issue->is_overdue ) { |
2831 |
if ( C4::Context->preference('CalculateFinesOnReturn') && $issue->is_overdue ) { |
| 2829 |
_CalculateAndUpdateFine( { issue => $issue, item => $item, borrower => $patron_unblessed } ); |
2832 |
eval{ |
|
|
2833 |
_CalculateAndUpdateFine( { issue => $issue, item => $item, borrower => $patron_unblessed } ); |
| 2834 |
}; |
| 2835 |
if ( $@ ) { |
| 2836 |
$schema->txn_rollback; |
| 2837 |
return; |
| 2838 |
} |
| 2839 |
} |
| 2840 |
eval{ _FixOverduesOnReturn( $borrowernumber, $itemnumber ); }; |
| 2841 |
if ( $@ ) { |
| 2842 |
$schema->txn_rollback; |
| 2843 |
return; |
| 2830 |
} |
2844 |
} |
| 2831 |
_FixOverduesOnReturn( $borrowernumber, $itemnumber ); |
|
|
| 2832 |
|
2845 |
|
| 2833 |
# If the due date wasn't specified, calculate it by adding the |
2846 |
# If the due date wasn't specified, calculate it by adding the |
| 2834 |
# book's loan length to today's date or the current due date |
2847 |
# book's loan length to today's date or the current due date |
|
Lines 2844-2877
sub AddRenewal {
Link Here
|
| 2844 |
|
2857 |
|
| 2845 |
# Update the issues record to have the new due date, and a new count |
2858 |
# Update the issues record to have the new due date, and a new count |
| 2846 |
# of how many times it has been renewed. |
2859 |
# of how many times it has been renewed. |
| 2847 |
my $renews = $issue->renewals + 1; |
2860 |
my ( $charge, $type ); |
| 2848 |
my $sth = $dbh->prepare("UPDATE issues SET date_due = ?, renewals = ?, lastreneweddate = ? |
2861 |
eval { |
| 2849 |
WHERE borrowernumber=? |
2862 |
my $renews = $issue->renewals + 1; |
| 2850 |
AND itemnumber=?" |
2863 |
my $sth = $dbh->prepare("UPDATE issues SET date_due = ?, renewals = ?, lastreneweddate = ? |
| 2851 |
); |
2864 |
WHERE borrowernumber=? |
| 2852 |
|
2865 |
AND itemnumber=?" |
| 2853 |
$sth->execute( $datedue->strftime('%Y-%m-%d %H:%M'), $renews, $lastreneweddate, $borrowernumber, $itemnumber ); |
|
|
| 2854 |
|
| 2855 |
# Update the renewal count on the item, and tell zebra to reindex |
| 2856 |
$renews = $item->{renewals} + 1; |
| 2857 |
ModItem({ renewals => $renews, onloan => $datedue->strftime('%Y-%m-%d %H:%M')}, $item->{biblionumber}, $itemnumber); |
| 2858 |
|
| 2859 |
# Charge a new rental fee, if applicable? |
| 2860 |
my ( $charge, $type ) = GetIssuingCharges( $itemnumber, $borrowernumber ); |
| 2861 |
if ( $charge > 0 ) { |
| 2862 |
my $accountno = getnextacctno( $borrowernumber ); |
| 2863 |
my $manager_id = 0; |
| 2864 |
$manager_id = C4::Context->userenv->{'number'} if C4::Context->userenv; |
| 2865 |
$sth = $dbh->prepare( |
| 2866 |
"INSERT INTO accountlines |
| 2867 |
(date, borrowernumber, accountno, amount, manager_id, |
| 2868 |
description,accounttype, amountoutstanding, itemnumber) |
| 2869 |
VALUES (now(),?,?,?,?,?,?,?,?)" |
| 2870 |
); |
2866 |
); |
| 2871 |
$sth->execute( $borrowernumber, $accountno, $charge, $manager_id, |
2867 |
|
| 2872 |
"Renewal of Rental Item " . $biblio->title . " $item->{'barcode'}", |
2868 |
$sth->execute( $datedue->strftime('%Y-%m-%d %H:%M'), $renews, $lastreneweddate, $borrowernumber, $itemnumber ); |
| 2873 |
'Rent', $charge, $itemnumber ); |
2869 |
|
|
|
2870 |
# Update the renewal count on the item, and tell zebra to reindex |
| 2871 |
$renews = $item->{renewals} + 1; |
| 2872 |
ModItem({ renewals => $renews, onloan => $datedue->strftime('%Y-%m-%d %H:%M')}, $item->{biblionumber}, $itemnumber); |
| 2873 |
|
| 2874 |
# Charge a new rental fee, if applicable? |
| 2875 |
( $charge, $type ) = GetIssuingCharges( $itemnumber, $borrowernumber ); |
| 2876 |
if ( $charge > 0 ) { |
| 2877 |
my $accountno = getnextacctno( $borrowernumber ); |
| 2878 |
my $manager_id = 0; |
| 2879 |
$manager_id = C4::Context->userenv->{'number'} if C4::Context->userenv; |
| 2880 |
$sth = $dbh->prepare( |
| 2881 |
"INSERT INTO accountlines |
| 2882 |
(date, borrowernumber, accountno, amount, manager_id, |
| 2883 |
description,accounttype, amountoutstanding, itemnumber) |
| 2884 |
VALUES (now(),?,?,?,?,?,?,?,?)" |
| 2885 |
); |
| 2886 |
$sth->execute( $borrowernumber, $accountno, $charge, $manager_id, |
| 2887 |
"Renewal of Rental Item " . $biblio->title . " $item->{'barcode'}", |
| 2888 |
'Rent', $charge, $itemnumber ); |
| 2889 |
} |
| 2890 |
}; |
| 2891 |
if ( $@ ) { |
| 2892 |
$schema->txn_rollback; |
| 2893 |
return; |
| 2874 |
} |
2894 |
} |
|
|
2895 |
$schema->txn_commit; |
| 2875 |
|
2896 |
|
| 2876 |
# Send a renewal slip according to checkout alert preferencei |
2897 |
# Send a renewal slip according to checkout alert preferencei |
| 2877 |
if ( C4::Context->preference('RenewalSendNotice') eq '1' ) { |
2898 |
if ( C4::Context->preference('RenewalSendNotice') eq '1' ) { |
| 2878 |
- |
|
|