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

(-)a/C4/Circulation.pm (-29 / +49 lines)
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
- 

Return to bug 20086