+
+sub _skip_borrowers_with_nonzero_balance {
+ my $borrowers = shift;
+ my $balance;
+ @$borrowers = map {
+ (undef, undef, $balance) = GetMemberIssuesAndFines( $_->{borrowernumber} );
+ ($balance != 0) ? (): ($_);
+ } @$borrowers;
+}
+
+sub _get_selection_params {
+ my ($not_borrowered_since, $borrower_dateexpiry, $borrower_categorycode) = @_;
+
+ my $params = {};
+ $params->{not_borrowered_since} = output_pref({
+ dt => $not_borrowered_since,
+ dateformat => 'iso',
+ dateonly => 1
+ }) if $not_borrowered_since;
+ $params->{expired_before} = output_pref({
+ dt => $borrower_dateexpiry,
+ dateformat => 'iso',
+ dateonly => 1
+ }) if $borrower_dateexpiry;
+ $params->{borrower_categorycode} = $borrower_categorycode if $borrower_categorycode;
+
+ return $params;
+};