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

(-)a/C4/Accounts.pm (-78 / +22 lines)
Lines 108-121 sub chargelostitem{ Link Here
108
        $replacementprice = $defaultreplacecost;
108
        $replacementprice = $defaultreplacecost;
109
    }
109
    }
110
110
111
    my $branchcode = C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef;
111
    my $account = Koha::Account->new({ patron_id => $borrowernumber });
112
113
    # first make sure the borrower hasn't already been charged for this item
112
    # first make sure the borrower hasn't already been charged for this item
114
    # FIXME this should be more exact
113
    # FIXME this should be more exact
115
    #       there is no reason a user can't lose an item, find and return it, and lost it again
114
    #       there is no reason a user can't lose an item, find and return it, and lost it again
116
    my $existing_charges = Koha::Account::Lines->search(
115
    my $existing_charges = $account->lines->search(
117
        {
116
        {
118
            borrowernumber => $borrowernumber,
119
            itemnumber     => $itemnumber,
117
            itemnumber     => $itemnumber,
120
            accounttype    => 'L',
118
            accounttype    => 'L',
121
        }
119
        }
Lines 127-212 sub chargelostitem{ Link Here
127
        my $issue_id = $checkout ? $checkout->issue_id : undef;
125
        my $issue_id = $checkout ? $checkout->issue_id : undef;
128
        #add processing fee
126
        #add processing fee
129
        if ($processfee && $processfee > 0){
127
        if ($processfee && $processfee > 0){
130
            my $accountline = Koha::Account::Line->new(
128
            my $accountline = $account->add_debit(
131
                {
132
                    borrowernumber    => $borrowernumber,
133
                    issue_id          => $issue_id,
134
                    accountno         => getnextacctno($borrowernumber),
135
                    date              => \'NOW()',
136
                    amount            => $processfee,
137
                    description       => $description,
138
                    accounttype       => 'PF',
139
                    amountoutstanding => $processfee,
140
                    itemnumber        => $itemnumber,
141
                    note              => $processingfeenote,
142
                    manager_id        => C4::Context->userenv ? C4::Context->userenv->{'number'} : 0,
143
                    branchcode        => $branchcode,
144
                }
145
            )->store();
146
147
            my $account_offset = Koha::Account::Offset->new(
148
                {
129
                {
149
                    debit_id => $accountline->id,
130
                    amount      => $processfee,
150
                    type     => 'Processing Fee',
131
                    description => $description,
151
                    amount   => $accountline->amount,
132
                    note        => $processingfeenote,
133
                    user_id     => C4::Context->userenv ? C4::Context->userenv->{'number'} : 0,
134
                    library_id  => C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef,
135
                    type        => 'processing',
136
                    item_id     => $itemnumber,
137
                    issue_id    => $issue_id,
152
                }
138
                }
153
            )->store();
139
            );
154
155
            if ( C4::Context->preference("FinesLog") ) {
156
                logaction("FINES", 'CREATE',$borrowernumber,Dumper({
157
                    action            => 'create_fee',
158
                    borrowernumber    => $accountline->borrowernumber,,
159
                    accountno         => $accountline->accountno,
160
                    amount            => $accountline->amount,
161
                    description       => $accountline->description,
162
                    accounttype       => $accountline->accounttype,
163
                    amountoutstanding => $accountline->amountoutstanding,
164
                    note              => $accountline->note,
165
                    itemnumber        => $accountline->itemnumber,
166
                    manager_id        => $accountline->manager_id,
167
                }));
168
            }
169
        }
140
        }
170
        #add replace cost
141
        #add replace cost
171
        if ($replacementprice > 0){
142
        if ($replacementprice > 0){
172
            my $accountline = Koha::Account::Line->new(
143
            my $accountline = $account->add_debit(
173
                {
174
                    borrowernumber    => $borrowernumber,
175
                    issue_id          => $issue_id,
176
                    accountno         => getnextacctno($borrowernumber),
177
                    date              => \'NOW()',
178
                    amount            => $replacementprice,
179
                    description       => $description,
180
                    accounttype       => 'L',
181
                    amountoutstanding => $replacementprice,
182
                    itemnumber        => $itemnumber,
183
                    manager_id        => C4::Context->userenv ? C4::Context->userenv->{'number'} : 0,
184
                    branchcode        => $branchcode,
185
                }
186
            )->store();
187
188
            my $account_offset = Koha::Account::Offset->new(
189
                {
144
                {
190
                    debit_id => $accountline->id,
145
                    amount      => $replacementprice,
191
                    type     => 'Lost Item',
146
                    description => $description,
192
                    amount   => $accountline->amount,
147
                    note        => undef,
148
                    user_id     => C4::Context->userenv ? C4::Context->userenv->{'number'} : 0,
149
                    library_id  => C4::Context->userenv ? C4::Context->userenv->{'branch'} : undef,
150
                    type        => 'lost_item',
151
                    item_id     => $itemnumber,
152
                    issue_id    => $issue_id,
193
                }
153
                }
194
            )->store();
154
            );
195
196
            if ( C4::Context->preference("FinesLog") ) {
197
                logaction("FINES", 'CREATE',$borrowernumber,Dumper({
198
                    action            => 'create_fee',
199
                    borrowernumber    => $accountline->borrowernumber,,
200
                    accountno         => $accountline->accountno,
201
                    amount            => $accountline->amount,
202
                    description       => $accountline->description,
203
                    accounttype       => $accountline->accounttype,
204
                    amountoutstanding => $accountline->amountoutstanding,
205
                    note              => $accountline->note,
206
                    itemnumber        => $accountline->itemnumber,
207
                    manager_id        => $accountline->manager_id,
208
                }));
209
            }
210
        }
155
        }
211
    }
156
    }
212
}
157
}
213
- 

Return to bug 21722