View | Details | Raw Unified | Return to bug 35836
Collapse All | Expand All

(-)a/misc/maintenance/search_for_data_inconsistencies.pl (-1 / +91 lines)
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 $guarantor_id;
340
                my $guarantee_id;
341
                my $size_list;
342
                my $tmp_garantor_id = $patron_guarantor->borrowernumber;
343
                my @guarantor_ids;
344
345
                do {
346
                    my @relationship_for_go = Koha::Patron::Relationships->search(
347
                        {
348
                            -or => [
349
                                'guarantor_id' => { '=', $tmp_garantor_id },
350
                            ]
351
                        },
352
                    )->as_list;
353
                    $size_list = scalar @relationship_for_go;
354
355
                    foreach my $relation (@relationship_for_go) {
356
                        $guarantor_id = $relation->guarantor_id;
357
                        unless ( grep { $_ == $guarantor_id } @guarantor_ids ) {
358
                            push @guarantor_ids, $guarantor_id;
359
                        }
360
                        $guarantee_id = $relation->guarantee_id;
361
362
                        my @relationship_for_go = Koha::Patron::Relationships->search(
363
                            {
364
                                -or => [
365
                                    'guarantor_id' => { '=', $guarantee_id },
366
                                ]
367
                            },
368
                        )->as_list;
369
                        $size_list = scalar @relationship_for_go;
370
371
                        if ( $patron_guarantor->borrowernumber == $guarantee_id ) {
372
                            last;
373
                        }
374
375
                        foreach my $relation (@relationship_for_go) {
376
                            $guarantor_id = $relation->guarantor_id;
377
                            unless ( grep { $_ == $guarantor_id } @guarantor_ids ) {
378
                                push @guarantor_ids, $guarantor_id;
379
                            }
380
                            $guarantee_id = $relation->guarantee_id;
381
382
                            if ( $patron_guarantor->borrowernumber == $guarantee_id ) {
383
                                last;
384
                            }
385
                        }
386
                        if ( $patron_guarantor->borrowernumber == $guarantee_id ) {
387
                            last;
388
                        }
389
                    }
390
391
                    $tmp_garantor_id = $guarantee_id;
392
                } while ( $patron_guarantor->borrowernumber != $guarantee_id && $size_list > 0 );
393
394
                if ( $patron_guarantor->borrowernumber == $guarantee_id ) {
395
                    unless ( grep { join( "", sort @$_ ) eq join( "", sort @guarantor_ids ) }
396
                        @loop_borrowers_relationships )
397
                    {
398
                        push @loop_borrowers_relationships, \@guarantor_ids;
399
                    }
400
                }
401
            }
402
        }
403
    }
404
405
    if ( scalar @loop_borrowers_relationships > 0 ) {
406
        new_section("The list of guarantors who are also guarantee.");
407
        my $count = 0;
408
        foreach my $table (@loop_borrowers_relationships) {
409
            $count++;
410
            print "Loop $count, borrowers id  : ";
411
            foreach my $borrower_id (@$table) {
412
                print "$borrower_id | ";
413
            }
414
            print "\n";
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
- 

Return to bug 35836