Bug 33216: Catch and handle RegisterRequired exceptions for SIP fee paid messages
If registers are being used in Koha, they are required. If a SIP account has no register and a fee paid message is sent, the SIP server crashes and the client never gets a response. It would be much better if Koha would response with 38 response where "payment accepted" is N, and an AF field stating that the SIP account needs to be associated with a register. Test Plan: 1) Enable UseCashRegisters, set RequireCashRegister to "always require a cash register". Do *not* set a cash register for the SIP account you will be testing with. 2) Using the SIP cli tester, send a fee paid message for a patron owing fees. 3) Note the lack of a SIP response 4) Apply this patch 5) Restart the SIP server 6) Repeat step 2, you should now get a SIP response with the error message in it! Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com> Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
parent
bb30aab206
commit
0411bf0573
3 changed files with 26 additions and 4 deletions
|
@ -310,7 +310,8 @@ sub pay_fee {
|
|||
|
||||
return {
|
||||
status => $trans,
|
||||
pay_response => $trans_result->{pay_response}
|
||||
pay_response => $trans_result->{pay_response},
|
||||
error => $trans_result->{error},
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -20,6 +20,8 @@ use strict;
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with Koha; if not, see <http://www.gnu.org/licenses>.
|
||||
|
||||
use Try::Tiny;
|
||||
|
||||
use Koha::Account;
|
||||
use Koha::Account::Lines;
|
||||
|
||||
|
@ -76,10 +78,28 @@ sub pay {
|
|||
};
|
||||
}
|
||||
}
|
||||
my $pay_response = $account->pay($pay_options);
|
||||
|
||||
my $ok = 1;
|
||||
my $pay_response;
|
||||
my $error;
|
||||
try {
|
||||
$pay_response = $account->pay($pay_options);
|
||||
}
|
||||
catch {
|
||||
$ok = 0;
|
||||
|
||||
if ( ref($_) =~ /^Koha::Exceptions/ ) {
|
||||
$error = $_->description;
|
||||
}
|
||||
else {
|
||||
$_->rethrow;
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
ok => 1,
|
||||
pay_response => $pay_response
|
||||
ok => $ok,
|
||||
pay_response => $pay_response,
|
||||
error => $error,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -1194,6 +1194,7 @@ sub handle_fee_paid {
|
|||
$resp .= add_field( FID_INST_ID, $inst_id, $server );
|
||||
$resp .= add_field( FID_PATRON_ID, $patron_id, $server );
|
||||
$resp .= maybe_add( FID_TRANSACTION_ID, $status->transaction_id, $server );
|
||||
$resp .= maybe_add( FID_SCREEN_MSG, $pay_result->{error}, $server );
|
||||
$resp .= maybe_add( FID_SCREEN_MSG, $status->screen_msg, $server );
|
||||
$resp .= maybe_add( FID_PRINT_LINE, $status->print_line, $server );
|
||||
|
||||
|
|
Loading…
Reference in a new issue