1101 lines
22 KiB
Perl
1101 lines
22 KiB
Perl
use utf8;
|
|
package Koha::Schema::Result::Item;
|
|
|
|
# Created by DBIx::Class::Schema::Loader
|
|
# DO NOT MODIFY THE FIRST PART OF THIS FILE
|
|
|
|
=head1 NAME
|
|
|
|
Koha::Schema::Result::Item
|
|
|
|
=cut
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use base 'DBIx::Class::Core';
|
|
|
|
=head1 TABLE: C<items>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->table("items");
|
|
|
|
=head1 ACCESSORS
|
|
|
|
=head2 itemnumber
|
|
|
|
data_type: 'integer'
|
|
is_auto_increment: 1
|
|
is_nullable: 0
|
|
|
|
primary key and unique identifier added by Koha
|
|
|
|
=head2 biblionumber
|
|
|
|
data_type: 'integer'
|
|
default_value: 0
|
|
is_foreign_key: 1
|
|
is_nullable: 0
|
|
|
|
foreign key from biblio table used to link this item to the right bib record
|
|
|
|
=head2 biblioitemnumber
|
|
|
|
data_type: 'integer'
|
|
default_value: 0
|
|
is_foreign_key: 1
|
|
is_nullable: 0
|
|
|
|
foreign key from the biblioitems table to link to item to additional information
|
|
|
|
=head2 barcode
|
|
|
|
data_type: 'varchar'
|
|
is_nullable: 1
|
|
size: 20
|
|
|
|
item barcode (MARC21 952$p)
|
|
|
|
=head2 bookable
|
|
|
|
data_type: 'tinyint'
|
|
is_nullable: 1
|
|
|
|
nullable boolean value defining whether this this item is available for bookings or not
|
|
|
|
=head2 dateaccessioned
|
|
|
|
data_type: 'date'
|
|
datetime_undef_if_invalid: 1
|
|
is_nullable: 1
|
|
|
|
date the item was acquired or added to Koha (MARC21 952$d)
|
|
|
|
=head2 booksellerid
|
|
|
|
data_type: 'longtext'
|
|
is_nullable: 1
|
|
|
|
where the item was purchased (MARC21 952$e)
|
|
|
|
=head2 homebranch
|
|
|
|
data_type: 'varchar'
|
|
is_foreign_key: 1
|
|
is_nullable: 1
|
|
size: 10
|
|
|
|
foreign key from the branches table for the library that owns this item (MARC21 952$a)
|
|
|
|
=head2 price
|
|
|
|
data_type: 'decimal'
|
|
is_nullable: 1
|
|
size: [8,2]
|
|
|
|
purchase price (MARC21 952$g)
|
|
|
|
=head2 replacementprice
|
|
|
|
data_type: 'decimal'
|
|
is_nullable: 1
|
|
size: [8,2]
|
|
|
|
cost the library charges to replace the item if it has been marked lost (MARC21 952$v)
|
|
|
|
=head2 replacementpricedate
|
|
|
|
data_type: 'date'
|
|
datetime_undef_if_invalid: 1
|
|
is_nullable: 1
|
|
|
|
the date the price is effective from (MARC21 952$w)
|
|
|
|
=head2 datelastborrowed
|
|
|
|
data_type: 'date'
|
|
datetime_undef_if_invalid: 1
|
|
is_nullable: 1
|
|
|
|
the date the item was last checked out/issued
|
|
|
|
=head2 datelastseen
|
|
|
|
data_type: 'datetime'
|
|
datetime_undef_if_invalid: 1
|
|
is_nullable: 1
|
|
|
|
the date the item was last see (usually the last time the barcode was scanned or inventory was done)
|
|
|
|
=head2 stack
|
|
|
|
data_type: 'tinyint'
|
|
is_nullable: 1
|
|
|
|
=head2 notforloan
|
|
|
|
data_type: 'tinyint'
|
|
default_value: 0
|
|
is_nullable: 0
|
|
|
|
authorized value defining why this item is not for loan (MARC21 952$7)
|
|
|
|
=head2 damaged
|
|
|
|
data_type: 'tinyint'
|
|
default_value: 0
|
|
is_nullable: 0
|
|
|
|
authorized value defining this item as damaged (MARC21 952$4)
|
|
|
|
=head2 damaged_on
|
|
|
|
data_type: 'datetime'
|
|
datetime_undef_if_invalid: 1
|
|
is_nullable: 1
|
|
|
|
the date and time an item was last marked as damaged, NULL if not damaged
|
|
|
|
=head2 itemlost
|
|
|
|
data_type: 'tinyint'
|
|
default_value: 0
|
|
is_nullable: 0
|
|
|
|
authorized value defining this item as lost (MARC21 952$1)
|
|
|
|
=head2 itemlost_on
|
|
|
|
data_type: 'datetime'
|
|
datetime_undef_if_invalid: 1
|
|
is_nullable: 1
|
|
|
|
the date and time an item was last marked as lost, NULL if not lost
|
|
|
|
=head2 withdrawn
|
|
|
|
data_type: 'tinyint'
|
|
default_value: 0
|
|
is_nullable: 0
|
|
|
|
authorized value defining this item as withdrawn (MARC21 952$0)
|
|
|
|
=head2 withdrawn_on
|
|
|
|
data_type: 'datetime'
|
|
datetime_undef_if_invalid: 1
|
|
is_nullable: 1
|
|
|
|
the date and time an item was last marked as withdrawn, NULL if not withdrawn
|
|
|
|
=head2 itemcallnumber
|
|
|
|
data_type: 'varchar'
|
|
is_nullable: 1
|
|
size: 255
|
|
|
|
call number for this item (MARC21 952$o)
|
|
|
|
=head2 coded_location_qualifier
|
|
|
|
data_type: 'varchar'
|
|
is_nullable: 1
|
|
size: 10
|
|
|
|
coded location qualifier(MARC21 952$f)
|
|
|
|
=head2 issues
|
|
|
|
data_type: 'smallint'
|
|
default_value: 0
|
|
is_nullable: 1
|
|
|
|
number of times this item has been checked out/issued
|
|
|
|
=head2 renewals
|
|
|
|
data_type: 'smallint'
|
|
is_nullable: 1
|
|
|
|
number of times this item has been renewed
|
|
|
|
=head2 localuse
|
|
|
|
data_type: 'smallint'
|
|
is_nullable: 1
|
|
|
|
number of times this item has been recorded as localuse
|
|
|
|
=head2 reserves
|
|
|
|
data_type: 'smallint'
|
|
is_nullable: 1
|
|
|
|
number of times this item has been placed on hold/reserved
|
|
|
|
=head2 restricted
|
|
|
|
data_type: 'tinyint'
|
|
is_nullable: 1
|
|
|
|
authorized value defining use restrictions for this item (MARC21 952$5)
|
|
|
|
=head2 itemnotes
|
|
|
|
data_type: 'longtext'
|
|
is_nullable: 1
|
|
|
|
public notes on this item (MARC21 952$z)
|
|
|
|
=head2 itemnotes_nonpublic
|
|
|
|
data_type: 'longtext'
|
|
is_nullable: 1
|
|
|
|
non-public notes on this item (MARC21 952$x)
|
|
|
|
=head2 holdingbranch
|
|
|
|
data_type: 'varchar'
|
|
is_foreign_key: 1
|
|
is_nullable: 1
|
|
size: 10
|
|
|
|
foreign key from the branches table for the library that is currently in possession item (MARC21 952$b)
|
|
|
|
=head2 timestamp
|
|
|
|
data_type: 'timestamp'
|
|
datetime_undef_if_invalid: 1
|
|
default_value: current_timestamp
|
|
is_nullable: 0
|
|
|
|
date and time this item was last altered
|
|
|
|
=head2 deleted_on
|
|
|
|
data_type: 'datetime'
|
|
datetime_undef_if_invalid: 1
|
|
is_nullable: 1
|
|
|
|
date/time of deletion
|
|
|
|
=head2 location
|
|
|
|
data_type: 'varchar'
|
|
is_nullable: 1
|
|
size: 80
|
|
|
|
authorized value for the shelving location for this item (MARC21 952$c)
|
|
|
|
=head2 permanent_location
|
|
|
|
data_type: 'varchar'
|
|
is_nullable: 1
|
|
size: 80
|
|
|
|
linked to the CART and PROC temporary locations feature, stores the permanent shelving location
|
|
|
|
=head2 onloan
|
|
|
|
data_type: 'date'
|
|
datetime_undef_if_invalid: 1
|
|
is_nullable: 1
|
|
|
|
defines if item is checked out (NULL for not checked out, and due date for checked out)
|
|
|
|
=head2 cn_source
|
|
|
|
data_type: 'varchar'
|
|
is_nullable: 1
|
|
size: 10
|
|
|
|
classification source used on this item (MARC21 952$2)
|
|
|
|
=head2 cn_sort
|
|
|
|
data_type: 'varchar'
|
|
is_nullable: 1
|
|
size: 255
|
|
|
|
normalized form of the call number (MARC21 952$o) used for sorting
|
|
|
|
=head2 ccode
|
|
|
|
data_type: 'varchar'
|
|
is_nullable: 1
|
|
size: 80
|
|
|
|
authorized value for the collection code associated with this item (MARC21 952$8)
|
|
|
|
=head2 materials
|
|
|
|
data_type: 'mediumtext'
|
|
is_nullable: 1
|
|
|
|
materials specified (MARC21 952$3)
|
|
|
|
=head2 uri
|
|
|
|
data_type: 'mediumtext'
|
|
is_nullable: 1
|
|
|
|
URL for the item (MARC21 952$u)
|
|
|
|
=head2 itype
|
|
|
|
data_type: 'varchar'
|
|
is_nullable: 1
|
|
size: 10
|
|
|
|
foreign key from the itemtypes table defining the type for this item (MARC21 952$y)
|
|
|
|
=head2 more_subfields_xml
|
|
|
|
data_type: 'longtext'
|
|
is_nullable: 1
|
|
|
|
additional 952 subfields in XML format
|
|
|
|
=head2 enumchron
|
|
|
|
data_type: 'mediumtext'
|
|
is_nullable: 1
|
|
|
|
serial enumeration/chronology for the item (MARC21 952$h)
|
|
|
|
=head2 copynumber
|
|
|
|
data_type: 'varchar'
|
|
is_nullable: 1
|
|
size: 32
|
|
|
|
copy number (MARC21 952$t)
|
|
|
|
=head2 stocknumber
|
|
|
|
data_type: 'varchar'
|
|
is_nullable: 1
|
|
size: 80
|
|
|
|
inventory number (MARC21 952$i)
|
|
|
|
=head2 new_status
|
|
|
|
data_type: 'varchar'
|
|
is_nullable: 1
|
|
size: 32
|
|
|
|
'new' value, you can put whatever free-text information. This field is FIXME CODESPELL (intented ==> intended, indented) to be managed by the automatic_item_modification_by_age cronjob.
|
|
|
|
=head2 exclude_from_local_holds_priority
|
|
|
|
data_type: 'tinyint'
|
|
is_nullable: 1
|
|
|
|
Exclude this item from local holds priority
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->add_columns(
|
|
"itemnumber",
|
|
{ data_type => "integer", is_auto_increment => 1, is_nullable => 0 },
|
|
"biblionumber",
|
|
{
|
|
data_type => "integer",
|
|
default_value => 0,
|
|
is_foreign_key => 1,
|
|
is_nullable => 0,
|
|
},
|
|
"biblioitemnumber",
|
|
{
|
|
data_type => "integer",
|
|
default_value => 0,
|
|
is_foreign_key => 1,
|
|
is_nullable => 0,
|
|
},
|
|
"barcode",
|
|
{ data_type => "varchar", is_nullable => 1, size => 20 },
|
|
"bookable",
|
|
{ data_type => "tinyint", is_nullable => 1 },
|
|
"dateaccessioned",
|
|
{ data_type => "date", datetime_undef_if_invalid => 1, is_nullable => 1 },
|
|
"booksellerid",
|
|
{ data_type => "longtext", is_nullable => 1 },
|
|
"homebranch",
|
|
{ data_type => "varchar", is_foreign_key => 1, is_nullable => 1, size => 10 },
|
|
"price",
|
|
{ data_type => "decimal", is_nullable => 1, size => [8, 2] },
|
|
"replacementprice",
|
|
{ data_type => "decimal", is_nullable => 1, size => [8, 2] },
|
|
"replacementpricedate",
|
|
{ data_type => "date", datetime_undef_if_invalid => 1, is_nullable => 1 },
|
|
"datelastborrowed",
|
|
{ data_type => "date", datetime_undef_if_invalid => 1, is_nullable => 1 },
|
|
"datelastseen",
|
|
{
|
|
data_type => "datetime",
|
|
datetime_undef_if_invalid => 1,
|
|
is_nullable => 1,
|
|
},
|
|
"stack",
|
|
{ data_type => "tinyint", is_nullable => 1 },
|
|
"notforloan",
|
|
{ data_type => "tinyint", default_value => 0, is_nullable => 0 },
|
|
"damaged",
|
|
{ data_type => "tinyint", default_value => 0, is_nullable => 0 },
|
|
"damaged_on",
|
|
{
|
|
data_type => "datetime",
|
|
datetime_undef_if_invalid => 1,
|
|
is_nullable => 1,
|
|
},
|
|
"itemlost",
|
|
{ data_type => "tinyint", default_value => 0, is_nullable => 0 },
|
|
"itemlost_on",
|
|
{
|
|
data_type => "datetime",
|
|
datetime_undef_if_invalid => 1,
|
|
is_nullable => 1,
|
|
},
|
|
"withdrawn",
|
|
{ data_type => "tinyint", default_value => 0, is_nullable => 0 },
|
|
"withdrawn_on",
|
|
{
|
|
data_type => "datetime",
|
|
datetime_undef_if_invalid => 1,
|
|
is_nullable => 1,
|
|
},
|
|
"itemcallnumber",
|
|
{ data_type => "varchar", is_nullable => 1, size => 255 },
|
|
"coded_location_qualifier",
|
|
{ data_type => "varchar", is_nullable => 1, size => 10 },
|
|
"issues",
|
|
{ data_type => "smallint", default_value => 0, is_nullable => 1 },
|
|
"renewals",
|
|
{ data_type => "smallint", is_nullable => 1 },
|
|
"localuse",
|
|
{ data_type => "smallint", is_nullable => 1 },
|
|
"reserves",
|
|
{ data_type => "smallint", is_nullable => 1 },
|
|
"restricted",
|
|
{ data_type => "tinyint", is_nullable => 1 },
|
|
"itemnotes",
|
|
{ data_type => "longtext", is_nullable => 1 },
|
|
"itemnotes_nonpublic",
|
|
{ data_type => "longtext", is_nullable => 1 },
|
|
"holdingbranch",
|
|
{ data_type => "varchar", is_foreign_key => 1, is_nullable => 1, size => 10 },
|
|
"timestamp",
|
|
{
|
|
data_type => "timestamp",
|
|
datetime_undef_if_invalid => 1,
|
|
default_value => \"current_timestamp",
|
|
is_nullable => 0,
|
|
},
|
|
"deleted_on",
|
|
{
|
|
data_type => "datetime",
|
|
datetime_undef_if_invalid => 1,
|
|
is_nullable => 1,
|
|
},
|
|
"location",
|
|
{ data_type => "varchar", is_nullable => 1, size => 80 },
|
|
"permanent_location",
|
|
{ data_type => "varchar", is_nullable => 1, size => 80 },
|
|
"onloan",
|
|
{ data_type => "date", datetime_undef_if_invalid => 1, is_nullable => 1 },
|
|
"cn_source",
|
|
{ data_type => "varchar", is_nullable => 1, size => 10 },
|
|
"cn_sort",
|
|
{ data_type => "varchar", is_nullable => 1, size => 255 },
|
|
"ccode",
|
|
{ data_type => "varchar", is_nullable => 1, size => 80 },
|
|
"materials",
|
|
{ data_type => "mediumtext", is_nullable => 1 },
|
|
"uri",
|
|
{ data_type => "mediumtext", is_nullable => 1 },
|
|
"itype",
|
|
{ data_type => "varchar", is_nullable => 1, size => 10 },
|
|
"more_subfields_xml",
|
|
{ data_type => "longtext", is_nullable => 1 },
|
|
"enumchron",
|
|
{ data_type => "mediumtext", is_nullable => 1 },
|
|
"copynumber",
|
|
{ data_type => "varchar", is_nullable => 1, size => 32 },
|
|
"stocknumber",
|
|
{ data_type => "varchar", is_nullable => 1, size => 80 },
|
|
"new_status",
|
|
{ data_type => "varchar", is_nullable => 1, size => 32 },
|
|
"exclude_from_local_holds_priority",
|
|
{ data_type => "tinyint", is_nullable => 1 },
|
|
);
|
|
|
|
=head1 PRIMARY KEY
|
|
|
|
=over 4
|
|
|
|
=item * L</itemnumber>
|
|
|
|
=back
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->set_primary_key("itemnumber");
|
|
|
|
=head1 UNIQUE CONSTRAINTS
|
|
|
|
=head2 C<itembarcodeidx>
|
|
|
|
=over 4
|
|
|
|
=item * L</barcode>
|
|
|
|
=back
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->add_unique_constraint("itembarcodeidx", ["barcode"]);
|
|
|
|
=head1 RELATIONS
|
|
|
|
=head2 accountlines
|
|
|
|
Type: has_many
|
|
|
|
Related object: L<Koha::Schema::Result::Accountline>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->has_many(
|
|
"accountlines",
|
|
"Koha::Schema::Result::Accountline",
|
|
{ "foreign.itemnumber" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
=head2 article_requests
|
|
|
|
Type: has_many
|
|
|
|
Related object: L<Koha::Schema::Result::ArticleRequest>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->has_many(
|
|
"article_requests",
|
|
"Koha::Schema::Result::ArticleRequest",
|
|
{ "foreign.itemnumber" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
=head2 biblioitemnumber
|
|
|
|
Type: belongs_to
|
|
|
|
Related object: L<Koha::Schema::Result::Biblioitem>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->belongs_to(
|
|
"biblioitemnumber",
|
|
"Koha::Schema::Result::Biblioitem",
|
|
{ biblioitemnumber => "biblioitemnumber" },
|
|
{ is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" },
|
|
);
|
|
|
|
=head2 biblionumber
|
|
|
|
Type: belongs_to
|
|
|
|
Related object: L<Koha::Schema::Result::Biblio>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->belongs_to(
|
|
"biblionumber",
|
|
"Koha::Schema::Result::Biblio",
|
|
{ biblionumber => "biblionumber" },
|
|
{ is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" },
|
|
);
|
|
|
|
=head2 bookings
|
|
|
|
Type: has_many
|
|
|
|
Related object: L<Koha::Schema::Result::Booking>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->has_many(
|
|
"bookings",
|
|
"Koha::Schema::Result::Booking",
|
|
{ "foreign.item_id" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
=head2 branchtransfers
|
|
|
|
Type: has_many
|
|
|
|
Related object: L<Koha::Schema::Result::Branchtransfer>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->has_many(
|
|
"branchtransfers",
|
|
"Koha::Schema::Result::Branchtransfer",
|
|
{ "foreign.itemnumber" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
=head2 club_holds
|
|
|
|
Type: has_many
|
|
|
|
Related object: L<Koha::Schema::Result::ClubHold>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->has_many(
|
|
"club_holds",
|
|
"Koha::Schema::Result::ClubHold",
|
|
{ "foreign.item_id" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
=head2 course_item
|
|
|
|
Type: might_have
|
|
|
|
Related object: L<Koha::Schema::Result::CourseItem>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->might_have(
|
|
"course_item",
|
|
"Koha::Schema::Result::CourseItem",
|
|
{ "foreign.itemnumber" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
=head2 cover_images
|
|
|
|
Type: has_many
|
|
|
|
Related object: L<Koha::Schema::Result::CoverImage>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->has_many(
|
|
"cover_images",
|
|
"Koha::Schema::Result::CoverImage",
|
|
{ "foreign.itemnumber" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
=head2 creator_batches
|
|
|
|
Type: has_many
|
|
|
|
Related object: L<Koha::Schema::Result::CreatorBatch>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->has_many(
|
|
"creator_batches",
|
|
"Koha::Schema::Result::CreatorBatch",
|
|
{ "foreign.item_number" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
=head2 hold_fill_target
|
|
|
|
Type: might_have
|
|
|
|
Related object: L<Koha::Schema::Result::HoldFillTarget>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->might_have(
|
|
"hold_fill_target",
|
|
"Koha::Schema::Result::HoldFillTarget",
|
|
{ "foreign.itemnumber" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
=head2 holdingbranch
|
|
|
|
Type: belongs_to
|
|
|
|
Related object: L<Koha::Schema::Result::Branch>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->belongs_to(
|
|
"holdingbranch",
|
|
"Koha::Schema::Result::Branch",
|
|
{ branchcode => "holdingbranch" },
|
|
{
|
|
is_deferrable => 1,
|
|
join_type => "LEFT",
|
|
on_delete => "RESTRICT",
|
|
on_update => "CASCADE",
|
|
},
|
|
);
|
|
|
|
=head2 homebranch
|
|
|
|
Type: belongs_to
|
|
|
|
Related object: L<Koha::Schema::Result::Branch>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->belongs_to(
|
|
"homebranch",
|
|
"Koha::Schema::Result::Branch",
|
|
{ branchcode => "homebranch" },
|
|
{
|
|
is_deferrable => 1,
|
|
join_type => "LEFT",
|
|
on_delete => "RESTRICT",
|
|
on_update => "CASCADE",
|
|
},
|
|
);
|
|
|
|
=head2 issue
|
|
|
|
Type: might_have
|
|
|
|
Related object: L<Koha::Schema::Result::Issue>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->might_have(
|
|
"issue",
|
|
"Koha::Schema::Result::Issue",
|
|
{ "foreign.itemnumber" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
=head2 item_bundles_hosts
|
|
|
|
Type: has_many
|
|
|
|
Related object: L<Koha::Schema::Result::ItemBundle>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->has_many(
|
|
"item_bundles_hosts",
|
|
"Koha::Schema::Result::ItemBundle",
|
|
{ "foreign.host" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
=head2 item_bundles_item
|
|
|
|
Type: might_have
|
|
|
|
Related object: L<Koha::Schema::Result::ItemBundle>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->might_have(
|
|
"item_bundles_item",
|
|
"Koha::Schema::Result::ItemBundle",
|
|
{ "foreign.item" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
=head2 item_group_item
|
|
|
|
Type: might_have
|
|
|
|
Related object: L<Koha::Schema::Result::ItemGroupItem>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->might_have(
|
|
"item_group_item",
|
|
"Koha::Schema::Result::ItemGroupItem",
|
|
{ "foreign.item_id" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
=head2 items_last_borrower
|
|
|
|
Type: might_have
|
|
|
|
Related object: L<Koha::Schema::Result::ItemsLastBorrower>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->might_have(
|
|
"items_last_borrower",
|
|
"Koha::Schema::Result::ItemsLastBorrower",
|
|
{ "foreign.itemnumber" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
=head2 linktrackers
|
|
|
|
Type: has_many
|
|
|
|
Related object: L<Koha::Schema::Result::Linktracker>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->has_many(
|
|
"linktrackers",
|
|
"Koha::Schema::Result::Linktracker",
|
|
{ "foreign.itemnumber" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
=head2 old_issues
|
|
|
|
Type: has_many
|
|
|
|
Related object: L<Koha::Schema::Result::OldIssue>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->has_many(
|
|
"old_issues",
|
|
"Koha::Schema::Result::OldIssue",
|
|
{ "foreign.itemnumber" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
=head2 old_reserves
|
|
|
|
Type: has_many
|
|
|
|
Related object: L<Koha::Schema::Result::OldReserve>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->has_many(
|
|
"old_reserves",
|
|
"Koha::Schema::Result::OldReserve",
|
|
{ "foreign.itemnumber" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
=head2 preservation_trains_items
|
|
|
|
Type: has_many
|
|
|
|
Related object: L<Koha::Schema::Result::PreservationTrainsItem>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->has_many(
|
|
"preservation_trains_items",
|
|
"Koha::Schema::Result::PreservationTrainsItem",
|
|
{ "foreign.item_id" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
=head2 recalls
|
|
|
|
Type: has_many
|
|
|
|
Related object: L<Koha::Schema::Result::Recall>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->has_many(
|
|
"recalls",
|
|
"Koha::Schema::Result::Recall",
|
|
{ "foreign.item_id" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
=head2 reserves
|
|
|
|
Type: has_many
|
|
|
|
Related object: L<Koha::Schema::Result::Reserve>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->has_many(
|
|
"reserves",
|
|
"Koha::Schema::Result::Reserve",
|
|
{ "foreign.itemnumber" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
=head2 return_claims
|
|
|
|
Type: has_many
|
|
|
|
Related object: L<Koha::Schema::Result::ReturnClaim>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->has_many(
|
|
"return_claims",
|
|
"Koha::Schema::Result::ReturnClaim",
|
|
{ "foreign.itemnumber" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
=head2 serialitem
|
|
|
|
Type: might_have
|
|
|
|
Related object: L<Koha::Schema::Result::Serialitem>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->might_have(
|
|
"serialitem",
|
|
"Koha::Schema::Result::Serialitem",
|
|
{ "foreign.itemnumber" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
=head2 stockrotationitem
|
|
|
|
Type: might_have
|
|
|
|
Related object: L<Koha::Schema::Result::Stockrotationitem>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->might_have(
|
|
"stockrotationitem",
|
|
"Koha::Schema::Result::Stockrotationitem",
|
|
{ "foreign.itemnumber_id" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
=head2 tmp_holdsqueue
|
|
|
|
Type: might_have
|
|
|
|
Related object: L<Koha::Schema::Result::TmpHoldsqueue>
|
|
|
|
=cut
|
|
|
|
__PACKAGE__->might_have(
|
|
"tmp_holdsqueue",
|
|
"Koha::Schema::Result::TmpHoldsqueue",
|
|
{ "foreign.itemnumber" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
|
|
# Created by DBIx::Class::Schema::Loader v0.07051 @ 2025-04-24 17:38:40
|
|
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:dD7ifmgpBATegI25Xs4sXg
|
|
|
|
__PACKAGE__->belongs_to( biblioitem => "Koha::Schema::Result::Biblioitem", "biblioitemnumber" );
|
|
|
|
__PACKAGE__->belongs_to(
|
|
"biblio",
|
|
"Koha::Schema::Result::Biblio",
|
|
{ biblionumber => "biblionumber" },
|
|
{ is_deferrable => 1, on_delete => "CASCADE", on_update => "CASCADE" },
|
|
);
|
|
|
|
__PACKAGE__->belongs_to(
|
|
"holding_library",
|
|
"Koha::Schema::Result::Branch",
|
|
{ branchcode => "holdingbranch" },
|
|
{
|
|
is_deferrable => 1,
|
|
join_type => "LEFT",
|
|
on_delete => "RESTRICT",
|
|
on_update => "CASCADE",
|
|
},
|
|
);
|
|
|
|
__PACKAGE__->belongs_to(
|
|
"home_library",
|
|
"Koha::Schema::Result::Branch",
|
|
{ branchcode => "homebranch" },
|
|
{
|
|
is_deferrable => 1,
|
|
join_type => "LEFT",
|
|
on_delete => "RESTRICT",
|
|
on_update => "CASCADE",
|
|
},
|
|
);
|
|
|
|
__PACKAGE__->add_columns(
|
|
'+bookable' => { is_boolean => 1 },
|
|
'+exclude_from_local_holds_priority' => { is_boolean => 1 },
|
|
);
|
|
|
|
# Relationship with orders via the aqorders_item table that not have foreign keys
|
|
__PACKAGE__->has_many(
|
|
"aqorders_item",
|
|
"Koha::Schema::Result::AqordersItem",
|
|
{ "foreign.itemnumber" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
__PACKAGE__->many_to_many(
|
|
"item_orders",
|
|
"aqorders_item",
|
|
"ordernumber",
|
|
);
|
|
|
|
__PACKAGE__->has_many(
|
|
"current_branchtransfers",
|
|
"Koha::Schema::Result::Branchtransfer",
|
|
sub {
|
|
my $args = shift;
|
|
|
|
return {
|
|
"$args->{foreign_alias}.itemnumber" => { -ident => "$args->{self_alias}.itemnumber" },
|
|
"$args->{foreign_alias}.datearrived" => undef,
|
|
"$args->{foreign_alias}.datecancelled" => undef,
|
|
};
|
|
}
|
|
);
|
|
|
|
# Relationship with bundled items
|
|
__PACKAGE__->many_to_many( bundle_items => 'item_bundles_hosts', 'item' );
|
|
|
|
__PACKAGE__->might_have(
|
|
"last_returned_by",
|
|
"Koha::Schema::Result::ItemsLastBorrower",
|
|
{ "foreign.itemnumber" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
__PACKAGE__->might_have(
|
|
"serial_item",
|
|
"Koha::Schema::Result::Serialitem",
|
|
{ "foreign.itemnumber" => "self.itemnumber" },
|
|
{ cascade_copy => 0, cascade_delete => 0 },
|
|
);
|
|
|
|
use C4::Context;
|
|
|
|
=head2 effective_itemtype
|
|
|
|
Missing POD for effective_itemtype.
|
|
|
|
=cut
|
|
|
|
sub effective_itemtype {
|
|
my ( $self ) = @_;
|
|
|
|
my $pref = C4::Context->preference('item-level_itypes');
|
|
if ( $pref && $self->itype() ) {
|
|
return $self->itype();
|
|
} else {
|
|
warn "item-level_itypes set but no itemtype set for item (".$self->itemnumber.")"
|
|
if $pref;
|
|
return $self->biblioitemnumber()->itemtype();
|
|
}
|
|
}
|
|
|
|
1;
|