$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
+# if a deposit was paid for this item, push the event
+# if called with a truthy param perform the void, depending on settings
sub check_circ_deposit {
my $self = shift;
+ my $void = shift;
+
return unless $self->circ;
+
my $deposit = $self->editor->search_money_billing(
{ btype => 5,
xact => $self->circ->id,
voided => 'f'
}, {idlist => 1})->[0];
- $self->push_events(OpenILS::Event->new(
- 'ITEM_DEPOSIT_PAID', payload => $deposit)) if $deposit;
+ return unless $deposit;
+
+ if ($void) {
+ my $void_on_checkin = $U->ou_ancestor_setting_value(
+ $self->circ_lib,OILS_SETTING_VOID_ITEM_DEPOSIT_ON_CHECKIN,$self->editor);
+ if ( $void_on_checkin ) {
+ my $evt = $CC->void_bills($self->editor,[$deposit], "DEPOSIT ITEM RETURNED");
+ return $evt if $evt;
+ }
+ } else { # if void is unset this is just a check, notify that there was a deposit billing
+ $self->push_events(OpenILS::Event->new('ITEM_DEPOSIT_PAID', payload => $deposit));
+ }
}
sub reshelve_copy {
econst OILS_SETTING_ALLOW_RENEW_FOR_EXPIRED_PATRON => 'circ.renew.expired_patron_allow';
econst OILS_SETTING_GENERATE_OVERDUE_ON_LOST_RETURN => 'circ.lost.generate_overdue_on_checkin';
econst OILS_SETTING_MAX_DUPLICATE_HOLDS => 'circ.holds.max_duplicate_holds';
+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 deposit fee on checkin',
+ 'coust', 'label'),
+ oils_i18n_gettext('circ.void_item_deposit',
+ 'If a deposit was charged when checking out an item, void it when the item is returned',
+ '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;
+
+SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version); -- blake / jboyer
+
+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 deposit fee on checkin',
+ 'coust', 'label'),
+ oils_i18n_gettext('circ.void_item_deposit',
+ 'If a deposit was charged when checking out an item, void it when the item is returned',
+ 'coust', 'description'),
+ 'bool', null);
+
+COMMIT;
+