|
Lines 1197-1202
sub get_marc_host {
Link Here
|
| 1197 |
} |
1197 |
} |
| 1198 |
} |
1198 |
} |
| 1199 |
|
1199 |
|
|
|
1200 |
=head3 link_marc_host |
| 1201 |
|
| 1202 |
=cut |
| 1203 |
|
| 1204 |
sub link_marc_host { |
| 1205 |
my ( $self, $params ) = @_; |
| 1206 |
|
| 1207 |
my $host = Koha::Biblios->find( $params->{biblionumber} ); |
| 1208 |
return unless $host; |
| 1209 |
|
| 1210 |
my $marcflavour = C4::Context->preference('marcflavour'); |
| 1211 |
my $marc_host = $host->metadata->record; |
| 1212 |
my %sfd; |
| 1213 |
my $field; |
| 1214 |
my $host_field; |
| 1215 |
|
| 1216 |
if ( $marcflavour eq 'MARC21' ) { |
| 1217 |
# Author |
| 1218 |
if ( $field = |
| 1219 |
$marc_host->field('100') || $marc_host->field('110') || $marc_host->field('111') ) |
| 1220 |
{ |
| 1221 |
my $s = $field->as_string('ab'); |
| 1222 |
if ($s) { |
| 1223 |
$sfd{a} = $s; |
| 1224 |
} |
| 1225 |
} |
| 1226 |
# Title |
| 1227 |
if ( $field = $marc_host->field('245') ) { |
| 1228 |
my $s = $field->as_string('ab'); |
| 1229 |
if ($s) { |
| 1230 |
$sfd{t} = $s; |
| 1231 |
} |
| 1232 |
} |
| 1233 |
# Uniform title |
| 1234 |
if ( $field = $marc_host->field('240') ) { |
| 1235 |
my $s = $field->as_string('a'); |
| 1236 |
if ($s) { |
| 1237 |
$sfd{s} = $s; |
| 1238 |
} |
| 1239 |
} |
| 1240 |
# Publication |
| 1241 |
if ( $field = $marc_host->field('260') ) { |
| 1242 |
my $s = $field->as_string('abc'); |
| 1243 |
if ($s) { |
| 1244 |
$sfd{d} = $s; |
| 1245 |
} |
| 1246 |
} |
| 1247 |
# Edition |
| 1248 |
if ( $field = $marc_host->field('250') ) { |
| 1249 |
my $s = $field->as_string('ab'); |
| 1250 |
if ($s) { |
| 1251 |
$sfd{b} = $s; |
| 1252 |
} |
| 1253 |
} |
| 1254 |
# ISSN |
| 1255 |
if ( $field = $marc_host->field('022') ) { |
| 1256 |
my $s = $field->as_string('a'); |
| 1257 |
if ($s) { |
| 1258 |
$sfd{x} = $s; |
| 1259 |
} |
| 1260 |
} |
| 1261 |
# ISBN |
| 1262 |
if ( $field = $marc_host->field('020') ) { |
| 1263 |
my $s = $field->as_string('a'); |
| 1264 |
if ($s) { |
| 1265 |
$sfd{z} = $s; |
| 1266 |
} |
| 1267 |
} |
| 1268 |
if ( C4::Context->preference('UseControlNumber') ) { |
| 1269 |
# Control number |
| 1270 |
if ( $field = $marc_host->field('001') ) { |
| 1271 |
$sfd{w} = $field->data(),; |
| 1272 |
} |
| 1273 |
# Control number identifier |
| 1274 |
if ( $field = $marc_host->field('003') ) { |
| 1275 |
$sfd{w} = '('.$field->data().')'.$sfd{w}; |
| 1276 |
} |
| 1277 |
} |
| 1278 |
$host_field = MARC::Field->new( 773, '0', ' ', %sfd ); |
| 1279 |
return $host_field; |
| 1280 |
} |
| 1281 |
elsif ( $marcflavour eq 'UNIMARC' ) { |
| 1282 |
|
| 1283 |
#author |
| 1284 |
if ( $field = |
| 1285 |
$marc_host->field('700') || $marc_host->field('710') || $marc_host->field('720') ) |
| 1286 |
{ |
| 1287 |
my $s = $field->as_string('ab'); |
| 1288 |
if ($s) { |
| 1289 |
$sfd{a} = $s; |
| 1290 |
} |
| 1291 |
} |
| 1292 |
|
| 1293 |
#title |
| 1294 |
if ( $field = $marc_host->field('200') ) { |
| 1295 |
my $s = $field->as_string('a'); |
| 1296 |
if ($s) { |
| 1297 |
$sfd{t} = $s; |
| 1298 |
} |
| 1299 |
} |
| 1300 |
|
| 1301 |
#place of publicaton |
| 1302 |
if ( $field = $marc_host->field('210') ) { |
| 1303 |
my $s = $field->as_string('a'); |
| 1304 |
if ($s) { |
| 1305 |
$sfd{c} = $s; |
| 1306 |
} |
| 1307 |
} |
| 1308 |
|
| 1309 |
#date of publication |
| 1310 |
if ( $field = $marc_host->field('210') ) { |
| 1311 |
my $s = $field->as_string('d'); |
| 1312 |
if ($s) { |
| 1313 |
$sfd{d} = $s; |
| 1314 |
} |
| 1315 |
} |
| 1316 |
|
| 1317 |
#edition statement |
| 1318 |
if ( $field = $marc_host->field('205') ) { |
| 1319 |
my $s = $field->as_string(); |
| 1320 |
if ($s) { |
| 1321 |
$sfd{e} = $s; |
| 1322 |
} |
| 1323 |
} |
| 1324 |
|
| 1325 |
#URL |
| 1326 |
if ( $field = $marc_host->field('856') ) { |
| 1327 |
my $s = $field->as_string('u'); |
| 1328 |
if ($s) { |
| 1329 |
$sfd{u} = $s; |
| 1330 |
} |
| 1331 |
} |
| 1332 |
|
| 1333 |
#ISSN |
| 1334 |
if ( $field = $marc_host->field('011') ) { |
| 1335 |
my $s = $field->as_string('a'); |
| 1336 |
if ($s) { |
| 1337 |
$sfd{x} = $s; |
| 1338 |
} |
| 1339 |
} |
| 1340 |
|
| 1341 |
#ISBN |
| 1342 |
if ( $field = $marc_host->field('010') ) { |
| 1343 |
my $s = $field->as_string('a'); |
| 1344 |
if ($s) { |
| 1345 |
$sfd{y} = $s; |
| 1346 |
} |
| 1347 |
} |
| 1348 |
if ( $field = $marc_host->field('001') ) { |
| 1349 |
$sfd{0} = $field->data(),; |
| 1350 |
} |
| 1351 |
$host_field = MARC::Field->new( 461, '0', ' ', %sfd ); |
| 1352 |
return $host_field; |
| 1353 |
} |
| 1354 |
|
| 1355 |
my $marc_record = $self->metadata->record; |
| 1356 |
$marc_record->append_fields($host_field); |
| 1357 |
|
| 1358 |
C4::Biblio::ModBiblioMarc($marc_record, $self->biblionumber); |
| 1359 |
return $self; |
| 1360 |
} |
| 1361 |
|
| 1200 |
=head3 recalls |
1362 |
=head3 recalls |
| 1201 |
|
1363 |
|
| 1202 |
my $recalls = $biblio->recalls; |
1364 |
my $recalls = $biblio->recalls; |
| 1203 |
- |
|
|