Lines 326-331
use C4::Biblio qw( GetMarcFromKohaField );
Link Here
|
326 |
} |
326 |
} |
327 |
} |
327 |
} |
328 |
|
328 |
|
|
|
329 |
{ |
330 |
my @loop_borrowers_relationships; |
331 |
my @relationships = Koha::Patron::Relationships->search(); |
332 |
my @patrons_guarantors = Koha::Patron::Relationships::guarantors(@relationships)->as_list; |
333 |
my @patrons_guarantees = Koha::Patron::Relationships::guarantees(@relationships)->as_list; |
334 |
|
335 |
foreach my $patron_guarantor (@patrons_guarantors) { |
336 |
foreach my $patron_guarantee (@patrons_guarantees) { |
337 |
if ($patron_guarantor->borrowernumber == $patron_guarantee->borrowernumber) { |
338 |
|
339 |
my $relationship_id; |
340 |
my $guarantee_id; |
341 |
my $size_list; |
342 |
my $tmp_garantor_id = $patron_guarantor->borrowernumber; |
343 |
my @relationship_ids; |
344 |
my @guarantor_to_find; |
345 |
|
346 |
push @guarantor_to_find, $patron_guarantor->borrowernumber; |
347 |
|
348 |
do { |
349 |
my @relationship_for_go = Koha::Patron::Relationships->search( |
350 |
{ |
351 |
-or => [ |
352 |
'guarantor_id' => { '=', $tmp_garantor_id }, |
353 |
] |
354 |
}, |
355 |
)->as_list; |
356 |
$size_list = scalar @relationship_for_go; |
357 |
|
358 |
foreach my $relation (@relationship_for_go) { |
359 |
$relationship_id = $relation->id; |
360 |
unless (grep { $_ == $relationship_id } @relationship_ids) { |
361 |
push @relationship_ids, $relationship_id; |
362 |
} |
363 |
$guarantee_id = $relation->guarantee_id; |
364 |
|
365 |
if (grep { $_ eq $guarantee_id } @guarantor_to_find) { |
366 |
last; |
367 |
} |
368 |
|
369 |
my @relationship_for_go = Koha::Patron::Relationships->search( |
370 |
{ |
371 |
-or => [ |
372 |
'guarantor_id' => { '=', $guarantee_id }, |
373 |
] |
374 |
}, |
375 |
)->as_list; |
376 |
$size_list = scalar @relationship_for_go; |
377 |
|
378 |
push @guarantor_to_find, $guarantee_id; |
379 |
|
380 |
foreach my $relation (@relationship_for_go) { |
381 |
$relationship_id = $relation->id; |
382 |
unless (grep { $_ == $relationship_id } @relationship_ids) { |
383 |
push @relationship_ids, $relationship_id; |
384 |
} |
385 |
$guarantee_id = $relation->guarantee_id; |
386 |
|
387 |
if (grep { $_ eq $guarantee_id } @guarantor_to_find) { |
388 |
last; |
389 |
} |
390 |
} |
391 |
if (grep { $_ eq $guarantee_id } @guarantor_to_find) { |
392 |
last; |
393 |
} |
394 |
} |
395 |
|
396 |
$tmp_garantor_id = $guarantee_id; |
397 |
} while ((!grep { $_ eq $guarantee_id } @guarantor_to_find) && $size_list > 0); |
398 |
|
399 |
if ($patron_guarantor->borrowernumber == $guarantee_id) { |
400 |
unless (grep { join("", sort @$_) eq join("", sort @relationship_ids) } @loop_borrowers_relationships) { |
401 |
push @loop_borrowers_relationships, \@relationship_ids; |
402 |
} |
403 |
} |
404 |
} |
405 |
} |
406 |
} |
407 |
|
408 |
if (scalar @loop_borrowers_relationships > 0) { |
409 |
new_section("The list of relationships id with guarantors who are also guarantee."); |
410 |
foreach my $table (@loop_borrowers_relationships) { |
411 |
new_item( |
412 |
sprintf "Relationships connected : %s |", |
413 |
join(" | ", @$table) |
414 |
); |
415 |
} |
416 |
new_hint("Relationships that form guarantor loops must be deleted"); |
417 |
} |
418 |
} |
419 |
|
329 |
sub new_section { |
420 |
sub new_section { |
330 |
my ( $name ) = @_; |
421 |
my ( $name ) = @_; |
331 |
say "\n== $name =="; |
422 |
say "\n== $name =="; |
332 |
- |
|
|