|
Lines 46-51
use Koha::SearchEngine::Indexer;
Link Here
|
| 46 |
use Koha::Plugins::Handler; |
46 |
use Koha::Plugins::Handler; |
| 47 |
use Koha::Logger; |
47 |
use Koha::Logger; |
| 48 |
use List::MoreUtils qw( uniq any ); |
48 |
use List::MoreUtils qw( uniq any ); |
|
|
49 |
use Array::Utils qw( array_minus ); |
| 49 |
|
50 |
|
| 50 |
our ( @ISA, @EXPORT_OK ); |
51 |
our ( @ISA, @EXPORT_OK ); |
| 51 |
|
52 |
|
|
Lines 76-81
BEGIN {
Link Here
|
| 76 |
GetImportRecordsRange |
77 |
GetImportRecordsRange |
| 77 |
GetItemNumbersFromImportBatch |
78 |
GetItemNumbersFromImportBatch |
| 78 |
GetImportItemsBranches |
79 |
GetImportItemsBranches |
|
|
80 |
GetBadBranchesImportItems |
| 79 |
|
81 |
|
| 80 |
GetImportBatchStatus |
82 |
GetImportBatchStatus |
| 81 |
SetImportBatchStatus |
83 |
SetImportBatchStatus |
|
Lines 1334-1339
sub GetImportItemsBranches {
Link Here
|
| 1334 |
return uniq @branch; |
1336 |
return uniq @branch; |
| 1335 |
} |
1337 |
} |
| 1336 |
|
1338 |
|
|
|
1339 |
=head2 GetBadBranchesImportItems |
| 1340 |
|
| 1341 |
my @results = GetBadBranchesImportItems($batch_id); |
| 1342 |
|
| 1343 |
Returns an array of bad branches imported items. |
| 1344 |
|
| 1345 |
=cut |
| 1346 |
|
| 1347 |
sub GetBadBranchesImportItems { |
| 1348 |
my ($batch_id) = @_; |
| 1349 |
|
| 1350 |
my $dbh = C4::Context->dbh; |
| 1351 |
my $query = "SELECT import_items_id, import_record_id, import_items.marcxml, encoding |
| 1352 |
FROM import_items |
| 1353 |
JOIN import_records USING (import_record_id) |
| 1354 |
WHERE import_batch_id = ? |
| 1355 |
ORDER BY import_items_id"; |
| 1356 |
my @params; |
| 1357 |
push( @params, $batch_id ); |
| 1358 |
my $sth = $dbh->prepare($query); |
| 1359 |
$sth->execute(@params); |
| 1360 |
my $results = $sth->fetchall_arrayref( {} ); |
| 1361 |
my @items; |
| 1362 |
|
| 1363 |
my @import_items_branches = GetImportItemsBranches($batch_id); |
| 1364 |
my @branches = map { $_->branchcode } Koha::Libraries->search->as_list; |
| 1365 |
my @missing_branches = array_minus( @import_items_branches, @branches ); |
| 1366 |
my ( $homebranchfield, $homebranchsubfield ) = GetMarcFromKohaField('items.homebranch'); |
| 1367 |
my ( $holdingbranchfield, $holdingbranchsubfield ) = GetMarcFromKohaField('items.holdingbranch'); |
| 1368 |
|
| 1369 |
foreach my $row (@$results) { |
| 1370 |
my $item_marc = |
| 1371 |
MARC::Record->new_from_xml( StripNonXmlChars( $row->{'marcxml'} ), 'UTF-8', $row->{'encoding'} ); |
| 1372 |
my $title = GetTitleImportRecord( $row->{'import_record_id'} ); |
| 1373 |
foreach my $branch (@missing_branches) { |
| 1374 |
if ( $item_marc->subfield( $homebranchfield, $homebranchsubfield ) eq $branch ) { |
| 1375 |
push @items, { title => $title, branch => $branch }; |
| 1376 |
} |
| 1377 |
if ( $item_marc->subfield( $holdingbranchfield, $holdingbranchsubfield ) eq $branch ) { |
| 1378 |
push @items, { title => $title, branch => $branch }; |
| 1379 |
} |
| 1380 |
} |
| 1381 |
} |
| 1382 |
$sth->finish(); |
| 1383 |
return uniq @items; |
| 1384 |
} |
| 1385 |
|
| 1386 |
=head2 GetTitleImportRecord |
| 1387 |
|
| 1388 |
my $status = GetTitleImportRecord($import_record_id); |
| 1389 |
|
| 1390 |
=cut |
| 1391 |
|
| 1392 |
sub GetTitleImportRecord { |
| 1393 |
my ($import_record_id) = @_; |
| 1394 |
|
| 1395 |
my $dbh = C4::Context->dbh; |
| 1396 |
my $sth = $dbh->prepare( |
| 1397 |
"SELECT import_record_id, import_records.marcxml, encoding |
| 1398 |
FROM import_records WHERE import_record_id = ?" |
| 1399 |
); |
| 1400 |
$sth->execute($import_record_id); |
| 1401 |
my $record = $sth->fetchall_arrayref( {} ); |
| 1402 |
my $marc_record = MARC::Record->new_from_xml( |
| 1403 |
StripNonXmlChars( $record->[0]->{'marcxml'} ), 'UTF-8', |
| 1404 |
$record->[0]->{'encoding'} |
| 1405 |
); |
| 1406 |
$sth->finish(); |
| 1407 |
my $title = $marc_record->field('245')->subfield('a'); |
| 1408 |
return $title; |
| 1409 |
} |
| 1410 |
|
| 1337 |
=head2 GetBestRecordMatch |
1411 |
=head2 GetBestRecordMatch |
| 1338 |
|
1412 |
|
| 1339 |
my $record_id = GetBestRecordMatch($import_record_id); |
1413 |
my $record_id = GetBestRecordMatch($import_record_id); |