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

(-)a/Koha/Account.pm (-14 / +24 lines)
Lines 64-69 Koha::Account->new( { patron_id => $borrowernumber } )->pay( Link Here
64
        lines       => $lines, # Arrayref of Koha::Account::Line objects to pay
64
        lines       => $lines, # Arrayref of Koha::Account::Line objects to pay
65
        credit_type => $type,  # credit_type_code code
65
        credit_type => $type,  # credit_type_code code
66
        offset_type => $offset_type,    # offset type code
66
        offset_type => $offset_type,    # offset type code
67
        item_id     => $itemnumber,     # pass the itemnumber if this is a credit pertianing to a specific item (i.e LOST_FOUND)
67
    }
68
    }
68
);
69
);
69
70
Lines 82-90 sub pay { Link Here
82
    my $credit_type   = $params->{credit_type};
83
    my $credit_type   = $params->{credit_type};
83
    my $offset_type   = $params->{offset_type} || $type eq 'WRITEOFF' ? 'Writeoff' : 'Payment';
84
    my $offset_type   = $params->{offset_type} || $type eq 'WRITEOFF' ? 'Writeoff' : 'Payment';
84
    my $cash_register = $params->{cash_register};
85
    my $cash_register = $params->{cash_register};
86
    my $item_id       = $params->{item_id};
85
87
86
    my $userenv = C4::Context->userenv;
88
    my $userenv = C4::Context->userenv;
87
89
90
    $credit_type ||=
91
      $type eq 'WRITEOFF'
92
      ? 'WRITEOFF'
93
      : 'PAYMENT';
94
88
    my $patron = Koha::Patrons->find( $self->{patron_id} );
95
    my $patron = Koha::Patrons->find( $self->{patron_id} );
89
96
90
    my $manager_id = $userenv ? $userenv->{number} : 0;
97
    my $manager_id = $userenv ? $userenv->{number} : 0;
Lines 115-126 sub pay { Link Here
115
        $balance_remaining = $balance_remaining - $amount_to_pay;
122
        $balance_remaining = $balance_remaining - $amount_to_pay;
116
123
117
        # Same logic exists in Koha::Account::Line::apply
124
        # Same logic exists in Koha::Account::Line::apply
118
        if (   $new_amountoutstanding == 0
125
        if ( C4::Context->preference('MarkLostItemsAsReturned') =~ m|onpayment|
119
            && $fine->itemnumber
120
            && $fine->debit_type_code
126
            && $fine->debit_type_code
121
            && ( $fine->debit_type_code eq 'LOST' ) )
127
            && $fine->debit_type_code eq 'LOST'
128
            && $new_amountoutstanding == 0
129
            && $fine->itemnumber
130
            && !(  $credit_type eq 'LOST_FOUND'
131
                && $item_id == $fine->itemnumber ) )
122
        {
132
        {
123
            C4::Circulation::ReturnLostItem( $self->{patron_id}, $fine->itemnumber );
133
            C4::Circulation::ReturnLostItem( $self->{patron_id},
134
                $fine->itemnumber );
124
        }
135
        }
125
136
126
        my $account_offset = Koha::Account::Offset->new(
137
        my $account_offset = Koha::Account::Offset->new(
Lines 174-185 sub pay { Link Here
174
        $fine->amountoutstanding( $old_amountoutstanding - $amount_to_pay );
185
        $fine->amountoutstanding( $old_amountoutstanding - $amount_to_pay );
175
        $fine->store();
186
        $fine->store();
176
187
177
        if (   $fine->amountoutstanding == 0
188
        if ( C4::Context->preference('MarkLostItemsAsReturned') =~ m|onpayment|
178
            && $fine->itemnumber
179
            && $fine->debit_type_code
189
            && $fine->debit_type_code
180
            && ( $fine->debit_type_code eq 'LOST' ) )
190
            && $fine->debit_type_code eq 'LOST'
191
            && $fine->amountoutstanding == 0
192
            && $fine->itemnumber
193
            && !(  $credit_type eq 'LOST_FOUND'
194
                && $item_id == $fine->itemnumber ) )
181
        {
195
        {
182
            C4::Circulation::ReturnLostItem( $self->{patron_id}, $fine->itemnumber );
196
            C4::Circulation::ReturnLostItem( $self->{patron_id},
197
                $fine->itemnumber );
183
        }
198
        }
184
199
185
        my $account_offset = Koha::Account::Offset->new(
200
        my $account_offset = Koha::Account::Offset->new(
Lines 216-226 sub pay { Link Here
216
        last unless $balance_remaining > 0;
231
        last unless $balance_remaining > 0;
217
    }
232
    }
218
233
219
    $credit_type ||=
220
      $type eq 'WRITEOFF'
221
      ? 'WRITEOFF'
222
      : 'PAYMENT';
223
224
    $description ||= $type eq 'WRITEOFF' ? 'Writeoff' : q{};
234
    $description ||= $type eq 'WRITEOFF' ? 'Writeoff' : q{};
225
235
226
    my $payment = Koha::Account::Line->new(
236
    my $payment = Koha::Account::Line->new(
Lines 237-242 sub pay { Link Here
237
            branchcode        => $library_id,
247
            branchcode        => $library_id,
238
            register_id       => $cash_register,
248
            register_id       => $cash_register,
239
            note              => $note,
249
            note              => $note,
250
            itemnumber        => $item_id,
240
        }
251
        }
241
    )->store();
252
    )->store();
242
253
243
- 

Return to bug 24474