125 lines
3.0 KiB
Perl
125 lines
3.0 KiB
Perl
package Koha::Acquisition::Bookseller;
|
|
|
|
use Modern::Perl;
|
|
|
|
use Koha::Database;
|
|
use Koha::DateUtils qw( dt_from_string output_pref );
|
|
|
|
use Carp qw( croak );
|
|
|
|
use base qw( Class::Accessor );
|
|
|
|
use C4::Bookseller::Contact;
|
|
|
|
sub fetch {
|
|
my ( $class, $params ) = @_;
|
|
my $id = $params->{id};
|
|
return unless $id;
|
|
my $schema = Koha::Database->new->schema;
|
|
|
|
my $bookseller =
|
|
$schema->resultset('Aqbookseller')->find( { id => $id },
|
|
{ result_class => 'DBIx::Class::ResultClass::HashRefInflator' } );
|
|
|
|
return unless $bookseller;
|
|
|
|
my $self = $class->new( $bookseller );
|
|
$self->contacts; # TODO: This should be generated on demand.
|
|
return $self;
|
|
}
|
|
|
|
sub search {
|
|
my ( $class, $params ) = @_;
|
|
|
|
croak "Cannot search on other fields than aqbooksellers.name" if $params and grep { $_ !~ /^name$/ } keys %$params;
|
|
|
|
my $schema = Koha::Database->new->schema;
|
|
|
|
my $search_params;
|
|
while ( my ( $field, $value ) = each %$params ) {
|
|
if ( $field eq 'name' ) {
|
|
# Use "like" if search on name
|
|
$search_params->{name} = { -like => "%$value%" };
|
|
} else {
|
|
$search_params->{$field} = $value;
|
|
}
|
|
}
|
|
my $rs = $schema->resultset('Aqbookseller')->search(
|
|
$search_params,
|
|
{ order_by => 'name' }
|
|
);
|
|
|
|
my @booksellers;
|
|
while ( my $b = $rs->next ) {
|
|
my $t = Koha::Acquisition::Bookseller->fetch({ id => $b->id });
|
|
push @booksellers, $t;
|
|
}
|
|
return @booksellers;
|
|
}
|
|
|
|
sub basket_count {
|
|
my ( $self ) = @_;
|
|
my $schema = Koha::Database->new->schema;
|
|
|
|
return $schema->resultset('Aqbasket')->count( { booksellerid => $self->{id} });
|
|
}
|
|
|
|
sub subscription_count {
|
|
my ( $self ) = @_;
|
|
|
|
my $schema = Koha::Database->new->schema;
|
|
|
|
return $schema->resultset('Subscription')->count( { aqbooksellerid => $self->{id} });
|
|
}
|
|
|
|
sub contacts {
|
|
my ( $self ) = @_;
|
|
|
|
return $self->{contacts} if $self->{contacts};
|
|
$self->{contacts} = C4::Bookseller::Contact->get_from_bookseller($self->{id});
|
|
return $self->{contacts};
|
|
}
|
|
|
|
sub insert {
|
|
my ($self) = @_;
|
|
|
|
# if these parameters are missing, we can't continue
|
|
for my $key (qw( id )) {
|
|
croak "Cannot insert bookseller: Mandatory parameter $key is missing"
|
|
unless $self->{$key};
|
|
}
|
|
|
|
$self->{quantityreceived} ||= 0;
|
|
$self->{entrydate} ||=
|
|
output_pref( { dt => dt_from_string, dateformat => 'iso' } );
|
|
|
|
my $schema = Koha::Database->new->schema;
|
|
my @columns = $schema->source('Aqorder')->columns;
|
|
my $rs = $schema->resultset('Aqorder')->create(
|
|
{
|
|
map {
|
|
exists $self->{$_} ? ( $_ => $self->{$_} ) : ()
|
|
} @columns
|
|
}
|
|
);
|
|
$self->{ordernumber} = $rs->id;
|
|
|
|
unless ( $self->{parent_ordernumber} ) {
|
|
$rs->update( { parent_ordernumber => $self->{ordernumber} } );
|
|
}
|
|
|
|
return $self;
|
|
}
|
|
|
|
# TODO Move code from ModBookseller
|
|
sub update {
|
|
die "not implemented yet";
|
|
}
|
|
|
|
# TODO Move code from DelBookseller
|
|
sub delete {
|
|
die "not implemented yet";
|
|
}
|
|
|
|
1;
|