From a6cd481e2185c8f4d534c160f3f2f0cfdcd665c3 Mon Sep 17 00:00:00 2001
From: Kyle Hall <kyle@bywatersolutions.com>
Date: Mon, 27 Jun 2022 08:13:39 -0400
Subject: [PATCH] Bug 31054 - Manual importing for EDIFACT invoices fails with
 a 500 error page

Error in plack log is: Can't locate object method "new" via package "Koha::Plugin::Com::ByWaterSolutions::MyEdifactPlugin" (perhaps you forgot to load "Koha::Plugin::Com::ByWaterSolutions::MyEdifactPlugin"?) at /usr/share/koha/lib/Koha/EDI.pm line 219.

Test Plan:
1) Set EdifactInvoiceImport to "Don't"
2) Configure an EDI vendor to use an EDIFACT plugin
3) Attempt to import an invoice file
4) You will be shown an error page
5) Apply this patch
6) Restart all the things!
7) Attempt to import another invoice file
8) It works!
---
 Koha/EDI.pm | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Koha/EDI.pm b/Koha/EDI.pm
index 43ea19cb842..4778a1d7f7d 100644
--- a/Koha/EDI.pm
+++ b/Koha/EDI.pm
@@ -41,6 +41,7 @@ use Koha::Edifact;
 use C4::Log qw( logaction );
 use Log::Log4perl;
 use Text::Unidecode qw( unidecode );
+use Koha::Plugins; # Adds plugin dirs to @INC
 use Koha::Plugins::Handler;
 use Koha::Acquisition::Baskets;
 use Koha::Acquisition::Booksellers;
@@ -232,6 +233,7 @@ sub process_invoice {
 
     # Plugin has its own invoice processor, only run it and not the standard invoice processor below
     if ( $plugin_class ) {
+        eval "require $plugin_class"; # Import the class, eval is needed because requiring a string doesn't work like requiring a bareword
         my $plugin = $plugin_class->new();
         if ( $plugin->can('edifact_process_invoice') ) {
             Koha::Plugins::Handler->run(
-- 
2.30.2