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

(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/members/boraccount.tt (+85 lines)
Lines 87-92 Link Here
87
        [% IF CAN_user_updatecharges_payout && account.is_credit && ( account.amountoutstanding < 0 ) %]
87
        [% IF CAN_user_updatecharges_payout && account.is_credit && ( account.amountoutstanding < 0 ) %]
88
          <button type="button" data-toggle="modal" data-target="#issuePayoutModal" data-account="[%- PROCESS account_type_description account=account -%]" data-accountline="[% account.accountlines_id | html %]" data-amount="[% account.amountoutstanding | $Price %]" class="btn btn-default btn-xs"><i class="fa fa-money"></i> Issue payout</button>
88
          <button type="button" data-toggle="modal" data-target="#issuePayoutModal" data-account="[%- PROCESS account_type_description account=account -%]" data-accountline="[% account.accountlines_id | html %]" data-amount="[% account.amountoutstanding | $Price %]" class="btn btn-default btn-xs"><i class="fa fa-money"></i> Issue payout</button>
89
        [% END %]
89
        [% END %]
90
        [% IF CAN_user_updatecharges_refund && account.is_debit && ( account.amountoutstanding != account.amount ) && !(account.status == 'REFUNDED' ) %]
91
          <button type="button" data-toggle="modal" data-target="#issueRefundModal" data-item="[%- PROCESS account_type_description account=account -%]" data-accountline="[% account.accountlines_id | html %]" data-amount="[% account.amount | $Price %]" data-amountoutstanding="[% account.amountoutstanding | $Price %]" class="btn btn-default btn-xs"><i class="fa fa-money"></i> Issue refund</button>
92
        [% END %]
90
      </td>
93
      </td>
91
    </tr>
94
    </tr>
92
95
Lines 180-185 Link Here
180
        </form> <!-- /#payout_form -->
183
        </form> <!-- /#payout_form -->
181
    </div> <!-- /#issuePayoutModal -->
184
    </div> <!-- /#issuePayoutModal -->
182
185
186
    <!-- Issue refund modal -->
187
    <div class="modal" id="issueRefundModal" tabindex="-1" role="dialog" aria-labelledby="issueRefundLabel">
188
        <form  id="refund_form" action="/cgi-bin/koha/members/boraccount.pl" method="get" enctype="multipart/form-data" class="validated">
189
            <input type="hidden" name="accountlines_id" value="" id="refundline">
190
            <input type="hidden" name="action" value="refund">
191
            <input type="hidden" name="borrowernumber" value="[% account.borrowernumber | html %]">
192
            <div class="modal-dialog" role="document">
193
                <div class="modal-content">
194
                    <div class="modal-header">
195
                        <button type="button" class="closebtn" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
196
                        <h4 class="modal-title" id="issueRefundLabel">Issue refund</h4>
197
                    </div>
198
                    <div class="modal-body">
199
                        <fieldset class="rows">
200
                            <ol>
201
                                <li>
202
                                    <span id="item" class="label">Account: </span><span></span>
203
                                </li>
204
                                <li>
205
                                    <span id="paid" class="label">Amount paid: </span><span></span>
206
                                </li>
207
                                <li>
208
                                    <label class="required" for="amount">Returned to patron: </label>
209
                                    <input type="number" step="0.01" id="returned" name="amount" min="0.00" required="required">
210
                                    <span class="required">Required</span>
211
                                </li>
212
                                [% SET payment_types = AuthorisedValues.GetAuthValueDropbox('PAYMENT_TYPE') %]
213
                                <li>
214
                                    <label for="transaction_type">Transaction type: </label>
215
                                    <select name="transaction_type" id="transaction_type">
216
                                        <option value="AC">Account credit</option>
217
                                        [% IF payment_types %]
218
                                        [% FOREACH pt IN payment_types %]
219
                                        <option value="[% pt.authorised_value | html %]">[% pt.lib | html %]</option>
220
                                        [% END %]
221
                                        [% END %]
222
                                    </select>
223
                                </li>
224
225
                                [% IF Koha.Preference('UseCashRegisters') %]
226
                                <li>
227
                                    <label for="cash_register">Cash register: </label>
228
                                    <select name="cash_register" id="cash_register">
229
                                        [% FOREACH register IN registers %]
230
                                          [% IF register.id == registerid %]
231
                                        <option value="[% register.id %]" selected="selected">[% register.name | html %]</option>
232
                                          [% ELSE %]
233
                                        <option value="[% register.id %]">[% register.name | html %]</option>
234
                                          [% END %]
235
                                        [% END %]
236
                                    </select>
237
                                </li>
238
                                [% END %]
239
240
                            </ol>
241
                        </fieldset> <!-- /.rows -->
242
                    </div> <!-- /.modal-body -->
243
                    <div class="modal-footer">
244
                        <input type="hidden" name="registerid" value="[% register.id | html %]">
245
                        <input type="hidden" name="op" value="refund">
246
                        <button type="submit" class="btn btn-default">Confirm</button>
247
                        <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
248
                    </div> <!-- /.modal-footer -->
249
                </div> <!-- /.modal-content -->
250
            </div> <!-- /.modal-dialog -->
251
        </form> <!-- /#refund_form -->
252
    </div> <!-- /#issueRefundModal -->
253
183
[% MACRO jsinclude BLOCK %]
254
[% MACRO jsinclude BLOCK %]
184
    [% INCLUDE 'datatables.inc' %]
255
    [% INCLUDE 'datatables.inc' %]
185
    [% INCLUDE 'columns_settings.inc' %]
256
    [% INCLUDE 'columns_settings.inc' %]
Lines 234-239 Link Here
234
                $("#amount").attr({ "value": amount, "max": amount });
305
                $("#amount").attr({ "value": amount, "max": amount });
235
                $("#amount, #transaction_type").focus();
306
                $("#amount, #transaction_type").focus();
236
            });
