Bug 9902 - item subfields not populating
authorKyle M Hall <kyle@bywatersolutions.com>
Wed, 27 Mar 2013 13:18:24 +0000 (09:18 -0400)
committerJared Camins-Esakov <jcamins@cpbibliography.com>
Sun, 7 Apr 2013 17:20:07 +0000 (13:20 -0400)
Test Plan:
1) Create a new serial with a default location, call number, and library
   ( the library will need to be any but the one you are logged in as )
2) Click the "Recieve" button for this serial
3) Click "Click to add item"
4) Note those values are not populated
5) Apply the patch
6) Reload the page
7) Click "Click to add item"
8) Note those values are now populated

Signed-off-by: Nicole C. Engard <nengard@bywatersolutions.com>
All tests pass!

Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
This seems to restore the former behaviour.

Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
All tests and QA script pass.
Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com>
C4/Items.pm

index 6533a68..e173dc2 100644 (file)
@@ -2656,6 +2656,10 @@ sub PrepareItemrecordDisplay {
                     && $defaultvalues
                     && $defaultvalues->{'callnumber'} ) {
                     if( $itemrecord and $defaultvalues and not $itemrecord->field($subfield) ){
+                        # if the item record exists, only use default value if the item has no callnumber
+                        $defaultvalue = $defaultvalues->{callnumber};
+                    } elsif ( !$itemrecord and $defaultvalues ) {
+                        # if the item record *doesn't* exists, always use the default value
                         $defaultvalue = $defaultvalues->{callnumber};
                     }
                 }
@@ -2671,6 +2675,10 @@ sub PrepareItemrecordDisplay {
                     && $defaultvalues->{'location'} ) {
 
                     if ( $itemrecord and $defaultvalues and not $itemrecord->field($subfield) ) {
+                        # if the item record exists, only use default value if the item has no locationr
+                        $defaultvalue = $defaultvalues->{location};
+                    } elsif ( !$itemrecord and $defaultvalues ) {
+                        # if the item record *doesn't* exists, always use the default value
                         $defaultvalue = $defaultvalues->{location};
                     }
                 }
@@ -2701,7 +2709,7 @@ sub PrepareItemrecordDisplay {
                                 $authorised_lib{$branchcode} = $branchname;
                             }
                         }
-                        $defaultvalue = C4::Context->userenv->{branch};
+                        $defaultvalue = $defaultvalues->{branchcode} || C4::Context->userenv->{branch};
 
                         #----- itemtypes
                     } elsif ( $tagslib->{$tag}->{$subfield}->{authorised_value} eq "itemtypes" ) {
@@ -2727,6 +2735,8 @@ sub PrepareItemrecordDisplay {
                             $authorised_lib{$class_source} = $class_sources->{$class_source}->{'description'};
                         }
 
+                        $defaultvalue = $default_source;
+
                         #---- "true" authorised value
                     } else {
                         $authorised_values_sth->execute(