DBRev Bug 7736 - Edifact QUOTE and ORDER functionality

Signed-off-by: Brendan A Gallagher <brendan@bywatersolutions.com>
This commit is contained in:
Brendan A Gallagher 2016-04-01 20:54:09 +00:00
parent 10e5a58c5b
commit 9f9e0ea002
3 changed files with 109 additions and 80 deletions

View File

@ -29,7 +29,7 @@ use vars qw{ $VERSION };
# - #4 : the developer version. The 4th number is the database subversion.
# used by developers when the database changes. updatedatabase take care of the changes itself
# and is automatically called by Auth.pm when needed.
$VERSION = "3.23.00.044";
$VERSION = "3.23.00.045";
sub version {
return $VERSION;

View File

@ -1,79 +0,0 @@
-- Holds details for vendors supplying goods by EDI
CREATE TABLE IF NOT EXISTS vendor_edi_accounts (
id INT(11) NOT NULL auto_increment,
description TEXT NOT NULL,
host VARCHAR(40),
username VARCHAR(40),
password VARCHAR(40),
last_activity DATE,
vendor_id INT(11) REFERENCES aqbooksellers( id ),
download_directory TEXT,
upload_directory TEXT,
san VARCHAR(20),
id_code_qualifier VARCHAR(3) default '14',
transport VARCHAR(6) default 'FTP',
quotes_enabled TINYINT(1) not null default 0,
invoices_enabled TINYINT(1) not null default 0,
orders_enabled TINYINT(1) not null default 0,
responses_enabled TINYINT(1) not null default 0,
auto_orders TINYINT(1) not null default 0,
shipment_budget INTEGER(11) REFERENCES aqbudgets( budget_id ),
PRIMARY KEY (id),
KEY vendorid (vendor_id),
KEY shipmentbudget (shipment_budget),
CONSTRAINT vfk_vendor_id FOREIGN KEY ( vendor_id ) REFERENCES aqbooksellers ( id ),
CONSTRAINT vfk_shipment_budget FOREIGN KEY ( shipment_budget ) REFERENCES aqbudgets ( budget_id )
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- Hold the actual edifact messages with links to associated baskets
CREATE TABLE IF NOT EXISTS edifact_messages (
id INT(11) NOT NULL auto_increment,
message_type VARCHAR(10) NOT NULL,
transfer_date DATE,
vendor_id INT(11) REFERENCES aqbooksellers( id ),
edi_acct INTEGER REFERENCES vendor_edi_accounts( id ),
status TEXT,
basketno INT(11) REFERENCES aqbasket( basketno),
raw_msg MEDIUMTEXT,
filename TEXT,
deleted BOOLEAN NOT NULL DEFAULT 0,
PRIMARY KEY (id),
KEY vendorid ( vendor_id),
KEY ediacct (edi_acct),
KEY basketno ( basketno),
CONSTRAINT emfk_vendor FOREIGN KEY ( vendor_id ) REFERENCES aqbooksellers ( id ),
CONSTRAINT emfk_edi_acct FOREIGN KEY ( edi_acct ) REFERENCES vendor_edi_accounts ( id ),
CONSTRAINT emfk_basketno FOREIGN KEY ( basketno ) REFERENCES aqbasket ( basketno )
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- invoices link back to the edifact message it was generated from
ALTER TABLE aqinvoices ADD COLUMN message_id INT(11) REFERENCES edifact_messages( id );
-- clean up link on deletes
ALTER TABLE aqinvoices ADD CONSTRAINT edifact_msg_fk FOREIGN KEY ( message_id ) REFERENCES edifact_messages ( id ) ON DELETE SET NULL;
-- Hold the supplier ids from quotes for ordering
-- although this is an EAN-13 article number the standard says 35 characters ???
ALTER TABLE aqorders ADD COLUMN line_item_id VARCHAR(35);
-- The suppliers unique reference usually a quotation line number ('QLI')
-- Otherwise Suppliers unique orderline reference ('SLI')
ALTER TABLE aqorders ADD COLUMN suppliers_reference_number VARCHAR(35);
ALTER TABLE aqorders ADD COLUMN suppliers_reference_qualifier VARCHAR(3);
ALTER TABLE aqorders ADD COLUMN suppliers_report text;
-- hold the EAN/SAN used in ordering
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),
ean VARCHAR(15) NOT NULL,
id_code_qualifier VARCHAR(3) NOT NULL DEFAULT '14',
CONSTRAINT efk_branchcode FOREIGN KEY ( branchcode ) REFERENCES branches ( branchcode )
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-- Syspref budget to hold shipping costs
INSERT INTO systempreferences (variable, explanation, type) VALUES('EDIInvoicesShippingBudget','The budget code used to allocate shipping charges to when processing EDI Invoice messages', 'free');
-- Add a permission for managing EDI
INSERT INTO permissions (module_bit, code, description) values (11, 'edi_manage', 'Manage EDIFACT transmissions');

View File

@ -12087,6 +12087,114 @@ if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
print "Upgrade to $DBversion done (Bug 10988 - Allow login via Google OAuth2 (OpenID Connect))\n";
SetVersion($DBversion);
}
$DBversion = "3.23.00.045";
if ( C4::Context->preference("Version") < TransformToNum($DBversion) ) {
## Holds details for vendors supplying goods by EDI
$dbh->do(q{
CREATE TABLE IF NOT EXISTS vendor_edi_accounts (
id INT(11) NOT NULL auto_increment,
description TEXT NOT NULL,
host VARCHAR(40),
username VARCHAR(40),
password VARCHAR(40),
last_activity DATE,
vendor_id INT(11) REFERENCES aqbooksellers( id ),
download_directory TEXT,
upload_directory TEXT,
san VARCHAR(20),
id_code_qualifier VARCHAR(3) default '14',
transport VARCHAR(6) default 'FTP',
quotes_enabled TINYINT(1) not null default 0,
invoices_enabled TINYINT(1) not null default 0,
orders_enabled TINYINT(1) not null default 0,
responses_enabled TINYINT(1) not null default 0,
auto_orders TINYINT(1) not null default 0,
shipment_budget INTEGER(11) REFERENCES aqbudgets( budget_id ),
PRIMARY KEY (id),
KEY vendorid (vendor_id),
KEY shipmentbudget (shipment_budget),
CONSTRAINT vfk_vendor_id FOREIGN KEY ( vendor_id ) REFERENCES aqbooksellers ( id ),
CONSTRAINT vfk_shipment_budget FOREIGN KEY ( shipment_budget ) REFERENCES aqbudgets ( budget_id )
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
});
## Hold the actual edifact messages with links to associated baskets
$dbh->do(q{
CREATE TABLE IF NOT EXISTS edifact_messages (
id INT(11) NOT NULL auto_increment,
message_type VARCHAR(10) NOT NULL,
transfer_date DATE,
vendor_id INT(11) REFERENCES aqbooksellers( id ),
edi_acct INTEGER REFERENCES vendor_edi_accounts( id ),
status TEXT,
basketno INT(11) REFERENCES aqbasket( basketno),
raw_msg MEDIUMTEXT,
filename TEXT,
deleted BOOLEAN NOT NULL DEFAULT 0,
PRIMARY KEY (id),
KEY vendorid ( vendor_id),
KEY ediacct (edi_acct),
KEY basketno ( basketno),
CONSTRAINT emfk_vendor FOREIGN KEY ( vendor_id ) REFERENCES aqbooksellers ( id ),
CONSTRAINT emfk_edi_acct FOREIGN KEY ( edi_acct ) REFERENCES vendor_edi_accounts ( id ),
CONSTRAINT emfk_basketno FOREIGN KEY ( basketno ) REFERENCES aqbasket ( basketno )
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
});
## invoices link back to the edifact message it was generated from
$dbh->do(q{
ALTER TABLE aqinvoices ADD COLUMN message_id INT(11) REFERENCES edifact_messages( id );
});
## clean up link on deletes
$dbh->do(q{
ALTER TABLE aqinvoices ADD CONSTRAINT edifact_msg_fk FOREIGN KEY ( message_id ) REFERENCES edifact_messages ( id ) ON DELETE SET NULL;
});
## Hold the supplier ids from quotes for ordering
## although this is an EAN-13 article number the standard says 35 characters ???
$dbh->do(q{
ALTER TABLE aqorders ADD COLUMN line_item_id VARCHAR(35);
});
## The suppliers unique reference usually a quotation line number ('QLI')
## Otherwise Suppliers unique orderline reference ('SLI')
$dbh->do(q{
ALTER TABLE aqorders ADD COLUMN suppliers_reference_number VARCHAR(35);
});
$dbh->do(q{
ALTER TABLE aqorders ADD COLUMN suppliers_reference_qualifier VARCHAR(3);
});
$dbh->do(q{
ALTER TABLE aqorders ADD COLUMN suppliers_report text;
});
## hold the EAN/SAN used in ordering
$dbh->do(q{
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),
ean VARCHAR(15) NOT NULL,
id_code_qualifier VARCHAR(3) NOT NULL DEFAULT '14',
CONSTRAINT efk_branchcode FOREIGN KEY ( branchcode ) REFERENCES branches ( branchcode )
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
});
## Syspref budget to hold shipping costs
$dbh->do(q{
INSERT INTO systempreferences (variable, explanation, type) VALUES('EDIInvoicesShippingBudget','The budget code used to allocate shipping charges to when processing EDI Invoice messages', 'free');
});
## Add a permission for managing EDI
$dbh->do(q{
INSERT INTO permissions (module_bit, code, description) values (11, 'edi_manage', 'Manage EDIFACT transmissions');
});
print "Upgrade to $DBversion done (Bug 7736 - Edifact QUOTE and ORDER functionality))\n";
SetVersion($DBversion);
}
# DEVELOPER PROCESS, search for anything to execute in the db_update directory
# SEE bug 13068
# if there is anything in the atomicupdate, read and execute it.