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

(-)a/C4/ImportBatch.pm (+74 lines)
Lines 42-47 use Koha::SearchEngine::Indexer; Link Here
42
use Koha::Plugins::Handler;
42
use Koha::Plugins::Handler;
43
use Koha::Logger;
43
use Koha::Logger;
44
use List::MoreUtils qw( uniq any );
44
use List::MoreUtils qw( uniq any );
45
use Array::Utils qw( array_minus );
45
46
46
our ( @ISA, @EXPORT_OK );
47
our ( @ISA, @EXPORT_OK );
47
48
Lines 74-79 BEGIN { Link Here
74
        GetImportRecordsRange
75
        GetImportRecordsRange
75
        GetItemNumbersFromImportBatch
76
        GetItemNumbersFromImportBatch
76
        GetImportItemsBranches
77
        GetImportItemsBranches
78
        GetBadBranchesImportItems
77
79
78
        GetImportBatchStatus
80
        GetImportBatchStatus
79
        SetImportBatchStatus
81
        SetImportBatchStatus
Lines 1304-1309 sub GetImportItemsBranches { Link Here
1304
    return uniq @branch;
1306
    return uniq @branch;
1305
}
1307
}
1306
1308
1309
=head2 GetBadBranchesImportItems
1310
1311
  my @results = GetBadBranchesImportItems($batch_id);
1312
1313
Returns an array of bad branches imported items.
1314
1315
=cut
1316
1317
sub GetBadBranchesImportItems {
1318
    my ($batch_id) = @_;
1319
1320
    my $dbh   = C4::Context->dbh;
1321
    my $query = "SELECT import_items_id, import_record_id, import_items.marcxml, encoding
1322
        FROM import_items
1323
        JOIN import_records USING (import_record_id)
1324
        WHERE import_batch_id = ?
1325
        ORDER BY import_items_id";
1326
    my @params;
1327
    push( @params, $batch_id );
1328
    my $sth = $dbh->prepare($query);
1329
    $sth->execute(@params);
1330
    my $results = $sth->fetchall_arrayref( {} );
1331
    my @items;
1332
1333
    my @import_items_branches = GetImportItemsBranches($batch_id);
1334
    my @branches              = map { $_->branchcode } Koha::Libraries->search->as_list;
1335
    my @missing_branches      = array_minus( @import_items_branches, @branches );
1336
    my ( $homebranchfield, $homebranchsubfield )       = GetMarcFromKohaField('items.homebranch');
1337
    my ( $holdingbranchfield, $holdingbranchsubfield ) = GetMarcFromKohaField('items.holdingbranch');
1338
1339
    foreach my $row (@$results) {
1340
        my $item_marc =
1341
            MARC::Record->new_from_xml( StripNonXmlChars( $row->{'marcxml'} ), 'UTF-8', $row->{'encoding'} );
1342
        my $title = GetTitleImportRecord( $row->{'import_record_id'} );
1343
        foreach my $branch (@missing_branches) {
1344
            if ( $item_marc->subfield( $homebranchfield, $homebranchsubfield ) eq $branch ) {
1345
                push @items, { title => $title, branch => $branch };
1346
            }
1347
            if ( $item_marc->subfield( $holdingbranchfield, $holdingbranchsubfield ) eq $branch ) {
1348
                push @items, { title => $title, branch => $branch };
1349
            }
1350
        }
1351
    }
1352
    $sth->finish();
1353
    return uniq @items;
1354
}
1355
1356
=head2 GetTitleImportRecord
1357
1358
  my $status = GetTitleImportRecord($import_record_id);
1359
1360
=cut
1361
1362
sub GetTitleImportRecord {
1363
    my ($import_record_id) = @_;
1364
1365
    my $dbh = C4::Context->dbh;
1366
    my $sth = $dbh->prepare(
1367
        "SELECT import_record_id, import_records.marcxml, encoding
1368
        FROM import_records WHERE import_record_id = ?"
1369
    );
1370
    $sth->execute($import_record_id);
1371
    my $record      = $sth->fetchall_arrayref( {} );
1372
    my $marc_record = MARC::Record->new_from_xml(
1373
        StripNonXmlChars( $record->[0]->{'marcxml'} ), 'UTF-8',
1374
        $record->[0]->{'encoding'}
1375
    );
1376
    $sth->finish();
1377
    my $title = $marc_record->field('245')->subfield('a');
1378
    return $title;
1379
}
1380
1307
=head2 GetBestRecordMatch
1381
=head2 GetBestRecordMatch
1308
1382
1309
  my $record_id = GetBestRecordMatch($import_record_id);
