Bug 19522: i18n Label creator: wrap text with <span>
[koha.git] / Koha / Acquisition / Order.pm
1 package Koha::Acquisition::Order;
2
3 # This file is part of Koha.
4 #
5 # Koha is free software; you can redistribute it and/or modify it under the
6 # terms of the GNU General Public License as published by the Free Software
7 # Foundation; either version 3 of the License, or (at your option) any later
8 # version.
9 #
10 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
11 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License along
15 # with Koha; if not, write to the Free Software Foundation, Inc.,
16 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17
18 use Modern::Perl;
19
20 use Carp qw( croak );
21
22 use Koha::Acquisition::Baskets;
23 use Koha::Database;
24 use Koha::DateUtils qw( dt_from_string output_pref );
25
26 use base qw(Koha::Object);
27
28 =head1 NAME
29
30 Koha::Acquisition::Order Object class
31
32 =head1 API
33
34 =head2 Class methods
35
36 =head3 new
37
38 Overloaded I<new> method for backwards compatibility.
39
40 =cut
41
42 sub new {
43     my ( $self, $params ) = @_;
44
45     my $schema  = Koha::Database->new->schema;
46     my @columns = $schema->source('Aqorder')->columns;
47
48     my $values =
49       { map { exists $params->{$_} ? ( $_ => $params->{$_} ) : () } @columns };
50     return $self->SUPER::new($values);
51 }
52
53 =head3 store
54
55 Overloaded I<store> method for backwards compatibility.
56
57 =cut
58
59 sub store {
60     my ($self) = @_;
61
62     my $schema  = Koha::Database->new->schema;
63     # Override quantity for standing orders
64     $self->quantity(1) if ( $self->basketno && $schema->resultset('Aqbasket')->find( $self->basketno )->is_standing );
65
66     # if these parameters are missing, we can't continue
67     for my $key (qw( basketno quantity biblionumber budget_id )) {
68         croak "Cannot insert order: Mandatory parameter $key is missing"
69           unless $self->$key;
70     }
71
72     $self->quantityreceived(0) unless $self->quantityreceived;
73     $self->entrydate(dt_from_string) unless $self->entrydate;
74
75     $self->ordernumber(undef) unless $self->ordernumber;
76     $self = $self->SUPER::store( $self );
77
78     unless ( $self->parent_ordernumber ) {
79         $self->set( { parent_ordernumber => $self->ordernumber } );
80         $self = $self->SUPER::store( $self );
81     }
82
83     return $self;
84 }
85
86 =head3 add_item
87
88   $order->add_item( $itemnumber );
89
90 Link an item to this order.
91
92 =cut
93
94 sub add_item {
95     my ( $self, $itemnumber )  = @_;
96
97     my $schema = Koha::Database->new->schema;
98     my $rs = $schema->resultset('AqordersItem');
99     $rs->create({ ordernumber => $self->ordernumber, itemnumber => $itemnumber });
100 }
101
102 =head3 basket
103
104     my $basket = Koha::Acquisition::Orders->find( $id )->basket;
105
106 Returns the basket associated to the order.
107
108 =cut
109
110 sub basket {
111     my ( $self )  = @_;
112     my $basket_rs = $self->_result->basketno;
113     return Koha::Acquisition::Basket->_new_from_dbic( $basket_rs );
114 }
115
116 =head2 Internal methods
117
118 =head3 _type
119
120 =cut
121
122 sub _type {
123     return 'Aqorder';
124 }
125
126 1;