Bug 12830: Move the order-related code into Koha::Acquisition::Order
[koha.git] / Koha / Acquisition / Order.pm
1 package Koha::Acquisition::Order;
2
3 use Modern::Perl;
4
5 use Koha::Database;
6 use Koha::DateUtils qw( dt_from_string output_pref );
7
8 use Carp qw( croak );
9
10 use base qw( Class::Accessor );
11
12 # TODO fetch order from itemnumber (GetOrderFromItemnnumber)
13 # TODO Move code from GetOrder
14 sub fetch {
15     my ( $class, $params ) = @_;
16     my $ordernumber = $params->{ordernumber};
17     return unless $ordernumber;
18     my $schema = Koha::Database->new->schema;
19
20     my $rs =
21       $schema->resultset('Aqorder')->search( { ordernumber => $ordernumber },
22         { result_class => 'DBIx::Class::ResultClass::HashRefInflator' } );
23
24     return $class->new( $rs->first );
25 }
26
27 sub insert {
28     my ($self) = @_;
29
30     # if these parameters are missing, we can't continue
31     for my $key (qw( basketno quantity biblionumber budget_id )) {
32         croak "Cannot insert order: Mandatory parameter $key is missing"
33           unless $self->{$key};
34     }
35
36     $self->{quantityreceived} ||= 0;
37     $self->{entrydate} ||=
38       output_pref( { dt => dt_from_string, dateformat => 'iso' } );
39
40     my $schema  = Koha::Database->new->schema;
41     my @columns = $schema->source('Aqorder')->columns;
42
43     $self->{ordernumber} ||= undef;
44
45     my $rs = $schema->resultset('Aqorder')->create(
46         {
47             map {
48                 exists $self->{$_} ? ( $_ => $self->{$_} ) : ()
49             } @columns
50         }
51     );
52     $self->{ordernumber} = $rs->id;
53
54     unless ( $self->{parent_ordernumber} ) {
55         $rs->update( { parent_ordernumber => $self->{ordernumber} } );
56     }
57
58     return $self;
59 }
60
61 sub add_item {
62     my ( $self, $itemnumber )  = @_;
63     my $schema = Koha::Database->new->schema;
64     my $rs = $schema->resultset('AqordersItem');
65     $rs->create({ ordernumber => $self->{ordernumber}, itemnumber => $itemnumber });
66 }
67
68 # TODO Move code from ModItemOrder
69 sub update_item {
70     die "not implemented yet";
71 }
72
73 sub del_item {
74     die "not implemented yet";
75 }
76
77 # TODO Move code from ModOrder
78 sub update {
79     die "not implemented yet";
80 }
81
82 # TODO Move code from DelOrder
83 sub delete {
84     die "not implemented yet";
85 }
86
87 # TODO Move code from TransferOrder
88 sub transfer {
89     die "not implemented yet";
90 }
91
92 1;