|
Lines 241-246
sub import_patrons {
Link Here
|
| 241 |
if exists $borrower{$field} and $borrower{$field} eq ""; |
241 |
if exists $borrower{$field} and $borrower{$field} eq ""; |
| 242 |
} |
242 |
} |
| 243 |
|
243 |
|
|
|
244 |
my $success = 1; |
| 244 |
if ($borrowernumber) { |
245 |
if ($borrowernumber) { |
| 245 |
|
246 |
|
| 246 |
# borrower exists |
247 |
# borrower exists |
|
Lines 270-278
sub import_patrons {
Link Here
|
| 270 |
} |
271 |
} |
| 271 |
|
272 |
|
| 272 |
my $patron = Koha::Patrons->find( $borrowernumber ); |
273 |
my $patron = Koha::Patrons->find( $borrowernumber ); |
| 273 |
eval { $patron->set(\%borrower)->store }; |
274 |
try { |
| 274 |
if ( $@ ) { |
275 |
$schema->storage->txn_do(sub { |
|
|
276 |
$patron->set(\%borrower)->store; |
| 277 |
# Don't add a new restriction if the existing 'combined' restriction matches this one |
| 278 |
if ( $borrower{debarred} && ( ( $borrower{debarred} ne $member->{debarred} ) || ( $borrower{debarredcomment} ne $member->{debarredcomment} ) ) ) { |
| 279 |
|
| 280 |
# Check to see if this debarment already exists |
| 281 |
my $debarrments = GetDebarments( |
| 282 |
{ |
| 283 |
borrowernumber => $borrowernumber, |
| 284 |
expiration => $borrower{debarred}, |
| 285 |
comment => $borrower{debarredcomment} |
| 286 |
} |
| 287 |
); |
| 288 |
|
| 289 |
# If it doesn't, then add it! |
| 290 |
unless (@$debarrments) { |
| 291 |
AddDebarment( |
| 292 |
{ |
| 293 |
borrowernumber => $borrowernumber, |
| 294 |
expiration => $borrower{debarred}, |
| 295 |
comment => $borrower{debarredcomment} |
| 296 |
} |
| 297 |
); |
| 298 |
} |
| 299 |
} |
| 300 |
if ($patron->category->category_type ne 'S' && $overwrite_passwords && defined $borrower{password} && $borrower{password} ne ''){ |
| 301 |
try { |
| 302 |
$patron->set_password({ password => $borrower{password} }); |
| 303 |
} |
| 304 |
catch { |
| 305 |
if ( $_->isa('Koha::Exceptions::Password::TooShort') ) { |
| 306 |
push @errors, { passwd_too_short => 1, borrowernumber => $borrowernumber, length => $_->{length}, min_length => $_->{min_length} }; |
| 307 |
} |
| 308 |
elsif ( $_->isa('Koha::Exceptions::Password::WhitespaceCharacters') ) { |
| 309 |
push @errors, { passwd_whitespace => 1, borrowernumber => $borrowernumber } ; |
| 310 |
} |
| 311 |
elsif ( $_->isa('Koha::Exceptions::Password::TooWeak') ) { |
| 312 |
push @errors, { passwd_too_weak => 1, borrowernumber => $borrowernumber } ; |
| 313 |
} |
| 314 |
elsif ( $_->isa('Koha::Exceptions::Password::Plugin') ) { |
| 315 |
push @errors, { passwd_plugin_err => 1, borrowernumber => $borrowernumber } ; |
| 316 |
} |
| 317 |
else { |
| 318 |
push @errors, { passwd_unknown_err => 1, borrowernumber => $borrowernumber } ; |
| 319 |
} |
| 320 |
} |
| 321 |
} |
| 322 |
if ($extended) { |
| 323 |
if ($ext_preserve) { |
| 324 |
$patron_attributes = $patron->extended_attributes->merge_and_replace_with( $patron_attributes ); |
| 325 |
} |
| 326 |
# We do not want to filter by branch, maybe we should? |
| 327 |
Koha::Patrons->find($borrowernumber)->extended_attributes->delete; |
| 328 |
$patron->extended_attributes($patron_attributes); |
| 329 |
} |
| 330 |
$overwritten++; |
| 331 |
push( |
| 332 |
@feedback, |
| 333 |
{ |
| 334 |
feedback => 1, |
| 335 |
name => 'lastoverwritten', |
| 336 |
value => $borrower{'surname'} . ' / ' . $borrowernumber |
| 337 |
} |
| 338 |
); |
| 339 |
}); |
| 340 |
} catch { |
| 275 |
$invalid++; |
341 |
$invalid++; |
|
|
342 |
$success = 0; |
| 343 |
|
| 344 |
my $patron_id = defined $matchpoint ? $borrower{$matchpoint} : $matchpoint_attr_type; |
| 345 |
if ( $_->isa('Koha::Exceptions::Patron::Attribute::UniqueIDConstraint') ) { |
| 346 |
push @errors, { patron_attribute_unique_id_constraint => 1, patron_id => $patron_id, attribute => $_->attribute }; |
| 347 |
} elsif ( $_->isa('Koha::Exceptions::Patron::Attribute::InvalidType') ) { |
| 348 |
push @errors, { patron_attribute_invalid_type => 1, patron_id => $patron_id, attribute_type_code => $_->type }; |
| 349 |
} elsif ( $_->isa('Koha::Exceptions::Patron::Attribute::NonRepeatable') ) { |
| 350 |
push @errors, { patron_attribute_non_repeatable => 1, patron_id => $patron_id, attribute => $_->attribute }; |
| 351 |
} else { |
| 352 |
use Data::Printer colored => 1; warn p $_; |
| 353 |
push @errors, { unknown_error => 1 }; |
| 354 |
} |
| 276 |
|
355 |
|
| 277 |
push( |
356 |
push( |
| 278 |
@errors, |
357 |
@errors, |
|
Lines 282-357
sub import_patrons {
Link Here
|
| 282 |
value => $borrower{'surname'} . ' / ' . $borrowernumber |
361 |
value => $borrower{'surname'} . ' / ' . $borrowernumber |
| 283 |
} |
362 |
} |
| 284 |
); |
363 |
); |
| 285 |
next LINE; |
|
|
| 286 |
} |
| 287 |
# Don't add a new restriction if the existing 'combined' restriction matches this one |
| 288 |
if ( $borrower{debarred} && ( ( $borrower{debarred} ne $member->{debarred} ) || ( $borrower{debarredcomment} ne $member->{debarredcomment} ) ) ) { |
| 289 |
|
| 290 |
# Check to see if this debarment already exists |
| 291 |
my $debarrments = GetDebarments( |
| 292 |
{ |
| 293 |
borrowernumber => $borrowernumber, |
| 294 |
expiration => $borrower{debarred}, |
| 295 |
comment => $borrower{debarredcomment} |
| 296 |
} |
| 297 |
); |
| 298 |
|
| 299 |
# If it doesn't, then add it! |
| 300 |
unless (@$debarrments) { |
| 301 |
AddDebarment( |
| 302 |
{ |
| 303 |
borrowernumber => $borrowernumber, |
| 304 |
expiration => $borrower{debarred}, |
| 305 |
comment => $borrower{debarredcomment} |
| 306 |
} |
| 307 |
); |
| 308 |
} |
| 309 |
} |
364 |
} |
| 310 |
if ($patron->category->category_type ne 'S' && $overwrite_passwords && defined $borrower{password} && $borrower{password} ne ''){ |
|
|
| 311 |
try { |
| 312 |
$patron->set_password({ password => $borrower{password} }); |
| 313 |
} |
| 314 |
catch { |
| 315 |
if ( $_->isa('Koha::Exceptions::Password::TooShort') ) { |
| 316 |
push @errors, { passwd_too_short => 1, borrowernumber => $borrowernumber, length => $_->{length}, min_length => $_->{min_length} }; |
| 317 |
} |
| 318 |
elsif ( $_->isa('Koha::Exceptions::Password::WhitespaceCharacters') ) { |
| 319 |
push @errors, { passwd_whitespace => 1, borrowernumber => $borrowernumber } ; |
| 320 |
} |
| 321 |
elsif ( $_->isa('Koha::Exceptions::Password::TooWeak') ) { |
| 322 |
push @errors, { passwd_too_weak => 1, borrowernumber => $borrowernumber } ; |
| 323 |
} |
| 324 |
elsif ( $_->isa('Koha::Exceptions::Password::Plugin') ) { |
| 325 |
push @errors, { passwd_plugin_err => 1, borrowernumber => $borrowernumber } ; |
| 326 |
} |
| 327 |
else { |
| 328 |
push @errors, { passwd_unknown_err => 1, borrowernumber => $borrowernumber } ; |
| 329 |
} |
| 330 |
} |
| 331 |
} |
| 332 |
if ($extended) { |
| 333 |
if ($ext_preserve) { |
| 334 |
$patron_attributes = $patron->extended_attributes->merge_and_replace_with( $patron_attributes ); |
| 335 |
} |
| 336 |
eval { |
| 337 |
# We do not want to filter by branch, maybe we should? |
| 338 |
Koha::Patrons->find($borrowernumber)->extended_attributes->delete; |
| 339 |
$patron->extended_attributes($patron_attributes); |
| 340 |
}; |
| 341 |
if ($@) { |
| 342 |
# FIXME This is not an unknown error, we can do better here |
| 343 |
push @errors, { unknown_error => 1 }; |
| 344 |
} |
| 345 |
} |
| 346 |
$overwritten++; |
| 347 |
push( |
| 348 |
@feedback, |
| 349 |
{ |
| 350 |
feedback => 1, |
| 351 |
name => 'lastoverwritten', |
| 352 |
value => $borrower{'surname'} . ' / ' . $borrowernumber |
| 353 |
} |
| 354 |
); |
| 355 |
} |
365 |
} |
| 356 |
else { |
366 |
else { |
| 357 |
try { |
367 |
try { |
|
Lines 397-402
sub import_patrons {
Link Here
|
| 397 |
}); |
407 |
}); |
| 398 |
} catch { |
408 |
} catch { |
| 399 |
$invalid++; |
409 |
$invalid++; |
|
|
410 |
$success = 0; |
| 400 |
my $patron_id = defined $matchpoint ? $borrower{$matchpoint} : $matchpoint_attr_type; |
411 |
my $patron_id = defined $matchpoint ? $borrower{$matchpoint} : $matchpoint_attr_type; |
| 401 |
if ( $_->isa('Koha::Exceptions::Patron::Attribute::UniqueIDConstraint') ) { |
412 |
if ( $_->isa('Koha::Exceptions::Patron::Attribute::UniqueIDConstraint') ) { |
| 402 |
push @errors, { patron_attribute_unique_id_constraint => 1, patron_id => $patron_id, attribute => $_->attribute }; |
413 |
push @errors, { patron_attribute_unique_id_constraint => 1, patron_id => $patron_id, attribute => $_->attribute }; |
|
Lines 406-411
sub import_patrons {
Link Here
|
| 406 |
push @errors, { patron_attribute_non_repeatable => 1, patron_id => $patron_id, attribute => $_->attribute }; |
417 |
push @errors, { patron_attribute_non_repeatable => 1, patron_id => $patron_id, attribute => $_->attribute }; |
| 407 |
|
418 |
|
| 408 |
} else { |
419 |
} else { |
|
|
420 |
use Data::Printer colored => 1; warn p $_; |
| 409 |
push @errors, { unknown_error => 1 }; |
421 |
push @errors, { unknown_error => 1 }; |
| 410 |
} |
422 |
} |
| 411 |
push( |
423 |
push( |
|
Lines 418-423
sub import_patrons {
Link Here
|
| 418 |
}; |
430 |
}; |
| 419 |
} |
431 |
} |
| 420 |
|
432 |
|
|
|
433 |
next LINE unless $success; |
| 434 |
|
| 421 |
# Add a guarantor if we are given a relationship |
435 |
# Add a guarantor if we are given a relationship |
| 422 |
if ( $guarantor_id ) { |
436 |
if ( $guarantor_id ) { |
| 423 |
my $relationship = Koha::Patron::Relationships->find( |
437 |
my $relationship = Koha::Patron::Relationships->find( |