Bugzilla – Attachment 167714 Details for
Bug 34142
Add column sub_location to items table
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 34142: Add new column sub_location to (deleted)items
Bug-34142-Add-new-column-sublocation-to-deletedite.patch (text/plain), 12.14 KB, created by
HKS3 Tadeusz Sośnierz
on 2024-06-14 13:52:09 UTC
(
hide
)
Description:
Bug 34142: Add new column sub_location to (deleted)items
Filename:
MIME Type:
Creator:
HKS3 Tadeusz Sośnierz
Created:
2024-06-14 13:52:09 UTC
Size:
12.14 KB
patch
obsolete
>From a3dcf6e2b13004a6dfa6000869458b25ab256237 Mon Sep 17 00:00:00 2001 >From: Pasi Kallinen <pasi.kallinen@koha-suomi.fi> >Date: Mon, 6 Jun 2022 07:16:45 +0300 >Subject: [PATCH] Bug 34142: Add new column sub_location to (deleted)items >MIME-Version: 1.0 >Content-Type: text/plain; charset=UTF-8 >Content-Transfer-Encoding: 8bit > >Add new column sub_location to items and deleteditems table. >Column can be used to indicate e.g. if item has some other >more specific location than permanent location. > >To test: >1) Add new authorized value for sublocation e.g. "SUBLOC" >and add some values to it. >2) Add new 952 subfield e.g. S to MARC framework and link >your new authorized value "SUBLOC" to it. >3) Link subfield to items.sub_location field in "Koha to MARC >mapping" (add 952,S). >4) Find a record and attempt to add new item to it. >=> Note that new subfield S is now displayed on item form >and dropdown selector contains values added to "SUBLOC". >=> Saving should be successfull. >=> After saving confirm that sublocation is displayed in >its own column in items listing above item form and that >sublocation is displayed with correct description. >5) Attempt to modify item. >=> Confirm that sublocation is displayed and it's correct. >6) Attempt to delete item. >=> Deleting should be successfull. > >Also confirm that sub location is displayed on these pages: >1) detail.pl >2) moredetail.pl >3. returns.pl > >Sponsored-by: Koha-Suomi Oy >Signed-off-by: Tadeusz âtadzikâ SoÅnierz <tadeusz@sosnierz.com> >--- > Koha/Database/Columns.pm | 1 + > Koha/Item.pm | 1 + > api/v1/swagger/definitions/item.yaml | 5 ++++ > circ/returns.pl | 4 +++- > .../data/mysql/atomicupdate/bug_34142.pl | 23 +++++++++++++++++++ > installer/data/mysql/kohastructure.sql | 2 ++ > .../tables/items/catalogue_detail.inc | 7 ++++++ > .../prog/en/modules/catalogue/moredetail.tt | 6 +++++ > .../prog/en/modules/circ/returns.tt | 2 +- > 9 files changed, 49 insertions(+), 2 deletions(-) > create mode 100755 installer/data/mysql/atomicupdate/bug_34142.pl > >diff --git a/Koha/Database/Columns.pm b/Koha/Database/Columns.pm >index a7fb1a5e47..dab9d9ddf1 100644 >--- a/Koha/Database/Columns.pm >+++ b/Koha/Database/Columns.pm >@@ -228,6 +228,7 @@ sub columns { > "deleted_on" => __("Deleted on"), > "location" => __("Shelving location"), > "permanent_location" => __("Permanent shelving location"), >+ "sub_location" => __("Sublocation"), > "onloan" => __("Due date"), > "cn_source" => __("Source of classification / shelving scheme"), > "cn_sort" => __("Koha normalized classification for sorting"), >diff --git a/Koha/Item.pm b/Koha/Item.pm >index 91c15b22d5..823fc754b9 100644 >--- a/Koha/Item.pm >+++ b/Koha/Item.pm >@@ -1795,6 +1795,7 @@ sub to_api_mapping { > stocknumber => 'inventory_number', > new_status => 'new_status', > deleted_on => undef, >+ sub_location => 'sub_location' > }; > } > >diff --git a/api/v1/swagger/definitions/item.yaml b/api/v1/swagger/definitions/item.yaml >index ba1a8a890e..ef8b3eca79 100644 >--- a/api/v1/swagger/definitions/item.yaml >+++ b/api/v1/swagger/definitions/item.yaml >@@ -224,6 +224,11 @@ properties: > - string > - "null" > description: "'new' value, whatever free-text information." >+ sub_location: >+ type: >+ - string >+ - "null" >+ description: sub_location for this item > exclude_from_local_holds_priority: > type: boolean > description: Exclude this item from local holds priority. >diff --git a/circ/returns.pl b/circ/returns.pl >index fb3f135b71..99071a29c6 100755 >--- a/circ/returns.pl >+++ b/circ/returns.pl >@@ -781,6 +781,8 @@ my $count = 0; > my @riloop; > my $shelflocations = > { map { $_->{authorised_value} => $_->{lib} } Koha::AuthorisedValues->get_descriptions_by_koha_field( { frameworkcode => '', kohafield => 'items.location' } ) }; >+my $sublocation = >+ { map { $_->{authorised_value} => $_->{lib} } Koha::AuthorisedValues->get_descriptions_by_koha_field( { frameworkcode => '', kohafield => 'items.sub_location' } ) }; > foreach ( sort { $a <=> $b } keys %returneditems ) { > my %ri; > if ( $count++ < $returned_counter ) { >@@ -839,7 +841,7 @@ foreach ( sort { $a <=> $b } keys %returneditems ) { > $ri{location} = $item->location; > my $shelfcode = $ri{'location'}; > $ri{'location'} = $shelflocations->{$shelfcode} if ( defined( $shelfcode ) && defined($shelflocations) && exists( $shelflocations->{$shelfcode} ) ); >- >+ $ri{sub_location} = $sublocation->{$item->sub_location} if ( defined( $item->sub_location ) && defined($sublocation) && exists( $sublocation->{$item->sub_location} ) ); > } > else { > last; >diff --git a/installer/data/mysql/atomicupdate/bug_34142.pl b/installer/data/mysql/atomicupdate/bug_34142.pl >new file mode 100755 >index 0000000000..2764faf262 >--- /dev/null >+++ b/installer/data/mysql/atomicupdate/bug_34142.pl >@@ -0,0 +1,23 @@ >+use Modern::Perl; >+ >+return { >+ bug_number => "34142", >+ description => "Add column sub_location to (deleted)items table", >+ up => sub { >+ my ($args) = @_; >+ my ( $dbh, $out ) = @$args{qw(dbh out)}; >+ >+ if ( !column_exists( 'items', 'sub_location' ) ) { >+ $dbh->do( >+q{ALTER TABLE items ADD COLUMN sub_location VARCHAR(80) DEFAULT NULL AFTER permanent_location} >+ ); >+ say $out "Added new column items.sub_location"; >+ } >+ if ( !column_exists( 'deleteditems', 'sub_location' ) ) { >+ $dbh->do( >+q{ALTER TABLE deleteditems ADD COLUMN sub_location VARCHAR(80) DEFAULT NULL AFTER permanent_location} >+ ); >+ say $out "Added new column deleteditems.sub_location"; >+ } >+ }, >+}; >diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql >index 14cef909b3..7f5d9a6d85 100644 >--- a/installer/data/mysql/kohastructure.sql >+++ b/installer/data/mysql/kohastructure.sql >@@ -2781,6 +2781,7 @@ CREATE TABLE `deleteditems` ( > `deleted_on` datetime DEFAULT NULL COMMENT 'date/time of deletion', > `location` varchar(80) DEFAULT NULL COMMENT 'authorized value for the shelving location for this item (MARC21 952$c)', > `permanent_location` varchar(80) DEFAULT NULL COMMENT 'linked to the CART and PROC temporary locations feature, stores the permanent shelving location', >+ `sub_location` varchar(80) DEFAULT NULL COMMENT 'authorized value for the sublocation for this item', > `onloan` date DEFAULT NULL COMMENT 'defines if item is checked out (NULL for not checked out, and due date for checked out)', > `cn_source` varchar(10) DEFAULT NULL COMMENT 'classification source used on this item (MARC21 952$2)', > `cn_sort` varchar(255) DEFAULT NULL COMMENT 'normalized form of the call number (MARC21 952$o) used for sorting', >@@ -4039,6 +4040,7 @@ CREATE TABLE `items` ( > `deleted_on` datetime DEFAULT NULL COMMENT 'date/time of deletion', > `location` varchar(80) DEFAULT NULL COMMENT 'authorized value for the shelving location for this item (MARC21 952$c)', > `permanent_location` varchar(80) DEFAULT NULL COMMENT 'linked to the CART and PROC temporary locations feature, stores the permanent shelving location', >+ `sub_location` varchar(80) DEFAULT NULL COMMENT 'authorized value for the sublocation for this item', > `onloan` date DEFAULT NULL COMMENT 'defines if item is checked out (NULL for not checked out, and due date for checked out)', > `cn_source` varchar(10) DEFAULT NULL COMMENT 'classification source used on this item (MARC21 952$2)', > `cn_sort` varchar(255) DEFAULT NULL COMMENT 'normalized form of the call number (MARC21 952$o) used for sorting', >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers/tables/items/catalogue_detail.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers/tables/items/catalogue_detail.inc >index 86e8b3a554..d14904b1ea 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers/tables/items/catalogue_detail.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/html_helpers/tables/items/catalogue_detail.inc >@@ -193,6 +193,7 @@ > const can_edit_items_from = [% To.json(can_edit_items_from || {}) | $raw %]; > const item_type_image_locations = [% To.json(item_type_image_locations) | $raw %]; > const av_loc = new Map([% To.json(AuthorisedValues.Get('LOC')) | $raw %].map( av => [av.authorised_value, av.lib])); >+ const av_subloc = new Map([% To.json(AuthorisedValues.GetDescriptionsByKohaField({ kohafield => 'items.sub_location' })) | $raw %].map( av => [av.authorised_value, av.lib])); > const av_lost = new Map([% To.json(AuthorisedValues.GetDescriptionsByKohaField({ kohafield => 'items.itemlost' })) | $raw %].map( av => [av.authorised_value, av.lib])); > const av_withdrawn = new Map([% To.json(AuthorisedValues.GetDescriptionsByKohaField({ kohafield => 'items.withdrawn' })) | $raw %].map( av => [av.authorised_value, av.lib])); > const av_damaged = new Map([% To.json(AuthorisedValues.GetDescriptionsByKohaField({ kohafield => 'items.damaged' })) | $raw %].map( av => [av.authorised_value, av.lib])); >@@ -384,6 +385,12 @@ > } else { > nodes += escape_str(loc_str); > } >+ if ( row.sub_location ) { >+ nodes += '<span class="sub_location">'; >+ let sub_location_str = av_subloc.get(row.sub_location.toString()); >+ nodes += '(%s)'.format(escape_str(sub_location_str)); >+ nodes += '</span>'; >+ } > nodes += '</span>'; > return nodes; > } >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tt >index 6ef020cecb..5cf7d60c08 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/catalogue/moredetail.tt >@@ -147,6 +147,12 @@ > [% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.location', authorised_value => ITEM_DAT.location ) | html %] > </li> > [% END %] >+ [% IF ( ITEM_DAT.sub_location ) %] >+ <li> >+ <span class="label">Sublocation:</span> >+ [% AuthorisedValues.GetDescriptionByKohaField( kohafield => 'items.sub_location', authorised_value => ITEM_DAT.sub_location ) | html %] >+ </li> >+ [% END %] > [% IF ( ITEM_DAT.replacementprice ) %] > <li><span class="label">Replacement price:</span> [% ITEM_DAT.replacementprice | $Price %] </li> > [% END %] >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt >index 474a3e6473..ac5b037cf3 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/circ/returns.tt >@@ -1317,7 +1317,7 @@ > [%- END -%] > </td> > <td class="ci-shelvinglocation"> >- <span class="shelvingloc">[% riloo.location | html %]</span> >+ <span class="shelvingloc">[% riloo.location | html %] [% IF ( riloo.sub_location ) %] ([% riloo.sub_location | html %]) [% END %]</span> > </td> > <td class="ci-callnumber"> > [% riloo.itemcallnumber | html %] >-- >2.45.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 34142
:
157299
|
157300
|
159236
|
159237
|
164875
|
164876
|
164877
|
167714
|
172103
|
172104