1383
  my $record_id = GetBestRecordMatch($import_record_id);
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/tools/manage-marc-import.tt (+11 lines)
Lines 266-271 Link Here
266
                                </span>
266
                                </span>
267
                            </div>
267
                            </div>
268
                        [% END %]
268
                        [% END %]
269
                        [% IF ( bad_titles ) %]
270
                            <div class="dialog alert">
271
                                <span>The problems come from these items:</span>
272
                                <span>
273
                                    [% FOREACH title IN titles %]
274
                                        [% title | html %]
275
                                         |
276
                                    [% END %]
277
                                </span>
278
                            </div>
279
                        [% END %]
269
                    </form>
280
                    </form>
270
                    <!-- /#import_batch_form -->
281
                    <!-- /#import_batch_form -->
271
                </div>
282
                </div>
(-)a/tools/manage-marc-import.pl (-5 / +15 lines)
Lines 31-43 use C4::Koha; Link Here
31
use C4::Auth   qw( get_template_and_user );
31
use C4::Auth   qw( get_template_and_user );
32
use C4::Output qw( output_html_with_http_headers );
32
use C4::Output qw( output_html_with_http_headers );
33
use C4::ImportBatch
33
use C4::ImportBatch
34
    qw( CleanBatch DeleteBatch GetImportBatch GetImportBatchOverlayAction GetImportBatchNoMatchAction GetImportBatchItemAction SetImportBatchOverlayAction SetImportBatchNoMatchAction SetImportBatchItemAction BatchFindDuplicates SetImportBatchMatcher GetItemNumbersFromImportBatch GetImportBatchRangeDesc GetNumberOfNonZ3950ImportBatches BatchCommitRecords BatchRevertRecords GetImportItemsBranches );
34
    qw( CleanBatch DeleteBatch GetImportBatch GetImportBatchOverlayAction GetImportBatchNoMatchAction GetImportBatchItemAction SetImportBatchOverlayAction SetImportBatchNoMatchAction SetImportBatchItemAction BatchFindDuplicates SetImportBatchMatcher GetItemNumbersFromImportBatch GetImportBatchRangeDesc GetNumberOfNonZ3950ImportBatches BatchCommitRecords BatchRevertRecords GetImportItemsBranches GetBadBranchesImportItems );
35
use C4::Matcher;
35
use C4::Matcher;
36
use C4::Labels::Batch;
36
use C4::Labels::Batch;
37
use Koha::BiblioFrameworks;
37
use Koha::BiblioFrameworks;
38
use Koha::BackgroundJob::MARCImportCommitBatch;
38
use Koha::BackgroundJob::MARCImportCommitBatch;
39
use Koha::BackgroundJob::MARCImportRevertBatch;
39
use Koha::BackgroundJob::MARCImportRevertBatch;
40
use Array::Utils qw( array_minus );
40
use Array::Utils qw( array_minus );
41
use List::MoreUtils qw( uniq any );
41
42
42
use Koha::Logger;
43
use Koha::Logger;
43
44
Lines 95-105 if ( $op eq "" ) { Link Here
95
        import_batches_list( $template, $offset, $results_per_page );
96
        import_batches_list( $template, $offset, $results_per_page );
96
    } else {
97
    } else {
97
        my @import_items_branches = GetImportItemsBranches($import_batch_id);
98
        my @import_items_branches = GetImportItemsBranches($import_batch_id);
98
        my @branches = map { $_->branchcode } Koha::Libraries->search->as_list;
99
        my @import_items = GetBadBranchesImportItems($import_batch_id);
99
        my @missing_branches = array_minus( @import_items_branches, @branches );
100
        my @bad_item_titles;
101
        my @missing_branches;
102
        foreach my $item (@import_items) {
103
            push @bad_item_titles,  $item->{title};
104
            push @missing_branches, $item->{branch};
105
        }
106
        @bad_item_titles  = uniq @bad_item_titles;
107
        @missing_branches = uniq @missing_branches;
108
100
        $template->param(
109
        $template->param(
110
            bad_titles       => scalar @bad_item_titles,
111
            titles           => \@bad_item_titles,
101
            missing_branches => scalar @missing_branches,
112
            missing_branches => scalar @missing_branches,
102
            branches => \@missing_branches
113
            branches         => \@missing_branches,
103
        );
114
        );
104
        import_records_list( $template, $import_batch_id, $offset, $results_per_page );
115
        import_records_list( $template, $import_batch_id, $offset, $results_per_page );
105
    }
116
    }
106
- 

Return to bug 21272