Lines 95-104
sub is_discharged {
Link Here
|
95 |
return unless $params->{borrowernumber}; |
95 |
return unless $params->{borrowernumber}; |
96 |
my $borrowernumber = $params->{borrowernumber}; |
96 |
my $borrowernumber = $params->{borrowernumber}; |
97 |
|
97 |
|
98 |
my $restricted = Koha::Patrons->find( $borrowernumber )->is_debarred; |
98 |
my $restricted = Koha::Patrons->find($borrowernumber)->is_debarred; |
99 |
my @validated = get_validated({borrowernumber => $borrowernumber}); |
99 |
my @validated = get_validated( { borrowernumber => $borrowernumber } ); |
100 |
|
100 |
|
101 |
if ($restricted && @validated) { |
101 |
if ( $restricted && @validated ) { |
102 |
return 1; |
102 |
return 1; |
103 |
} else { |
103 |
} else { |
104 |
return 0; |
104 |
return 0; |
Lines 113-130
Place a discharge request on a given borrower after checking the borrower has th
Link Here
|
113 |
|
113 |
|
114 |
=cut |
114 |
=cut |
115 |
|
115 |
|
116 |
sub is_discharged { |
|
|
117 |
my ($params) = @_; |
118 |
my $discharge = Koha::Database->new->schema->resultset('Discharge')->search( |
119 |
{ |
120 |
borrower => $params->{borrowernumber}, |
121 |
validated => { "not" => undef }, |
122 |
cancelled => undef, |
123 |
} |
124 |
); |
125 |
return $discharge->count > 0; |
126 |
} |
127 |
|
128 |
sub request { |
116 |
sub request { |
129 |
my ($params) = @_; |
117 |
my ($params) = @_; |
130 |
my $borrowernumber = $params->{borrowernumber}; |
118 |
my $borrowernumber = $params->{borrowernumber}; |
Lines 141-172
sub request {
Link Here
|
141 |
); |
129 |
); |
142 |
} |
130 |
} |
143 |
|
131 |
|
144 |
=head3 discharge |
132 |
=head3 is_cancelled |
145 |
|
133 |
|
146 |
my $request = Koha::Patron:Discharge->discharge({borrowernumber => $borrowernumber}); |
134 |
my $is_cancelled = Koha::Patron:Discharge->is_cancelled({discharge_id => $discharge_id}); |
147 |
|
135 |
|
148 |
Place a discharge request on a given borrower, if a discharge was requested, update the status to discharged and place a suspension on the user. |
136 |
Returns true if there is a discharge that has been cancelled and has the given discharge_id, false else. |
149 |
|
137 |
|
150 |
=cut |
138 |
=cut |
151 |
|
139 |
|
152 |
sub is_cancelled { |
140 |
sub is_cancelled { |
153 |
my ($params) = @_; |
141 |
my ($params) = @_; |
|
|
142 |
unless ( $params->{discharge_id} ) { |
143 |
Koha::Exceptions::BadParameter->throw("is_cancelled must be called with a discharge_id"); |
144 |
} |
154 |
my $discharge = Koha::Database->new->schema->resultset('Discharge')->search( |
145 |
my $discharge = Koha::Database->new->schema->resultset('Discharge')->search( |
155 |
{ |
146 |
{ |
156 |
discharge_id => $params->{discharge_id}, |
147 |
discharge_id => $params->{discharge_id}, |
157 |
cancelled => { "not" => undef }, |
|
|
158 |
} |
148 |
} |
159 |
); |
149 |
); |
160 |
return $discharge->count > 0; |
150 |
if ( $discharge->count == 0 ) { |
|
|
151 |
Koha::Exceptions::BadParameter->throw("is_cancelled must be called with a valid discharge_id"); |
152 |
} |
153 |
return defined $discharge->single->cancelled; |
161 |
} |
154 |
} |
162 |
|
155 |
|
|
|
156 |
=head3 cancel |
157 |
|
158 |
Koha::Patron:Discharge->cancel( |
159 |
discharge_id => $discharge_id, |
160 |
cancellation_reason => $cancellation_reason, |
161 |
borrowernumber => $borrowernumber, |
162 |
}); |
163 |
|
164 |
Cancel the discharge given as argument through discharge_id. This will remove suspension associated with the borrowernumber, and update cancellation date and reason. |
165 |
|
166 |
=cut |
167 |
|
163 |
sub cancel { |
168 |
sub cancel { |
164 |
my ($params) = @_; |
169 |
my ($params) = @_; |
165 |
my $discharge = Koha::Database->new->schema->resultset('Discharge')->search( |
170 |
my $discharge = Koha::Database->new->schema->resultset('Discharge')->find( |
166 |
{ |
171 |
{ |
167 |
discharge_id => $params->{discharge_id}, |
172 |
discharge_id => $params->{discharge_id}, |
168 |
} |
173 |
} |
169 |
); |
174 |
); |
|
|
175 |
my $patron = Koha::Patrons->find( { borrowernumber => $params->{borrowernumber} } ); |
176 |
unless ( $patron || $discharge ) { |
177 |
Koha::Exceptions::BadParameter->throw("cancel() must be called either with a borrowernumber or a discharge id"); |
178 |
} |
179 |
if ( $patron && $discharge && ( $discharge->borrower->borrowernumber != $patron->borrowernumber ) ) { |
180 |
Koha::Exceptions::BadParameter->throw( |
181 |
"If passing patron and discharge, the patron and the discharge must correspond"); |
182 |
} |
183 |
if ($discharge) { |
184 |
$patron = Koha::Patrons->find( { borrowernumber => $discharge->borrower->borrowernumber } ); |
185 |
} else { |
186 |
$discharge = Koha::Database->new->schema->resultset('Discharge')->search( |
187 |
{ |
188 |
borrower => $patron->borrowernumber, |
189 |
validated => { -not => undef } |
190 |
} |
191 |
)->single; |
192 |
} |
170 |
$discharge->update( |
193 |
$discharge->update( |
171 |
{ |
194 |
{ |
172 |
cancelled => dt_from_string, |
195 |
cancelled => dt_from_string, |
Lines 175-186
sub cancel {
Link Here
|
175 |
); |
198 |
); |
176 |
Koha::Patron::Debarments::DelUniqueDebarment( |
199 |
Koha::Patron::Debarments::DelUniqueDebarment( |
177 |
{ |
200 |
{ |
178 |
borrowernumber => $params->{borrowernumber}, |
201 |
borrowernumber => $patron->borrowernumber, |
179 |
type => "DISCHARGE", |
202 |
type => "DISCHARGE", |
180 |
} |
203 |
} |
181 |
); |
204 |
); |
182 |
} |
205 |
} |
183 |
|
206 |
|
|
|
207 |
=head3 discharge |
208 |
|
209 |
my $request = Koha::Patron:Discharge->discharge({borrowernumber => $borrowernumber}); |
210 |
|
211 |
Place a discharge request on a given borrower, if a discharge was requested, update the status to discharged and place a suspension on the user. |
212 |
|
213 |
=cut |
214 |
|
184 |
sub discharge { |
215 |
sub discharge { |
185 |
my ($params) = @_; |
216 |
my ($params) = @_; |
186 |
my $borrowernumber = $params->{borrowernumber}; |
217 |
my $borrowernumber = $params->{borrowernumber}; |
187 |
- |
|
|