From ad2c2d6c2177771b3cb1df5c8ea6d5df583b781e Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Thu, 27 Sep 2018 06:51:27 -0400 Subject: [PATCH] Bug 21417: EDI ordering fails when basket and EAN libraries do not match When clicking Create EDIFACT Order on /acqui/basket.pl, an EDIFACT message will not be generated if aqbasket.branch does not match edifact_ean.branchcode. This failure does not generate any sort of error message, it just fails to produce a message. We should allow ean's to not require a branch to be set, then if we don't find a branch specific each, we can look for the default version of the ean. Test Plan: 1) Apply this patch set 2) Run updatedatabase 3) Verify you can create a Library EAN without setting a branchcode for it 4) Verify you can use this EAN to send an EDI order where the basket has a branchcode set --- Koha/EDI.pm | 10 ++++++++++ admin/edi_ean_accounts.pl | 4 ++-- installer/data/mysql/atomicupdate/bug_21417.perl | 7 +++++++ installer/data/mysql/kohastructure.sql | 2 +- .../prog/en/modules/admin/edi_ean_accounts.tt | 1 + 5 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 installer/data/mysql/atomicupdate/bug_21417.perl diff --git a/Koha/EDI.pm b/Koha/EDI.pm index 4840fe1f5a..0e632c9294 100644 --- a/Koha/EDI.pm +++ b/Koha/EDI.pm @@ -81,6 +81,16 @@ sub create_edi_order { my $ean_obj = $schema->resultset('EdifactEan')->search($ean_search_keys)->single; + # If no branch specific each can be found, look for a default ean + unless ($ean_obj) { + $ean_obj = $schema->resultset('EdifactEan')->search( + { + ean => $ean, + branchcode => undef, + } + )->single; + } + my $dbh = C4::Context->dbh; my $arr_ref = $dbh->selectcol_arrayref( 'select id from edifact_messages where basketno = ? and message_type = \'QUOTE\'', diff --git a/admin/edi_ean_accounts.pl b/admin/edi_ean_accounts.pl index e22b04aead..e28457c59c 100755 --- a/admin/edi_ean_accounts.pl +++ b/admin/edi_ean_accounts.pl @@ -68,7 +68,7 @@ else { if ($change) { $schema->resultset('EdifactEan')->find($id)->update( { - branchcode => scalar $input->param('branchcode'), + branchcode => scalar $input->param('branchcode') || undef, description => scalar $input->param('description'), ean => scalar $input->param('ean'), id_code_qualifier => scalar $input->param('id_code_qualifier'), @@ -78,7 +78,7 @@ else { else { my $new_ean = $schema->resultset('EdifactEan')->new( { - branchcode => scalar $input->param('branchcode'), + branchcode => scalar $input->param('branchcode') || undef, description => scalar $input->param('description'), ean => scalar $input->param('ean'), id_code_qualifier => scalar $input->param('id_code_qualifier'), diff --git a/installer/data/mysql/atomicupdate/bug_21417.perl b/installer/data/mysql/atomicupdate/bug_21417.perl new file mode 100644 index 0000000000..952e5b6bd3 --- /dev/null +++ b/installer/data/mysql/atomicupdate/bug_21417.perl @@ -0,0 +1,7 @@ +$DBversion = 'XXX'; # will be replaced by the RM +if( CheckVersion( $DBversion ) ) { + $dbh->do( "ALTER TABLE edifact_ean MODIFY branchcode VARCHAR(10) NULL DEFAULT NULL" ); + + SetVersion( $DBversion ); + print "Upgrade to $DBversion done (Bug XXXXX - description)\n"; +} diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql index 49a0f180be..bceb5cea1a 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -3735,7 +3735,7 @@ DROP TABLE IF EXISTS edifact_ean; CREATE TABLE IF NOT EXISTS edifact_ean ( ee_id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, description VARCHAR(128) NULL DEFAULT NULL, - branchcode VARCHAR(10) NOT NULL REFERENCES branches (branchcode), + branchcode VARCHAR(10) NULL DEFAULT NULL REFERENCES branches (branchcode), ean VARCHAR(15) NOT NULL, id_code_qualifier VARCHAR(3) NOT NULL DEFAULT '14', CONSTRAINT efk_branchcode FOREIGN KEY ( branchcode ) REFERENCES branches ( branchcode ) diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/edi_ean_accounts.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/edi_ean_accounts.tt index 939b83499d..fcf40de217 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/edi_ean_accounts.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/edi_ean_accounts.tt @@ -71,6 +71,7 @@