Lines 216-241
sub AddBiblio {
Link Here
|
216 |
# transform the data into koha-table style data |
216 |
# transform the data into koha-table style data |
217 |
SetUTF8Flag($record); |
217 |
SetUTF8Flag($record); |
218 |
my $olddata = TransformMarcToKoha( $record, $frameworkcode ); |
218 |
my $olddata = TransformMarcToKoha( $record, $frameworkcode ); |
219 |
( $biblionumber, $error ) = _koha_add_biblio( $dbh, $olddata, $frameworkcode ); |
219 |
my $schema = Koha::Database->schema; |
220 |
$olddata->{'biblionumber'} = $biblionumber; |
220 |
try { |
221 |
( $biblioitemnumber, $error ) = _koha_add_biblioitem( $dbh, $olddata ); |
221 |
$schema->txn_do(sub { |
|
|
222 |
|
223 |
my $biblio = Koha::Biblio->new( |
224 |
{ |
225 |
frameworkcode => $frameworkcode, |
226 |
author => $olddata->{author}, |
227 |
title => $olddata->{title}, |
228 |
subtitle => $olddata->{subtitle}, |
229 |
medium => $olddata->{medium}, |
230 |
part_number => $olddata->{part_number}, |
231 |
part_name => $olddata->{part_name}, |
232 |
unititle => $olddata->{unititle}, |
233 |
notes => $olddata->{notes}, |
234 |
serial => |
235 |
( $olddata->{serial} || $olddata->{seriestitle} ? 1 : 0 ), |
236 |
seriestitle => $olddata->{seriestitle}, |
237 |
copyrightdate => $olddata->{copyrightdate}, |
238 |
datecreated => \'NOW()', |
239 |
abstract => $olddata->{abstract}, |
240 |
} |
241 |
)->store; |
242 |
$biblionumber = $biblio->biblionumber; |
243 |
|
244 |
my ($cn_sort) = GetClassSort( $olddata->{'biblioitems.cn_source'}, $olddata->{'cn_class'}, $olddata->{'cn_item'} ); |
245 |
my $biblioitem = Koha::Biblioitem->new( |
246 |
{ |
247 |
biblionumber => $biblionumber, |
248 |
volume => $olddata->{volume}, |
249 |
number => $olddata->{number}, |
250 |
itemtype => $olddata->{itemtype}, |
251 |
isbn => $olddata->{isbn}, |
252 |
issn => $olddata->{issn}, |
253 |
publicationyear => $olddata->{publicationyear}, |
254 |
publishercode => $olddata->{publishercode}, |
255 |
volumedate => $olddata->{volumedate}, |
256 |
volumedesc => $olddata->{volumedesc}, |
257 |
collectiontitle => $olddata->{collectiontitle}, |
258 |
collectionissn => $olddata->{collectionissn}, |
259 |
collectionvolume => $olddata->{collectionvolume}, |
260 |
editionstatement => $olddata->{editionstatement}, |
261 |
editionresponsibility => $olddata->{editionresponsibility}, |
262 |
illus => $olddata->{illus}, |
263 |
pages => $olddata->{pages}, |
264 |
notes => $olddata->{bnotes}, |
265 |
size => $olddata->{size}, |
266 |
place => $olddata->{place}, |
267 |
lccn => $olddata->{lccn}, |
268 |
url => $olddata->{url}, |
269 |
cn_source => $olddata->{'biblioitems.cn_source'}, |
270 |
cn_class => $olddata->{cn_class}, |
271 |
cn_item => $olddata->{cn_item}, |
272 |
cn_suffix => $olddata->{cn_suff}, |
273 |
cn_sort => $cn_sort, |
274 |
totalissues => $olddata->{totalissues}, |
275 |
ean => $olddata->{ean}, |
276 |
agerestriction => $olddata->{agerestriction}, |
277 |
} |
278 |
)->store; |
279 |
$biblioitemnumber = $biblioitem->biblioitemnumber; |
222 |
|
280 |
|
223 |
_koha_marc_update_bib_ids( $record, $frameworkcode, $biblionumber, $biblioitemnumber ); |
281 |
_koha_marc_update_bib_ids( $record, $frameworkcode, $biblionumber, $biblioitemnumber ); |
224 |
|
282 |
|
225 |
# update MARC subfield that stores biblioitems.cn_sort |
283 |
# update MARC subfield that stores biblioitems.cn_sort |
226 |
_koha_marc_update_biblioitem_cn_sort( $record, $olddata, $frameworkcode ); |
284 |
_koha_marc_update_biblioitem_cn_sort( $record, $olddata, $frameworkcode ); |
227 |
|
285 |
|
228 |
# now add the record |
286 |
# now add the record |
229 |
ModBiblioMarc( $record, $biblionumber, $frameworkcode ) unless $defer_marc_save; |
287 |
ModBiblioMarc( $record, $biblionumber, $frameworkcode ) unless $defer_marc_save; |
230 |
|
288 |
|
231 |
# update OAI-PMH sets |
289 |
# update OAI-PMH sets |
232 |
if(C4::Context->preference("OAI-PMH:AutoUpdateSets")) { |
290 |
if(C4::Context->preference("OAI-PMH:AutoUpdateSets")) { |
233 |
C4::OAI::Sets::UpdateOAISetsBiblio($biblionumber, $record); |
291 |
C4::OAI::Sets::UpdateOAISetsBiblio($biblionumber, $record); |
234 |
} |
292 |
} |
235 |
|
293 |
|
236 |
_after_biblio_action_hooks({ action => 'create', biblio_id => $biblionumber }); |
294 |
_after_biblio_action_hooks({ action => 'create', biblio_id => $biblionumber }); |
237 |
|
295 |
|
238 |
logaction( "CATALOGUING", "ADD", $biblionumber, "biblio" ) if C4::Context->preference("CataloguingLog"); |
296 |
logaction( "CATALOGUING", "ADD", $biblionumber, "biblio" ) if C4::Context->preference("CataloguingLog"); |
|
|
297 |
}); |
298 |
} catch { |
299 |
warn $_; |
300 |
return (undef, undef); |
301 |
}; |
239 |
return ( $biblionumber, $biblioitemnumber ); |
302 |
return ( $biblionumber, $biblioitemnumber ); |
240 |
} |
303 |
} |
241 |
|
304 |
|
Lines 2670-2730
sub _koha_marc_update_biblioitem_cn_sort {
Link Here
|
2670 |
} |
2733 |
} |
2671 |
} |
2734 |
} |
2672 |
|
2735 |
|
2673 |
=head2 _koha_add_biblio |
|
|
2674 |
|
2675 |
my ($biblionumber,$error) = _koha_add_biblio($dbh,$biblioitem); |
2676 |
|
2677 |
Internal function to add a biblio ($biblio is a hash with the values) |
2678 |
|
2679 |
=cut |
2680 |
|
2681 |
sub _koha_add_biblio { |
2682 |
my ( $dbh, $biblio, $frameworkcode ) = @_; |
2683 |
|
2684 |
my $error; |
2685 |
|
2686 |
# set the series flag |
2687 |
unless (defined $biblio->{'serial'}){ |
2688 |
$biblio->{'serial'} = 0; |
2689 |
if ( $biblio->{'seriestitle'} ) { $biblio->{'serial'} = 1 } |
2690 |
} |
2691 |
|
2692 |
my $query = "INSERT INTO biblio |
2693 |
SET frameworkcode = ?, |
2694 |
author = ?, |
2695 |
title = ?, |
2696 |
subtitle = ?, |
2697 |
medium = ?, |
2698 |
part_number = ?, |
2699 |
part_name = ?, |
2700 |
unititle =?, |
2701 |
notes = ?, |
2702 |
serial = ?, |
2703 |
seriestitle = ?, |
2704 |
copyrightdate = ?, |
2705 |
datecreated=NOW(), |
2706 |
abstract = ? |
2707 |
"; |
2708 |
my $sth = $dbh->prepare($query); |
2709 |
$sth->execute( |
2710 |
$frameworkcode, $biblio->{'author'}, $biblio->{'title'}, $biblio->{'subtitle'}, |
2711 |
$biblio->{'medium'}, $biblio->{'part_number'}, $biblio->{'part_name'}, $biblio->{'unititle'}, |
2712 |
$biblio->{'notes'}, $biblio->{'serial'}, $biblio->{'seriestitle'}, $biblio->{'copyrightdate'}, |
2713 |
$biblio->{'abstract'} |
2714 |
); |
2715 |
|
2716 |
my $biblionumber = $dbh->{'mysql_insertid'}; |
2717 |
if ( $dbh->errstr ) { |
2718 |
$error .= "ERROR in _koha_add_biblio $query" . $dbh->errstr; |
2719 |
warn $error; |
2720 |
} |
2721 |
|
2722 |
$sth->finish(); |
2723 |
|
2724 |
#warn "LEAVING _koha_add_biblio: ".$biblionumber."\n"; |
2725 |
return ( $biblionumber, $error ); |
2726 |
} |
2727 |
|
2728 |
=head2 _koha_modify_biblio |
2736 |
=head2 _koha_modify_biblio |
2729 |
|
2737 |
|
2730 |
my ($biblionumber,$error) == _koha_modify_biblio($dbh,$biblio,$frameworkcode); |
2738 |
my ($biblionumber,$error) == _koha_modify_biblio($dbh,$biblio,$frameworkcode); |
Lines 2835-2906
sub _koha_modify_biblioitem_nonmarc {
Link Here
|
2835 |
return ( $biblioitem->{'biblioitemnumber'}, $error ); |
2843 |
return ( $biblioitem->{'biblioitemnumber'}, $error ); |
2836 |
} |
2844 |
} |
2837 |
|
2845 |
|
2838 |
=head2 _koha_add_biblioitem |
|
|
2839 |
|
2840 |
my ($biblioitemnumber,$error) = _koha_add_biblioitem( $dbh, $biblioitem ); |
2841 |
|
2842 |
Internal function to add a biblioitem |
2843 |
|
2844 |
=cut |
2845 |
|
2846 |
sub _koha_add_biblioitem { |
2847 |
my ( $dbh, $biblioitem ) = @_; |
2848 |
my $error; |
2849 |
|
2850 |
my ($cn_sort) = GetClassSort( $biblioitem->{'biblioitems.cn_source'}, $biblioitem->{'cn_class'}, $biblioitem->{'cn_item'} ); |
2851 |
my $query = "INSERT INTO biblioitems SET |
2852 |
biblionumber = ?, |
2853 |
volume = ?, |
2854 |
number = ?, |
2855 |
itemtype = ?, |
2856 |
isbn = ?, |
2857 |
issn = ?, |
2858 |
publicationyear = ?, |
2859 |
publishercode = ?, |
2860 |
volumedate = ?, |
2861 |
volumedesc = ?, |
2862 |
collectiontitle = ?, |
2863 |
collectionissn = ?, |
2864 |
collectionvolume= ?, |
2865 |
editionstatement= ?, |
2866 |
editionresponsibility = ?, |
2867 |
illus = ?, |
2868 |
pages = ?, |
2869 |
notes = ?, |
2870 |
size = ?, |
2871 |
place = ?, |
2872 |
lccn = ?, |
2873 |
url = ?, |
2874 |
cn_source = ?, |
2875 |
cn_class = ?, |
2876 |
cn_item = ?, |
2877 |
cn_suffix = ?, |
2878 |
cn_sort = ?, |
2879 |
totalissues = ?, |
2880 |
ean = ?, |
2881 |
agerestriction = ? |
2882 |
"; |
2883 |
my $sth = $dbh->prepare($query); |
2884 |
$sth->execute( |
2885 |
$biblioitem->{'biblionumber'}, $biblioitem->{'volume'}, $biblioitem->{'number'}, $biblioitem->{'itemtype'}, |
2886 |
$biblioitem->{'isbn'}, $biblioitem->{'issn'}, $biblioitem->{'publicationyear'}, $biblioitem->{'publishercode'}, |
2887 |
$biblioitem->{'volumedate'}, $biblioitem->{'volumedesc'}, $biblioitem->{'collectiontitle'}, $biblioitem->{'collectionissn'}, |
2888 |
$biblioitem->{'collectionvolume'}, $biblioitem->{'editionstatement'}, $biblioitem->{'editionresponsibility'}, $biblioitem->{'illus'}, |
2889 |
$biblioitem->{'pages'}, $biblioitem->{'bnotes'}, $biblioitem->{'size'}, $biblioitem->{'place'}, |
2890 |
$biblioitem->{'lccn'}, $biblioitem->{'url'}, $biblioitem->{'biblioitems.cn_source'}, |
2891 |
$biblioitem->{'cn_class'}, $biblioitem->{'cn_item'}, $biblioitem->{'cn_suffix'}, $cn_sort, |
2892 |
$biblioitem->{'totalissues'}, $biblioitem->{'ean'}, $biblioitem->{'agerestriction'} |
2893 |
); |
2894 |
my $bibitemnum = $dbh->{'mysql_insertid'}; |
2895 |
|
2896 |
if ( $dbh->errstr ) { |
2897 |
$error .= "ERROR in _koha_add_biblioitem $query" . $dbh->errstr; |
2898 |
warn $error; |
2899 |
} |
2900 |
$sth->finish(); |
2901 |
return ( $bibitemnum, $error ); |
2902 |
} |
2903 |
|
2904 |
=head2 _koha_delete_biblio |
2846 |
=head2 _koha_delete_biblio |
2905 |
|
2847 |
|
2906 |
$error = _koha_delete_biblio($dbh,$biblionumber); |
2848 |
$error = _koha_delete_biblio($dbh,$biblionumber); |