165 lines
3.5 KiB
Perl
165 lines
3.5 KiB
Perl
package Koha::IllbatchStatus;
|
|
|
|
# Copyright PTFS Europe 2022
|
|
#
|
|
# This file is part of Koha.
|
|
#
|
|
# Koha is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# Koha is distributed in the hope that it will be useful, but
|
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with Koha; if not, see <http://www.gnu.org/licenses>.
|
|
|
|
use Modern::Perl;
|
|
use Koha::Database;
|
|
use Koha::Illrequest::Logger;
|
|
use Koha::Illbatch;
|
|
use JSON qw( to_json );
|
|
use base qw(Koha::Object);
|
|
|
|
=head1 NAME
|
|
|
|
Koha::IllbatchStatus - Koha IllbatchStatus Object class
|
|
|
|
=head2 Class methods
|
|
|
|
=head3 create_and_log
|
|
|
|
$status->create_and_log;
|
|
|
|
Log batch status creation following storage
|
|
|
|
=cut
|
|
|
|
sub create_and_log {
|
|
my ($self) = @_;
|
|
|
|
# Ensure code is uppercase and contains only word characters
|
|
my $fixed_code = uc $self->code;
|
|
$fixed_code =~ s/\W/_/;
|
|
|
|
# Ensure this status doesn't already exist
|
|
my $status = Koha::IllbatchStatuses->find( { code => $fixed_code } );
|
|
if ($status) {
|
|
return { error => "Duplicate status found" };
|
|
}
|
|
|
|
# Ensure system statuses can't be created
|
|
$self->set(
|
|
{
|
|
code => $fixed_code,
|
|
is_system => 0
|
|
}
|
|
)->store;
|
|
|
|
my $logger = Koha::Illrequest::Logger->new;
|
|
|
|
$logger->log_something(
|
|
{
|
|
modulename => 'ILL',
|
|
actionname => 'batch_status_create',
|
|
objectnumber => $self->id,
|
|
infos => to_json( {} )
|
|
}
|
|
);
|
|
}
|
|
|
|
=head3 update_and_log
|
|
|
|
$status->update_and_log;
|
|
|
|
Log batch status update following storage
|
|
|
|
=cut
|
|
|
|
sub update_and_log {
|
|
my ( $self, $params ) = @_;
|
|
|
|
my $before = { name => $self->name };
|
|
|
|
# Ensure only the name can be changed
|
|
$self->set( { name => $params->{name} } );
|
|
my $update = $self->store;
|
|
|
|
my $after = { name => $self->name };
|
|
|
|
my $logger = Koha::Illrequest::Logger->new;
|
|
|
|
$logger->log_something(
|
|
{
|
|
modulename => 'ILL',
|
|
actionname => 'batch_status_update',
|
|
objectnumber => $self->id,
|
|
infos => to_json(
|
|
{
|
|
before => $before,
|
|
after => $after
|
|
}
|
|
)
|
|
}
|
|
);
|
|
}
|
|
|
|
=head3 delete_and_log
|
|
|
|
$batch->delete_and_log;
|
|
|
|
Log batch status delete
|
|
|
|
=cut
|
|
|
|
sub delete_and_log {
|
|
my ($self) = @_;
|
|
|
|
# Don't permit deletion of system statuses
|
|
if ( $self->is_system ) {
|
|
return;
|
|
}
|
|
|
|
# Update all batches that use this status to have status UNKNOWN
|
|
my $affected = Koha::Illbatches->search( { status_code => $self->code } );
|
|
$affected->update( { status_code => 'UNKNOWN' } );
|
|
|
|
my $logger = Koha::Illrequest::Logger->new;
|
|
|
|
$logger->log_something(
|
|
{
|
|
modulename => 'ILL',
|
|
actionname => 'batch_status_delete',
|
|
objectnumber => $self->id,
|
|
infos => to_json( {} )
|
|
}
|
|
);
|
|
|
|
$self->delete;
|
|
}
|
|
|
|
=head2 Internal methods
|
|
|
|
=head3 _type
|
|
|
|
my $type = Koha::IllbatchStatus->_type;
|
|
|
|
Return this object's type
|
|
|
|
=cut
|
|
|
|
sub _type {
|
|
return 'IllbatchStatus';
|
|
}
|
|
|
|
=head1 AUTHOR
|
|
|
|
Andrew Isherwood <andrew.isherwood@ptfs-europe.com>
|
|
|
|
=cut
|
|
|
|
1;
|