}
}
+sub is_discharged {
+ my ($params) = @_;
+ return unless $params->{borrowernumber};
+ my $borrowernumber = $params->{borrowernumber};
+
+
+ my $restricted = Koha::Borrower::Debarments::IsDebarred($borrowernumber);
+ my $validated = get_validated({borrowernumber => $borrowernumber});
+
+ if ($restricted && $validated) {
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
sub request {
my ($params) = @_;
my $borrowernumber = $params->{borrowernumber};
return unless $borrowernumber;
return unless can_be_discharged({ borrowernumber => $borrowernumber });
- return if count($params);
return $rs->create({
borrower => $borrowernumber,
});
# Generate the discharge
- my $discharge = $rs->search({ borrower => $borrowernumber });
+ my $discharge = $rs->search({ borrower => $borrowernumber }, { order_by => { -desc => 'needed' }, rows => 1 });
if( $discharge->count > 0 ) {
$discharge->update({ validated => dt_from_string });
}
return \@rs;
}
+sub get_validated {
+ my ($params) = @_;
+ my $branchcode = $params->{branchcode};
+ my $borrowernumber = $params->{borrowernumber};
+
+ my $cond = {
+ 'me.validated' => { '!=', undef },
+ ( defined $borrowernumber ? ( 'me.borrower' => $borrowernumber ) : () ),
+ ( defined $branchcode ? ( 'borrower.branchcode' => $branchcode ) : () ),
+ };
+
+ my @rs = $rs->search( $cond, { join => 'borrower' } );
+ return \@rs;
+}
+
+
1;
--- /dev/null
+ALTER TABLE discharges ADD COLUMN discharge_id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
DROP TABLE IF EXISTS discharges;
CREATE TABLE discharges (
+ discharge_id int(11) NOT NULL AUTO_INCREMENT,
borrower int(11) DEFAULT NULL,
needed timestamp NULL DEFAULT NULL,
validated timestamp NULL DEFAULT NULL,
+ PRIMARY KEY (discharge_id),
KEY borrower_discharges_ibfk1 (borrower),
CONSTRAINT borrower_discharges_ibfk1 FOREIGN KEY (borrower) REFERENCES borrowers (borrowernumber) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
+[% USE KohaDates %]
[% INCLUDE 'doc-head-open.inc' %]
<title>Koha › Patrons › [% IF (unknowuser) %]Patron does not exist[% ELSE %]Discharge for [% firstname %] [% surname %] ([% cardnumber %])[% END %]</title>
[% INCLUDE 'doc-head-close.inc' %]
<input type="hidden" value="[% borrowernumber %]" name="borrowernumber" />
</form>
[% END %]
+
+[% IF validated_discharges %]
+ <h2>Already validated discharges</h2>
+ <table>
+ <thead>
+ <tr>
+ <th>Requested</th>
+ <th>Validated</th>
+ </tr>
+ </thead>
+ <tbody>
+ [% FOR d IN validated_discharges %]
+ <tr>
+ <td>[% d.needed | $KohaDates with_hours = 1 %]</td>
+ <td>[% d.validated | $KohaDates with_hours = 1 %]</td>
+ </tr>
+ [% END %]
+ </tbody>
+ </table>
+[% END %]
+
</div>
}
}
+ # Already generated discharges
+ my $validated_discharges = Koha::Borrower::Discharge::get_validated({
+ branchcode => $data->{'branchcode'},
+ });
+
$template->param(
borrowernumber => $borrowernumber,
biblionumber => $data->{'biblionumber'},
branchcode => $data->{'branchcode'},
has_reserves => $has_reserves,
can_be_discharged => $can_be_discharged,
+ validated_discharges => $validated_discharges,
);
}
validated => 1,
});
$template->param(
- available => $available,
+ available => $available && Koha::Borrower::Discharge::is_discharged({borrowernumber => $loggedinuser}),
pending => $pending,
);
}
is(Koha::Borrower::Discharge::generate_as_pdf,undef,"Confirm failure when lacking borrower number");
+# Verify that the user is not discharged anymore if the restriction has been lifted
+Koha::Borrower::Discharge::discharge({ borrowernumber => $borrowernumber });
+is( Koha::Borrower::Discharge::is_discharged({ borrowernumber => $borrowernumber }), 1, 'The patron has been discharged' );
+is(Koha::Borrower::Debarments::IsDebarred($borrowernumber), '9999-12-31', 'The patron has been debarred after discharge');
+Koha::Borrower::Debarments::DelDebarment($borrowernumber);
+is( Koha::Borrower::Discharge::is_discharged({ borrowernumber => $borrowernumber }), 1, 'The patron is not discharged after the restriction has been lifted' );
+
# Check if PDF::FromHTML is installed.
my $check = eval { require PDF::FromHTML; };