From 00564024ba1079f230fe3b41d5b7c3b2b3e852d6 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Sat, 22 Dec 2018 19:51:26 +0100 Subject: [PATCH] Move schema to json --- Admin/Install/db.json | 140 +++++++++++++++++++++++++++++++++ Admin/Installer.php | 178 ------------------------------------------ 2 files changed, 140 insertions(+), 178 deletions(-) create mode 100644 Admin/Install/db.json diff --git a/Admin/Install/db.json b/Admin/Install/db.json new file mode 100644 index 0000000..18af3dd --- /dev/null +++ b/Admin/Install/db.json @@ -0,0 +1,140 @@ +{ + "accounting_account": { + "name": "accounting_account", + "fields": { + "accounting_account_id": { + "name": "accounting_account_id", + "type": "INT", + "null": false, + "primary": true, + "autoincrement": true + }, + "accounting_account_name": { + "name": "accounting_account_name", + "type": "VARCHAR(50)", + "null": false + }, + "accounting_account_description": { + "name": "accounting_account_description", + "type": "VARCHAR(255)", + "null": false + }, + "accounting_account_type": { + "name": "accounting_account_type", + "type": "TINYINT", + "null": false + }, + "accounting_account_parent": { + "name": "accounting_account_parent", + "type": "INT", + "default": null, + "null": true + } + } + }, + "accounting_batch": { + "name": "accounting_batch", + "fields": { + "accounting_batch_id": { + "name": "accounting_batch_id", + "type": "INT", + "null": false, + "primary": true, + "autoincrement": true + }, + "accounting_batch_title": { + "name": "accounting_batch_title", + "type": "VARCHAR(50)", + "null": false + }, + "accounting_batch_creator": { + "name": "accounting_batch_creator", + "type": "INT", + "null": false, + "foreignTable": "account", + "foreignKey": "account_id" + }, + "accounting_batch_created": { + "name": "accounting_batch_created", + "type": "DATETIME", + "null": false + }, + "accounting_batch_type": { + "name": "accounting_batch_type", + "type": "TINYINT", + "default": null, + "null": true + } + } + }, + "accounting_posting": { + "name": "accounting_posting", + "fields": { + "accounting_posting_id": { + "name": "accounting_posting_id", + "type": "INT", + "null": false, + "primary": true, + "autoincrement": true + }, + "accounting_posting_batch": { + "name": "accounting_posting_batch", + "type": "INT", + "null": false, + "foreignTable": "accounting_batch", + "foreignKey": "accounting_batch_id" + }, + "accounting_posting_receipt": { + "name": "accounting_posting_receipt", + "type": "INT", + "default": null, + "null": true + }, + "accounting_posting_receipt_ext": { + "name": "accounting_posting_receipt_ext", + "type": "INT", + "default": null, + "null": true + }, + "accounting_posting_price": { + "name": "accounting_posting_price", + "type": "BIGINT", + "null": false + } + } + }, + "accounting_posting_ele": { + "name": "accounting_posting_ele", + "fields": { + "accounting_posting_ele_id": { + "name": "accounting_posting_ele_id", + "type": "INT", + "null": false, + "primary": true, + "autoincrement": true + }, + "accounting_posting_ele_type": { + "name": "accounting_posting_ele_type", + "type": "TINYINT", + "null": false + }, + "accounting_posting_ele_account": { + "name": "accounting_posting_ele_account", + "type": "INT", + "null": false, + "foreignTable": "accounting_account", + "foreignKey": "accounting_account_id" + }, + "accounting_posting_ele_value": { + "name": "accounting_posting_ele_value", + "type": "BIGINT", + "null": false + }, + "accounting_posting_ele_tax": { + "name": "accounting_posting_ele_tax", + "type": "INT", + "null": false + } + } + } +} \ No newline at end of file diff --git a/Admin/Installer.php b/Admin/Installer.php index 72c5ace..98dfa22 100644 --- a/Admin/Installer.php +++ b/Admin/Installer.php @@ -29,182 +29,4 @@ use phpOMS\Module\InstallerAbstract; */ class Installer extends InstallerAbstract { - - /** - * {@inheritdoc} - */ - public static function install(DatabasePool $dbPool, InfoManager $info) : void - { - parent::install($dbPool, $info); - - switch ($dbPool->get()->getType()) { - case DatabaseType::MYSQL: - $dbPool->get()->con->prepare( - 'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'accounting_account` ( - `accounting_account_id` int(11) NOT NULL AUTO_INCREMENT, - `accounting_account_name` varchar(25) NOT NULL, - `accounting_account_description` varchar(255) NOT NULL, - `accounting_account_type` tinyint(1) NOT NULL, - `accounting_account_parent` int(11) NOT NULL, - PRIMARY KEY (`accounting_account_id`), - KEY `accounting_account_parent` (`accounting_account_parent`) - )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;' - )->execute(); - - $dbPool->get()->con->prepare( - 'ALTER TABLE `' . $dbPool->get()->prefix . 'accounting_account` - ADD CONSTRAINT `' . $dbPool->get()->prefix . 'accounting_account_ibfk_1` FOREIGN KEY (`accounting_account_parent`) REFERENCES `' . $dbPool->get()->prefix . 'accounting_account` (`accounting_account_id`);' - )->execute(); - - $dbPool->get()->con->prepare( - 'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'accounting_batch` ( - `accounting_batch_id` int(11) NOT NULL AUTO_INCREMENT, - `accounting_batch_title` varchar(30) NOT NULL, - `accounting_batch_creator` int(11) NOT NULL, - `accounting_batch_created`datetime NOT NULL, - `accounting_batch_type` tinyint(1) NOT NULL, - PRIMARY KEY (`accounting_batch_id`), - KEY `accounting_batch_creator` (`accounting_batch_creator`) - )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;' - )->execute(); - - $dbPool->get()->con->prepare( - 'ALTER TABLE `' . $dbPool->get()->prefix . 'accounting_batch` - ADD CONSTRAINT `' . $dbPool->get()->prefix . 'accounting_batch_ibfk_1` FOREIGN KEY (`accounting_batch_creator`) REFERENCES `' . $dbPool->get()->prefix . 'account` (`account_id`);' - )->execute(); - - $dbPool->get()->con->prepare( - 'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'accounting_posting` ( - `accounting_posting_id` int(11) NOT NULL AUTO_INCREMENT, - `accounting_posting_batch` int(11) NOT NULL, - `accounting_posting_receipt` int(11) DEFAULT NULL, - `accounting_posting_receipt_ext` int(11) DEFAULT NULL, - `accounting_posting_price` decimal(11,3) NOT NULL, - `accounting_posting_affiliation` datetime NOT NULL, - PRIMARY KEY (`accounting_posting_id`), - KEY `accounting_posting_batch` (`accounting_posting_batch`) - )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;' - )->execute(); - - $dbPool->get()->con->prepare( - 'ALTER TABLE `' . $dbPool->get()->prefix . 'accounting_posting` - ADD CONSTRAINT `' . $dbPool->get()->prefix . 'accounting_posting_ibfk_1` FOREIGN KEY (`accounting_posting_batch`) REFERENCES `' . $dbPool->get()->prefix . 'accounting_batch` (`accounting_batch_id`);' - )->execute(); - - $dbPool->get()->con->prepare( - 'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'accounting_posting_ele` ( - `accounting_posting_ele_id` int(11) NOT NULL AUTO_INCREMENT, - `accounting_posting_ele_type` tinyint(1) NOT NULL, - `accounting_posting_ele_account` int(11) NOT NULL, - `accounting_posting_ele_value` decimal(11,3) NOT NULL, - `accounting_posting_ele_tax` tinyint(1) NOT NULL, - PRIMARY KEY (`accounting_posting_ele_id`), - KEY `accounting_posting_ele_account` (`accounting_posting_ele_account`) - )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;' - )->execute(); - - $dbPool->get()->con->prepare( - 'ALTER TABLE `' . $dbPool->get()->prefix . 'accounting_posting_ele` - ADD CONSTRAINT `' . $dbPool->get()->prefix . 'accounting_posting_ele_ibfk_1` FOREIGN KEY (`accounting_posting_ele_account`) REFERENCES `' . $dbPool->get()->prefix . 'accounting_account` (`accounting_account_id`);' - )->execute(); - - /* - * type = (offer, confirmation etc.) - * soptained = date of when we received the service/order (not the invoice) - * check = person who checked or is supposed to check the invoice - * checked = date of when the invoice got approved (no datetime = no approval) - * posting referes (direct) - * payment referes to this (indirect) - * status { - * blank - * received-ok - * received-notok - * checked-ok - * checked-notok - * posted-ok - * posted-notok - * payed-ok - * payed-notok - * } - */ - /* - * TODO: Purchasing can create. person who creates automatically get's permission for these to read. - * TODO: move to different module - */ - /* - $dbPool->get()->con->prepare( - 'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'accounting_invoices_process` ( - `AccountingInvoiceProcessID` int(11) NOT NULL AUTO_INCREMENT, - `media` int(11) DEFAULT NULL, - `type` tinyint(1) DEFAULT NULL, - `supplier` int(11) DEFAULT NULL, - `sname` varchar(32) DEFAULT NULL, - `optained` datetime NOT NULL, - `soptained` datetime NOT NULL, - `refnumber` varchar(24) NOT NULL, - `invoicedate` datetime NOT NULL, - `internalref` int(11) NOT NULL, - `due` datetime NOT NULL, - `duediscount` datetime NOT NULL, - `amount` decimal(11,3) NOT NULL, - `amountdiscount` decimal(11,3) NOT NULL, - `order` int(11) DEFAULT NULL, - `arrival` int(11) DEFAULT NULL, - `dnote` int(11) DEFAULT NULL, - PRIMARY KEY (`AccountingInvoiceProcessID`), - KEY `media` (`media`), - KEY `order` (`order`), - KEY `arrival` (`arrival`), - KEY `dnote` (`dnote`) - )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;' - )->execute(); - - $dbPool->get()->con->prepare( - 'ALTER TABLE `' . $dbPool->get()->prefix . 'accounting_invoices_process` - ADD CONSTRAINT `' . $dbPool->get()->prefix . 'accounting_invoices_process_ibfk_1` FOREIGN KEY (`media`) REFERENCES `' . $dbPool->get()->prefix . 'media` (`media_id`), - ADD CONSTRAINT `' . $dbPool->get()->prefix . 'accounting_invoices_process_ibfk_2` FOREIGN KEY (`order`) REFERENCES `' . $dbPool->get()->prefix . 'purchase_invoices` (`PurchaseInvoiceID`), - ADD CONSTRAINT `' . $dbPool->get()->prefix . 'accounting_invoices_process_ibfk_3` FOREIGN KEY (`arrival`) REFERENCES `' . $dbPool->get()->prefix . 'warehousing_arrival` (`WarehousingArrivalID`), - ADD CONSTRAINT `' . $dbPool->get()->prefix . 'accounting_invoices_process_ibfk_4` FOREIGN KEY (`dnote`) REFERENCES `' . $dbPool->get()->prefix . 'purchase_dnote` (`PurchaseDnoteID`);' - )->execute(); - - $dbPool->get()->con->prepare( - 'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'accounting_invoices_status` ( - `AccountingInvoiceStatusID` int(11) NOT NULL AUTO_INCREMENT, - `invoice` int(11) DEFAULT NULL, - `status` tinyint(1) DEFAULT NULL, - `person` int(11) DEFAULT NULL, - `changed` datetime DEFAULT NULL, - `info` varchar(256) NOT NULL, - PRIMARY KEY (`AccountingInvoiceStatusID`), - KEY `invoice` (`invoice`), - KEY `person` (`person`) - )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;' - )->execute(); - - $dbPool->get()->con->prepare( - 'ALTER TABLE `' . $dbPool->get()->prefix . 'accounting_invoices_status` - ADD CONSTRAINT `' . $dbPool->get()->prefix . 'accounting_invoices_status_ibfk_1` FOREIGN KEY (`invoice`) REFERENCES `' . $dbPool->get()->prefix . 'accounting_invoices_process` (`AccountingInvoiceProcessID`), - ADD CONSTRAINT `' . $dbPool->get()->prefix . 'accounting_invoices_status_ibfk_2` FOREIGN KEY (`person`) REFERENCES `' . $dbPool->get()->prefix . 'account` (`account_id`);' - )->execute(); - - $dbPool->get()->con->prepare( - 'CREATE TABLE if NOT EXISTS `' . $dbPool->get()->prefix . 'accounting_invoices_process_permission` ( - `AccountingInvoiceProcessPermissionID` int(11) NOT NULL AUTO_INCREMENT, - `process` int(11) DEFAULT NULL, - `person` int(11) DEFAULT NULL, - `permission` int(11) DEFAULT NULL, - PRIMARY KEY (`AccountingInvoiceProcessPermissionID`), - KEY `person` (`person`), - KEY `process` (`process`) - )ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;' - )->execute(); - - $dbPool->get()->con->prepare( - 'ALTER TABLE `' . $dbPool->get()->prefix . 'accounting_invoices_process_permission` - ADD CONSTRAINT `' . $dbPool->get()->prefix . 'accounting_invoices_process_permission_ibfk_1` FOREIGN KEY (`person`) REFERENCES `' . $dbPool->get()->prefix . 'account` (`account_id`), - ADD CONSTRAINT `' . $dbPool->get()->prefix . 'accounting_invoices_process_permission_ibfk_2` FOREIGN KEY (`process`) REFERENCES `' . $dbPool->get()->prefix . 'accounting_invoices_process` (`AccountingInvoiceProcessID`);' - )->execute();*/ - break; - } - } }