]> git.koha-community.org Git - koha.git/blob - Koha/ERM/EHoldings/Resource.pm
Bug 32782: ERM UNIMARC support
[koha.git] / Koha / ERM / EHoldings / Resource.pm
1 package Koha::ERM::EHoldings::Resource;
2
3 # This file is part of Koha.
4 #
5 # Koha is free software; you can redistribute it and/or modify it
6 # under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 3 of the License, or
8 # (at your option) any later version.
9 #
10 # Koha is distributed in the hope that it will be useful, but
11 # WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with Koha; if not, see <http://www.gnu.org/licenses>.
17
18 use Modern::Perl;
19
20 use MARC::Record;
21
22 use Koha::Database;
23
24 use C4::Biblio qw( AddBiblio TransformKohaToMarc );
25 use Koha::Acquisition::Booksellers;
26 use Koha::Biblios;
27 use Koha::ERM::EHoldings::Titles;
28 use Koha::ERM::EHoldings::Packages;
29
30 use base qw(Koha::Object);
31
32 =head1 NAME
33
34 Koha::ERM::EHoldings::Resource - Koha EHolding resource Object class
35
36 =head1 API
37
38 =head2 Class Methods
39
40 =cut
41
42 =head3 store
43
44 =cut
45
46 sub store {
47     my ($self) = @_;
48
49     # FIXME This is terrible and ugly, we need to:
50     # * Provide a mapping for each attribute of title
51     # * Create a txn
52     my $title = $self->title;
53     my $biblio =
54       $title->biblio_id
55       ? Koha::Biblios->find( $title->biblio_id )->unblessed
56       : {};
57
58     my $marc_record = TransformKohaToMarc(
59         {
60             %$biblio,
61             'biblio.title' => $title->publication_title,
62
63         }
64     );
65
66     my $biblio_id;
67     if ( %$biblio ) {
68         $biblio_id = $title->biblio_id;
69         C4::Biblio::ModBiblio($marc_record, $title->biblio_id, '');
70     } else {
71         ( $biblio_id ) = C4::Biblio::AddBiblio($marc_record, '');
72     }
73
74     $title->biblio_id($biblio_id)->store;
75
76     $self = $self->SUPER::store;
77     return $self;
78 }
79
80 =head3 package
81
82 Return the package for this resource
83
84 =cut
85
86 sub package {
87     my ( $self ) = @_;
88     my $package_rs = $self->_result->package;
89     return Koha::ERM::EHoldings::Package->_new_from_dbic($package_rs);
90 }
91
92 =head3 title
93
94 Return the title for this resource
95
96 =cut
97
98 sub title {
99     my ( $self ) = @_;
100     my $title_rs = $self->_result->title;
101     return Koha::ERM::EHoldings::Title->_new_from_dbic($title_rs);
102 }
103
104 =head3 vendor
105
106 Return the vendor for this resource
107
108 =cut
109
110 sub vendor {
111     my ( $self ) = @_;
112     my $vendor_rs = $self->_result->vendor;
113     return unless $vendor_rs;
114     return Koha::Acquisition::Bookseller->_new_from_dbic($vendor_rs);
115 }
116
117
118 =head2 Internal methods
119
120 =head3 _type
121
122 =cut
123
124 sub _type {
125     return 'ErmEholdingsResource';
126 }
127
128 1;