|
Lines 1163-1168
sub get_marc_host {
Link Here
|
| 1163 |
} |
1163 |
} |
| 1164 |
} |
1164 |
} |
| 1165 |
|
1165 |
|
|
|
1166 |
=head3 link_marc_host |
| 1167 |
|
| 1168 |
=cut |
| 1169 |
|
| 1170 |
sub link_marc_host { |
| 1171 |
my ( $self, $params ) = @_; |
| 1172 |
|
| 1173 |
my $host = Koha::Biblios->find( $params->{biblionumber} ); |
| 1174 |
return unless $host; |
| 1175 |
|
| 1176 |
my $marcflavour = C4::Context->preference('marcflavour'); |
| 1177 |
my $marc_host = $host->metadata->record; |
| 1178 |
my %sfd; |
| 1179 |
my $field; |
| 1180 |
my $host_field; |
| 1181 |
|
| 1182 |
if ( $marcflavour eq 'MARC21' ) { |
| 1183 |
# Author |
| 1184 |
if ( $field = |
| 1185 |
$marc_host->field('100') || $marc_host->field('110') || $marc_host->field('111') ) |
| 1186 |
{ |
| 1187 |
my $s = $field->as_string('ab'); |
| 1188 |
if ($s) { |
| 1189 |
$sfd{a} = $s; |
| 1190 |
} |
| 1191 |
} |
| 1192 |
# Title |
| 1193 |
if ( $field = $marc_host->field('245') ) { |
| 1194 |
my $s = $field->as_string('ab'); |
| 1195 |
if ($s) { |
| 1196 |
$sfd{t} = $s; |
| 1197 |
} |
| 1198 |
} |
| 1199 |
# Uniform title |
| 1200 |
if ( $field = $marc_host->field('240') ) { |
| 1201 |
my $s = $field->as_string('a'); |
| 1202 |
if ($s) { |
| 1203 |
$sfd{s} = $s; |
| 1204 |
} |
| 1205 |
} |
| 1206 |
# Publication |
| 1207 |
if ( $field = $marc_host->field('260') ) { |
| 1208 |
my $s = $field->as_string('abc'); |
| 1209 |
if ($s) { |
| 1210 |
$sfd{d} = $s; |
| 1211 |
} |
| 1212 |
} |
| 1213 |
# Edition |
| 1214 |
if ( $field = $marc_host->field('250') ) { |
| 1215 |
my $s = $field->as_string('ab'); |
| 1216 |
if ($s) { |
| 1217 |
$sfd{b} = $s; |
| 1218 |
} |
| 1219 |
} |
| 1220 |
# ISSN |
| 1221 |
if ( $field = $marc_host->field('022') ) { |
| 1222 |
my $s = $field->as_string('a'); |
| 1223 |
if ($s) { |
| 1224 |
$sfd{x} = $s; |
| 1225 |
} |
| 1226 |
} |
| 1227 |
# ISBN |
| 1228 |
if ( $field = $marc_host->field('020') ) { |
| 1229 |
my $s = $field->as_string('a'); |
| 1230 |
if ($s) { |
| 1231 |
$sfd{z} = $s; |
| 1232 |
} |
| 1233 |
} |
| 1234 |
if ( C4::Context->preference('UseControlNumber') ) { |
| 1235 |
# Control number |
| 1236 |
if ( $field = $marc_host->field('001') ) { |
| 1237 |
$sfd{w} = $field->data(),; |
| 1238 |
} |
| 1239 |
# Control number identifier |
| 1240 |
if ( $field = $marc_host->field('003') ) { |
| 1241 |
$sfd{w} = '('.$field->data().')'.$sfd{w}; |
| 1242 |
} |
| 1243 |
} |
| 1244 |
$host_field = MARC::Field->new( 773, '0', ' ', %sfd ); |
| 1245 |
return $host_field; |
| 1246 |
} |
| 1247 |
elsif ( $marcflavour eq 'UNIMARC' ) { |
| 1248 |
|
| 1249 |
#author |
| 1250 |
if ( $field = |
| 1251 |
$marc_host->field('700') || $marc_host->field('710') || $marc_host->field('720') ) |
| 1252 |
{ |
| 1253 |
my $s = $field->as_string('ab'); |
| 1254 |
if ($s) { |
| 1255 |
$sfd{a} = $s; |
| 1256 |
} |
| 1257 |
} |
| 1258 |
|
| 1259 |
#title |
| 1260 |
if ( $field = $marc_host->field('200') ) { |
| 1261 |
my $s = $field->as_string('a'); |
| 1262 |
if ($s) { |
| 1263 |
$sfd{t} = $s; |
| 1264 |
} |
| 1265 |
} |
| 1266 |
|
| 1267 |
#place of publicaton |
| 1268 |
if ( $field = $marc_host->field('210') ) { |
| 1269 |
my $s = $field->as_string('a'); |
| 1270 |
if ($s) { |
| 1271 |
$sfd{c} = $s; |
| 1272 |
} |
| 1273 |
} |
| 1274 |
|
| 1275 |
#date of publication |
| 1276 |
if ( $field = $marc_host->field('210') ) { |
| 1277 |
my $s = $field->as_string('d'); |
| 1278 |
if ($s) { |
| 1279 |
$sfd{d} = $s; |
| 1280 |
} |
| 1281 |
} |
| 1282 |
|
| 1283 |
#edition statement |
| 1284 |
if ( $field = $marc_host->field('205') ) { |
| 1285 |
my $s = $field->as_string(); |
| 1286 |
if ($s) { |
| 1287 |
$sfd{e} = $s; |
| 1288 |
} |
| 1289 |
} |
| 1290 |
|
| 1291 |
#URL |
| 1292 |
if ( $field = $marc_host->field('856') ) { |
| 1293 |
my $s = $field->as_string('u'); |
| 1294 |
if ($s) { |
| 1295 |
$sfd{u} = $s; |
| 1296 |
} |
| 1297 |
} |
| 1298 |
|
| 1299 |
#ISSN |
| 1300 |
if ( $field = $marc_host->field('011') ) { |
| 1301 |
my $s = $field->as_string('a'); |
| 1302 |
if ($s) { |
| 1303 |
$sfd{x} = $s; |
| 1304 |
} |
| 1305 |
} |
| 1306 |
|
| 1307 |
#ISBN |
| 1308 |
if ( $field = $marc_host->field('010') ) { |
| 1309 |
my $s = $field->as_string('a'); |
| 1310 |
if ($s) { |
| 1311 |
$sfd{y} = $s; |
| 1312 |
} |
| 1313 |
} |
| 1314 |
if ( $field = $marc_host->field('001') ) { |
| 1315 |
$sfd{0} = $field->data(),; |
| 1316 |
} |
| 1317 |
$host_field = MARC::Field->new( 461, '0', ' ', %sfd ); |
| 1318 |
return $host_field; |
| 1319 |
} |
| 1320 |
|
| 1321 |
my $marc_record = $self->metadata->record; |
| 1322 |
$marc_record->append_fields($host_field); |
| 1323 |
|
| 1324 |
C4::Biblio::ModBiblioMarc($marc_record, $self->biblionumber); |
| 1325 |
return $self; |
| 1326 |
} |
| 1327 |
|
| 1166 |
=head3 recalls |
1328 |
=head3 recalls |
| 1167 |
|
1329 |
|
| 1168 |
my $recalls = $biblio->recalls; |
1330 |
my $recalls = $biblio->recalls; |
| 1169 |
- |
|
|