Bug 14279: Remove CGI::scrolling_list from issues_avg_stats.pl
[koha.git] / Koha / Acquisition / Bookseller.pm
blob79b1510e4ee4a58c349f6f34e2792ac99ebe0746
1 package Koha::Acquisition::Bookseller;
3 use Modern::Perl;
5 use Koha::Database;
6 use Koha::DateUtils qw( dt_from_string output_pref );
8 use Carp qw( croak );
10 use base qw( Class::Accessor );
12 use C4::Bookseller::Contact;
14 sub fetch {
15 my ( $class, $params ) = @_;
16 my $id = $params->{id};
17 return unless $id;
18 my $schema = Koha::Database->new->schema;
20 my $bookseller =
21 $schema->resultset('Aqbookseller')->find( { id => $id },
22 { result_class => 'DBIx::Class::ResultClass::HashRefInflator' } );
24 return unless $bookseller;
26 my $self = $class->new( $bookseller );
27 $self->contacts; # TODO: This should be generated on demand.
28 return $self;
31 sub search {
32 my ( $class, $params ) = @_;
34 croak "Cannot search on other fields than aqbooksellers.name" if $params and grep { $_ !~ /^name$/ } keys %$params;
36 my $schema = Koha::Database->new->schema;
38 my $search_params;
39 while ( my ( $field, $value ) = each %$params ) {
40 if ( $field eq 'name' ) {
41 # Use "like" if search on name
42 $search_params->{name} = { -like => "%$value%" };
43 } else {
44 $search_params->{$field} = $value;
47 my $rs = $schema->resultset('Aqbookseller')->search(
48 $search_params,
49 { order_by => 'name' }
52 my @booksellers;
53 while ( my $b = $rs->next ) {
54 my $t = Koha::Acquisition::Bookseller->fetch({ id => $b->id });
55 push @booksellers, $t;
57 return @booksellers;
60 sub basket_count {
61 my ( $self ) = @_;
62 my $schema = Koha::Database->new->schema;
64 return $schema->resultset('Aqbasket')->count( { booksellerid => $self->{id} });
67 sub subscription_count {
68 my ( $self ) = @_;
70 my $schema = Koha::Database->new->schema;
72 return $schema->resultset('Subscription')->count( { aqbooksellerid => $self->{id} });
75 sub contacts {
76 my ( $self ) = @_;
78 return $self->{contacts} if $self->{contacts};
79 $self->{contacts} = C4::Bookseller::Contact->get_from_bookseller($self->{id});
80 return $self->{contacts};
83 sub insert {
84 my ($self) = @_;
86 # if these parameters are missing, we can't continue
87 for my $key (qw( id )) {
88 croak "Cannot insert bookseller: Mandatory parameter $key is missing"
89 unless $self->{$key};
92 $self->{quantityreceived} ||= 0;
93 $self->{entrydate} ||=
94 output_pref( { dt => dt_from_string, dateformat => 'iso' } );
96 my $schema = Koha::Database->new->schema;
97 my @columns = $schema->source('Aqorder')->columns;
98 my $rs = $schema->resultset('Aqorder')->create(
100 map {
101 exists $self->{$_} ? ( $_ => $self->{$_} ) : ()
102 } @columns
105 $self->{ordernumber} = $rs->id;
107 unless ( $self->{parent_ordernumber} ) {
108 $rs->update( { parent_ordernumber => $self->{ordernumber} } );
111 return $self;
114 # TODO Move code from ModBookseller
115 sub update {
116 die "not implemented yet";
119 # TODO Move code from DelBookseller
120 sub delete {
121 die "not implemented yet";