Bugzilla – Attachment 64080 Details for
Bug 16899
Add ability to disallow overpayments via SIP
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 16899 - Add ability to disallow overpayments
Bug-16899---Add-ability-to-disallow-overpayments.patch (text/plain), 5.45 KB, created by
Kyle M Hall (khall)
on 2017-06-07 13:44:38 UTC
(
hide
)
Description:
Bug 16899 - Add ability to disallow overpayments
Filename:
MIME Type:
Creator:
Kyle M Hall (khall)
Created:
2017-06-07 13:44:38 UTC
Size:
5.45 KB
patch
obsolete
>From 7acc290d490f73619b51e936020406e8fb486cc4 Mon Sep 17 00:00:00 2001 >From: Kyle M Hall <kyle@bywatersolutions.com> >Date: Mon, 11 Jul 2016 15:36:54 +0000 >Subject: [PATCH] Bug 16899 - Add ability to disallow overpayments > >Some SIP services ( such as Comprise ) require that an attempt at >over-paying a patron's account via SIP2 should fail, rather than create >a credit on the account. We should make this a configurable option on a >per-login basis in the SIP2 config file. > >Test Plan: >1) Apply this patch >2) Enable the new parameter > disallow_overpayment="1" > for the login to be used in this test. >3) Restart your SIP server >4) Create or find a patron with fines >5) Attempt to send a payment via SIP for more than what the > patron's balance is >6) Note the response indicates a payment failure >7) Attempt to send a payment via SIP for the account balance or > less >8) Note the response indicates the payment has succeeded >9) Verify in Koha that the payment was processed > >Signed-off-by: Rhonda Kuiper <kuiper@roundrocktexas.gov> >--- > C4/SIP/ILS.pm | 4 ++-- > C4/SIP/ILS/Transaction/FeePayment.pm | 17 +++++++++++------ > C4/SIP/Sip/MsgType.pm | 4 +++- > Koha/Account/Lines.pm | 10 ++++++++++ > etc/SIPconfig.xml | 2 +- > 5 files changed, 27 insertions(+), 10 deletions(-) > >diff --git a/C4/SIP/ILS.pm b/C4/SIP/ILS.pm >index 35879af..5d3f189 100644 >--- a/C4/SIP/ILS.pm >+++ b/C4/SIP/ILS.pm >@@ -247,7 +247,7 @@ sub end_patron_session { > } > > sub pay_fee { >- my ($self, $patron_id, $patron_pwd, $fee_amt, $fee_type, $pay_type, $fee_id, $trans_id, $currency, $is_writeoff) = @_; >+ my ($self, $patron_id, $patron_pwd, $fee_amt, $fee_type, $pay_type, $fee_id, $trans_id, $currency, $is_writeoff, $disallow_overpayment ) = @_; > > my $trans = C4::SIP::ILS::Transaction::FeePayment->new(); > >@@ -258,7 +258,7 @@ sub pay_fee { > $trans->screen_msg('Invalid patron barcode.'); > return $trans; > } >- my $ok = $trans->pay( $patron->{borrowernumber}, $fee_amt, $pay_type, $fee_id, $is_writeoff ); >+ my $ok = $trans->pay( $patron->{borrowernumber}, $fee_amt, $pay_type, $fee_id, $is_writeoff, $disallow_overpayment ); > $trans->ok($ok); > > return $trans; >diff --git a/C4/SIP/ILS/Transaction/FeePayment.pm b/C4/SIP/ILS/Transaction/FeePayment.pm >index fe49197..41ed5c7 100644 >--- a/C4/SIP/ILS/Transaction/FeePayment.pm >+++ b/C4/SIP/ILS/Transaction/FeePayment.pm >@@ -42,12 +42,13 @@ sub new { > } > > sub pay { >- my $self = shift; >- my $borrowernumber = shift; >- my $amt = shift; >- my $sip_type = shift; >- my $fee_id = shift; >- my $is_writeoff = shift; >+ my $self = shift; >+ my $borrowernumber = shift; >+ my $amt = shift; >+ my $sip_type = shift; >+ my $fee_id = shift; >+ my $is_writeoff = shift; >+ my $disallow_overpayment = shift; > > my $type = $is_writeoff ? 'writeoff' : undef; > >@@ -55,6 +56,10 @@ sub pay { > > my $account = Koha::Account->new( { patron_id => $borrowernumber } ); > >+ if ($disallow_overpayment) { >+ return 0 if $account->balance < $amt; >+ } >+ > if ($fee_id) { > my $fee = Koha::Account::Lines->find($fee_id); > if ( $fee ) { >diff --git a/C4/SIP/Sip/MsgType.pm b/C4/SIP/Sip/MsgType.pm >index 7a1a1e3..039d9b8 100644 >--- a/C4/SIP/Sip/MsgType.pm >+++ b/C4/SIP/Sip/MsgType.pm >@@ -1060,7 +1060,9 @@ sub handle_fee_paid { > my $status; > my $resp = FEE_PAID_RESP; > >+ my $disallow_overpayment = $server->{account}->{disallow_overpayment}; > my $payment_type_writeoff = $server->{account}->{payment_type_writeoff} || q{}; >+ > my $is_writeoff = $pay_type eq $payment_type_writeoff; > > $fee_amt = $fields->{ (FID_FEE_AMT) }; >@@ -1072,7 +1074,7 @@ sub handle_fee_paid { > > $ils->check_inst_id( $inst_id, "handle_fee_paid" ); > >- $status = $ils->pay_fee( $patron_id, $patron_pwd, $fee_amt, $fee_type, $pay_type, $fee_id, $trans_id, $currency, $is_writeoff ); >+ $status = $ils->pay_fee( $patron_id, $patron_pwd, $fee_amt, $fee_type, $pay_type, $fee_id, $trans_id, $currency, $is_writeoff, $disallow_overpayment ); > > $resp .= ( $status->ok ? 'Y' : 'N' ) . timestamp; > $resp .= add_field( FID_INST_ID, $inst_id ); >diff --git a/Koha/Account/Lines.pm b/Koha/Account/Lines.pm >index 0e0677c..33e5e22 100644 >--- a/Koha/Account/Lines.pm >+++ b/Koha/Account/Lines.pm >@@ -36,6 +36,16 @@ Koha::Account::Lines - Koha Account Line Object set class > > =cut > >+=head3 amount_outstanding >+ >+=cut >+ >+sub amount_outstanding { >+ my ( $self ) = @_; >+ >+ return $self->_resultset()->get_column('amountoutstanding')->sum(); >+} >+ > =head3 type > > =cut >diff --git a/etc/SIPconfig.xml b/etc/SIPconfig.xml >index db25975..c08673b 100644 >--- a/etc/SIPconfig.xml >+++ b/etc/SIPconfig.xml >@@ -44,7 +44,7 @@ > </listeners> > > <accounts> >- <login id="term1" password="term1" delimiter="|" error-detect="enabled" institution="CPL" encoding="ascii" checked_in_ok="1" payment_type_writeoff="06" /> >+ <login id="staff" password="staff" delimiter="|" error-detect="enabled" institution="CPL" encoding="ascii" checked_in_ok="1" payment_type_writeoff="06" disallow_overpayment="1" /> > <login id="koha" password="koha" delimiter="|" error-detect="enabled" institution="kohalibrary" encoding="utf8" /> > <login id="koha2" password="koha" institution="kohalibrary2" terminator="CR" /> > <login id="lpl-sc" password="1234" institution="LPL" /> >-- >2.10.2
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 16899
:
53272
|
53275
|
54203
|
55615
|
61378
|
61379
|
64080
|
68604
|
68656