307
            });
308
309
            $("#issueRefundModal").on("shown.bs.modal", function(e){
310
                var button = $(e.relatedTarget);
311
                var item = button.data('item');
312
                $("#item + span").replaceWith(item);
313
                var accountline = button.data('accountline');
314
                $('#refundline').val(accountline);
315
                var amount = button.data('amount');
316
                var amountoutstanding = button.data('amountoutstanding');
317
                var paid = amount - amountoutstanding;
318
                $("#paid + span").replaceWith(paid);
319
                $("#returned").attr({ "value": paid, "max": paid });
320
                $("#returned, #transaction_type").focus();
321
            });
237
        });
322
        });
238
    </script>
323
    </script>
239
[% END %]
324
[% END %]
(-)a/members/boraccount.pl (-1 / +33 lines)
Lines 118-123 if ( $action eq 'payout' ) { Link Here
118
    );
118
    );
119
}
119
}
120
120
121
if ( $action eq 'refund' ) {
122
    my $charge_id        = scalar $input->param('accountlines_id');
123
    my $charge           = Koha::Account::Lines->find($charge_id);
124
    my $amount           = scalar $input->param('amount');
125
    my $transaction_type = scalar $input->param('transaction_type');
126
    $schema->txn_do(
127
        sub {
128
129
            my $refund = $charge->reduce(
130
                {
131
                    reduction_type => 'REFUND',
132
                    branch         => $library_id,
133
                    staff_id       => $logged_in_user->id,
134
                    interface      => 'intranet',
135
                    amount         => $amount
136
                }
137
            );
138
            unless ( $transaction_type eq 'AC' ) {
139
                my $payout = $refund->payout(
140
                    {
141
                        payout_type   => $transaction_type,
142
                        branch        => $library_id,
143
                        staff_id      => $logged_in_user->id,
144
                        cash_register => $registerid,
145
                        interface     => 'intranet',
146
                        amount        => $amount
147
                    }
148
                );
149
            }
150
        }
151
    );
152
}
153
121
#get account details
154
#get account details
122
my $total = $patron->account->balance;
155
my $total = $patron->account->balance;
123
156
124
- 

Return to bug 23442