Bug 32030: Max document file size - server-side validation
[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 Koha::Acquisition::Booksellers;
25 use Koha::Biblios;
26 use Koha::ERM::EHoldings::Titles;
27 use Koha::ERM::EHoldings::Packages;
28
29 use base qw(Koha::Object);
30
31 =head1 NAME
32
33 Koha::ERM::EHoldings::Resource - Koha EHolding resource Object class
34
35 =head1 API
36
37 =head2 Class Methods
38
39 =cut
40
41 =head3 store
42
43 =cut
44
45 sub store {
46     my ($self) = @_;
47
48     # FIXME This is terrible and ugly, we need to:
49     # * Provide a mapping for each attribute of title
50     # * Deal with marcflavour
51     # * Create a txn
52     my $title = $self->title;
53     my $biblio = $title->biblio_id ? Koha::Biblios->find($title->biblio_id) : undef;
54     my $marc_record = $biblio ? $biblio->metadata->record : MARC::Record->new;
55     eval {$marc_record->field('245')->delete_subfield('a');};
56     $marc_record->add_fields(MARC::Field->new(245, '', '', a => $title->publication_title));
57
58     my $biblio_id;
59     if ( $biblio ) {
60         $biblio_id = $title->biblio_id;
61         C4::Biblio::ModBiblio($marc_record, $title->biblio_id, '');
62     } else {
63         ( $biblio_id ) = C4::Biblio::AddBiblio($marc_record, '');
64     }
65
66     $title->biblio_id($biblio_id)->store;
67
68     $self = $self->SUPER::store;
69     return $self;
70 }
71
72 =head3 package
73
74 Return the package for this resource
75
76 =cut
77
78 sub package {
79     my ( $self ) = @_;
80     my $package_rs = $self->_result->package;
81     return Koha::ERM::EHoldings::Package->_new_from_dbic($package_rs);
82 }
83
84 =head3 title
85
86 Return the title for this resource
87
88 =cut
89
90 sub title {
91     my ( $self ) = @_;
92     my $title_rs = $self->_result->title;
93     return Koha::ERM::EHoldings::Title->_new_from_dbic($title_rs);
94 }
95
96 =head3 vendor
97
98 Return the vendor for this resource
99
100 =cut
101
102 sub vendor {
103     my ( $self ) = @_;
104     my $vendor_rs = $self->_result->vendor;
105     return unless $vendor_rs;
106     return Koha::Acquisition::Bookseller->_new_from_dbic($vendor_rs);
107 }
108
109
110 =head2 Internal methods
111
112 =head3 _type
113
114 =cut
115
116 sub _type {
117     return 'ErmEholdingsResource';
118 }
119
120 1;