Fix Can't locate object method "workstation" error
authorJason Etheridge <jason@EquinoxInitiative.org>
Tue, 17 Jan 2017 21:39:58 +0000 (16:39 -0500)
committerMike Rylander <mrylander@gmail.com>
Fri, 30 Jun 2017 15:22:44 +0000 (11:22 -0400)
When trying to utilize the Recall functionality, Evergreen would fail to update
targeted circulations (truncate the due date, etc.)  In the logs, we would have
an error like this:

[] open-ils.storage [ERR ::action.pm:1597:] Processing of hold failed:
Can't locate object method "workstation" via package "action::circulation" at
/usr/local/share/perl/5.14.2/OpenILS/Application/Storage/CDBI.pm line 181.

We first tried adding the workstation column to Storage/CDBI/action.pm, but a
similar message would then appear instead: Can't locate object method
"checkin_workstation"

This sidesteps the problem entirely.

Thanks to Mike for the solution!

Signed-off-by: Jason Etheridge <jason@EquinoxInitiative.org>
Signed-off-by: Mike Rylander <mrylander@gmail.com>

Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/CDBI.pm

index d8391b8..d164251 100644 (file)
@@ -178,7 +178,7 @@ sub to_fieldmapper {
 
     if (ref($obj)) {
         for my $field ( $fm->real_fields ) {
-            $fm->$field( ''.$obj->$field ) if defined $obj->$field;
+            $fm->$field( ''.$obj->$field ) if $obj->find_column($field) && defined $obj->$field;
         }
     }