|
Lines 87-94
sub process {
Link Here
|
| 87 |
my $record = $biblio->metadata->record; |
87 |
my $record = $biblio->metadata->record; |
| 88 |
C4::MarcModificationTemplates::ModifyRecordWithTemplate( $mmtid, $record ); |
88 |
C4::MarcModificationTemplates::ModifyRecordWithTemplate( $mmtid, $record ); |
| 89 |
my $frameworkcode = C4::Biblio::GetFrameworkCode( $biblionumber ); |
89 |
my $frameworkcode = C4::Biblio::GetFrameworkCode( $biblionumber ); |
| 90 |
my $biblioitemnumber = $biblio->biblioitem->biblioitemnumber; |
90 |
|
| 91 |
C4::Items::AddItemFromMarc( $record, $biblionumber, { biblioitemnumber => $biblioitemnumber } ); |
91 |
if ( marc_record_contains_item_data($record) ) { |
|
|
92 |
my ( $can_add_item, $add_item_error_message ) = can_add_item_from_marc_record($record); |
| 93 |
return $add_item_error_message unless $can_add_item; |
| 94 |
|
| 95 |
my $biblioitemnumber = $biblio->biblioitem->biblioitemnumber; |
| 96 |
C4::Items::AddItemFromMarc( $record, $biblionumber, { biblioitemnumber => $biblioitemnumber } ); |
| 97 |
} |
| 92 |
|
98 |
|
| 93 |
C4::Biblio::ModBiblio( $record, $biblionumber, $frameworkcode, { |
99 |
C4::Biblio::ModBiblio( $record, $biblionumber, $frameworkcode, { |
| 94 |
overlay_context => $args->{overlay_context}, |
100 |
overlay_context => $args->{overlay_context}, |
|
Lines 166-169
sub additional_report {
Link Here
|
| 166 |
}; |
172 |
}; |
| 167 |
} |
173 |
} |
| 168 |
|
174 |
|
|
|
175 |
=head3 marc_record_contains_item_data |
| 176 |
|
| 177 |
Verify if marc record contains item data |
| 178 |
|
| 179 |
=cut |
| 180 |
|
| 181 |
sub marc_record_contains_item_data { |
| 182 |
my ($record) = @_; |
| 183 |
|
| 184 |
my $itemfield = C4::Context->preference('marcflavour') eq 'UNIMARC' ? '995' : '952'; |
| 185 |
my @item_fields = $record->field($itemfield); |
| 186 |
return scalar @item_fields; |
| 187 |
} |
| 188 |
|
| 189 |
=head3 can_add_item_from_marc_record |
| 190 |
|
| 191 |
Checks if adding an item from MARC can be done by checking mandatory fields |
| 192 |
|
| 193 |
=cut |
| 194 |
|
| 195 |
sub can_add_item_from_marc_record { |
| 196 |
my ($record) = @_; |
| 197 |
|
| 198 |
# Check that holdingbranch is set |
| 199 |
my $holdingbranch_mss = Koha::MarcSubfieldStructures->find( |
| 200 |
{ |
| 201 |
kohafield => 'items.holdingbranch', |
| 202 |
} |
| 203 |
); |
| 204 |
my @holdingbranch_exists = |
| 205 |
grep { $_->subfield( $holdingbranch_mss->tagsubfield ) } $record->field( $holdingbranch_mss->tagfield ); |
| 206 |
return ( 0, "No holdingbranch subfield found" ) unless ( scalar @holdingbranch_exists ); |
| 207 |
|
| 208 |
# Check that homebranch is set |
| 209 |
my $homebranch_mss = Koha::MarcSubfieldStructures->find( |
| 210 |
{ |
| 211 |
kohafield => 'items.homebranch', |
| 212 |
} |
| 213 |
); |
| 214 |
my @homebranch_exists = |
| 215 |
grep { $_->subfield( $homebranch_mss->tagsubfield ) } $record->field( $homebranch_mss->tagfield ); |
| 216 |
return ( 0, "No homebranch subfield found" ) unless ( scalar @homebranch_exists ); |
| 217 |
|
| 218 |
# Check that itemtype is set |
| 219 |
my $item_mss = Koha::MarcSubfieldStructures->find( |
| 220 |
{ |
| 221 |
kohafield => C4::Context->preference('item-level_itypes') ? 'items.itype' : 'biblioitems.itemtype', |
| 222 |
} |
| 223 |
); |
| 224 |
my @itemtype_exists = grep { $_->subfield( $item_mss->tagsubfield ) } $record->field( $item_mss->tagfield ); |
| 225 |
return ( 0, "No itemtype subfield found" ) unless ( scalar @itemtype_exists ); |
| 226 |
|
| 227 |
return 1; |
| 228 |
} |
| 229 |
|
| 169 |
1; |
230 |
1; |
| 170 |
- |
|
|