$self->handle_fines;
}
+ # Void any item deposits if the library wants to
+ $self->check_circ_deposit(1);
+
$self->checkin_handle_circ_finish;
return if $self->bail_out;
$self->checkin_changed(1);
# if a deposit was payed for this item, push the event
+# handle deposit billing void
sub check_circ_deposit {
my $self = shift;
+ my $void = shift;
return unless $self->circ;
my $deposit = $self->editor->search_money_billing(
{ btype => 5,
voided => 'f'
}, {idlist => 1})->[0];
- $self->push_events(OpenILS::Event->new(
- 'ITEM_DEPOSIT_PAID', payload => $deposit)) if $deposit;
+ if ($deposit) {
+ # We have already vetted the override event when $void is set
+ $self->push_events(OpenILS::Event->new('ITEM_DEPOSIT_PAID', payload => $deposit)) if !$void;
+ # Now do the voiding when the library setting is set
+ if ( $U->ou_ancestor_setting_value(
+ $self->circ_lib,
+ OILS_SETTING_VOID_ITEM_DEPOSIT_ON_CHECKIN,
+ $self->editor) && $void
+ ) {
+ my $circ_money = OpenSRF::AppSession->connect("open-ils.circ");
+ $circ_money->request('open-ils.circ.money.billing.void', $self->editor->authtoken, $deposit );
+ undef $circ_money;
+ }
+ }
}
sub reshelve_copy {
econst OILS_SETTING_BLOCK_HOLD_FOR_EXPIRED_PATRON => 'circ.holds.expired_patron_block';
econst OILS_SETTING_GENERATE_OVERDUE_ON_LOST_RETURN => 'circ.lost.generate_overdue_on_checkin';
econst OILS_SETTING_LONG_OVERDUE_ASSESS_BILLING => 'circ.longoverdue.assess_billing';
+econst OILS_SETTING_VOID_ITEM_DEPOSIT_ON_CHECKIN => 'circ.void_item_deposit';
'coust', 'description'),
'bool', null)
+,( 'circ.void_item_deposit', 'circ',
+ oils_i18n_gettext('circ.void_item_deposit',
+ 'Void item depsoit fee upon checkin',
+ 'coust', 'label'),
+ oils_i18n_gettext('circ.void_item_deposit',
+ 'This will cause the deposit fee to be voided upon checkin',
+ 'coust', 'description'),
+ 'bool', null)
+
,( 'circ.void_lost_proc_fee_on_checkin', 'circ',
oils_i18n_gettext('circ.void_lost_proc_fee_on_checkin',
'Void processing fee on lost item return',
--- /dev/null
+
+BEGIN;
+
+
+INSERT into config.org_unit_setting_type
+( name, grp, label, description, datatype, fm_class ) VALUES
+
+( 'circ.void_item_deposit', 'circ',
+ oils_i18n_gettext('circ.void_item_deposit',
+ 'Void item depsoit fee upon checkin',
+ 'coust', 'label'),
+ oils_i18n_gettext('circ.void_item_deposit',
+ 'This will cause the deposit fee to be voided upon checkin',
+ 'coust', 'description'),
+ 'bool', null);
+
+COMMIT;
\ No newline at end of file