Bug 23674: Add ability to add note to canceled charge

To test, with this patchset applied:
1) From patron accounting page -> Add a manual invoice
2) Under the transaction tab click 'Cancel charge'
3) You should see a modal that gives you the option to type in a note.
4) Type something in and select submit.
5) Ensure the note shows up in the note column.

Signed-off-by: Roman Dolny <roman.dolny@jezuici.pl>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
This commit is contained in:
Lucas Gass 2024-07-01 16:45:36 +00:00 committed by Katrin Fischer
parent 72c60c11b4
commit 994959db48
Signed by: kfischer
GPG key ID: 0EF6E2C03357A834
3 changed files with 60 additions and 14 deletions

View file

@ -420,6 +420,7 @@ sub cancel {
borrowernumber => $self->borrowernumber, borrowernumber => $self->borrowernumber,
interface => 'intranet', interface => 'intranet',
branchcode => $params->{branch}, branchcode => $params->{branch},
note => $params->{note},
} }
)->store(); )->store();

View file

@ -193,15 +193,15 @@
> >
[% END %] [% END %]
[% IF account.is_debit && account.amount == account.amountoutstanding && account.status != 'CANCELLED' && !(account.debit_type_code == 'PAYOUT') %] [% IF account.is_debit && account.amount == account.amountoutstanding && account.status != 'CANCELLED' && !(account.debit_type_code == 'PAYOUT') %]
<form method="post" action="/cgi-bin/koha/members/cancel-charge.pl"> <button
[% INCLUDE 'csrf-token.inc' %] type="button"
<input type="hidden" name="op" value="cud-cancel" /> data-toggle="modal"
<input type="hidden" name="accountlines_id" value="[% account.accountlines_id | html %]" /> data-target="#cancelChargeModal"
<button type="submit" class="btn btn-default btn-xs cancel-action"> data-accountlines_id="[% account.accountlines_id | html %]"
<i class="fa fa-ban"></i> data-borrowernumber="[% patron.borrowernumber | html %]"
Cancel charge class="btn btn-default btn-xs void-action"
</button> ><i class="fa fa-ban"></i> Cancel charge</button
</form> >
[% END %] [% END %]
[% IF CAN_user_updatecharges_payout && account.is_credit && ( account.amountoutstanding < 0 ) %] [% IF CAN_user_updatecharges_payout && account.is_credit && ( account.amountoutstanding < 0 ) %]
<button <button
@ -477,6 +477,44 @@
</div> </div>
<!-- /#voidPaymentModal --> <!-- /#voidPaymentModal -->
<!-- Cancel charge modal -->
<div class="modal" id="cancelChargeModal" tabindex="-1" role="dialog" aria-labelledby="cancelChangreLabel">
<form method="post" action="/cgi-bin/koha/members/cancel-charge.pl">
[% INCLUDE 'csrf-token.inc' %]
<input type="hidden" name="borrowernumber" value="[% patron.borrowernumber | html %]" />
<input type="hidden" name="accountlines_id" id="accountlines_id" value="" />
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="closebtn" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="cancelChargeLabel">Cancel charge</h4>
</div>
<div class="modal-body">
<fieldset class="rows">
<ol>
<li>
<label for="cancel_charge_note">Note: </label>
<input type="text" id="cnacel_charge_note" name="cancel_charge_note" />
</li>
</ol>
</fieldset>
<!-- /.rows -->
</div>
<!-- /.modal-body -->
<div class="modal-footer">
<button type="submit" class="btn btn-default">Confirm</button>
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
</div>
<!-- /.modal-footer -->
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal-dialog -->
</form>
<!-- /#cancel_charge_form -->
</div>
<!-- /#voidPaymentModal -->
[% MACRO jsinclude BLOCK %] [% MACRO jsinclude BLOCK %]
[% INCLUDE 'datatables.inc' %] [% INCLUDE 'datatables.inc' %]
[% INCLUDE 'format_price.inc' %] [% INCLUDE 'format_price.inc' %]
@ -563,6 +601,12 @@
$('#voidline').val(accountline); $('#voidline').val(accountline);
}); });
$("#cancelChargeModal").on("shown.bs.modal", function(e){
var button = $(e.relatedTarget);
var item = button.data('accountlines_id');
$('#accountlines_id').val(item);
});
$(".receipt-email-action").on("click", function(e){ $(".receipt-email-action").on("click", function(e){
e.preventDefault(); e.preventDefault();
return $(this).siblings('form').submit(); return $(this).siblings('form').submit();

View file

@ -35,14 +35,15 @@ my ( $user, $cookie ) = C4::Auth::checkauth( $cgi, $authnotrequired, $flags, $ty
my $op = $cgi->param('op') // q{}; my $op = $cgi->param('op') // q{};
if ( $op eq "cud-cancel" ) { if ( $op eq "cud-cancel" ) {
my $accountlines_id = $cgi->param('accountlines_id'); my $accountlines_id = $cgi->param('accountlines_id');
my $cancel_charge_note = $cgi->param('cancel_charge_note');
my $charge = Koha::Account::Lines->find($accountlines_id); my $charge = Koha::Account::Lines->find($accountlines_id);
my $borrowernumber = $charge->patron->borrowernumber; my $borrowernumber = $charge->patron->borrowernumber;
$charge->cancel( $charge->cancel(
{ {
branch => C4::Context->userenv->{'branch'}, branch => C4::Context->userenv->{'branch'},
staff_id => C4::Context->userenv->{'number'} staff_id => C4::Context->userenv->{'number'},
note => $cancel_charge_note,
} }
); );
print $cgi->redirect( '/cgi-bin/koha/members/boraccount.pl?borrowernumber=' . $borrowernumber ); print $cgi->redirect( '/cgi-bin/koha/members/boraccount.pl?borrowernumber=' . $borrowernumber );