CREATE TABLE IF NOT EXISTS `contract_document_statuses_$mid` (
  `id` INTEGER  NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(128)  NOT NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE IF NOT EXISTS `contract_document_types_$mid` (
  `id` INTEGER  NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(128)  NOT NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE IF NOT EXISTS `contract_document_journal_$mid` (
  `id` INTEGER  NOT NULL AUTO_INCREMENT,
  `title` VARCHAR(255)  NOT NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE IF NOT EXISTS `contract_document_$mid` (
  `id` INTEGER  NOT NULL AUTO_INCREMENT,
  `cid` INTEGER  NOT NULL,
  `journal_id` INTEGER  NOT NULL,
  `type` INTEGER  NOT NULL,
  `title` VARCHAR(255) NOT NULL,
  `date` TIMESTAMP  NOT NULL,
  `user` INTEGER  NOT NULL,
  `comment` TEXT  NOT NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE IF NOT EXISTS `contract_document_status_list_$mid` (
  `id` INTEGER  NOT NULL AUTO_INCREMENT,
  `id_document` INTEGER  NOT NULL,
  `date` TIMESTAMP  NOT NULL,
  `status` INTEGER  NOT NULL,
  `user` INTEGER  NOT NULL,
  `comment` TEXT  NOT NULL,
  PRIMARY KEY (`id`)
);

ALTER TABLE `contract_document_$mid` ADD `journal_id` INTEGER  NOT NULL;
ALTER TABLE `contract_document_$mid` ADD `status_id` INTEGER  NOT NULL;
ALTER TABLE `contract_document_status_list_$mid` CHANGE COLUMN `comment` `comment` TEXT NULL;

DELETE FROM script_event_type WHERE mid="p$mid";
INSERT INTO script_event_type (mid, event_id, event_mode, title) VALUES ('p$mid', 'ru.bitel.bgbilling.plugins.documents.server.bean.event.DocumentGeneratedEvent', 1, 'Сгенерирован документ по шаблону');

-- переименовываем и копируем старые таблицы.
CREATE TABLE IF NOT EXISTS `documents` ( PRIMARY KEY (`id`)) SELECT * FROM `contract_document_$mid`;
CREATE TABLE IF NOT EXISTS `documents_journal` ( PRIMARY KEY (`id`) ) SELECT * FROM `contract_document_journal_$mid`;
CREATE TABLE IF NOT EXISTS `documents_type` ( PRIMARY KEY (`id`) ) SELECT * FROM `contract_document_types_$mid`;
CREATE TABLE IF NOT EXISTS `documents_status` ( PRIMARY KEY (`id`) ) SELECT * FROM `contract_document_statuses_$mid`;
CREATE TABLE IF NOT EXISTS `documents_status_log` ( PRIMARY KEY (`id`) ) SELECT * FROM `contract_document_status_list_$mid`;

ALTER TABLE `documents` CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT;
ALTER TABLE `documents_journal` CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT;
ALTER TABLE `documents_type` CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT;
ALTER TABLE `documents_status` CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT;
ALTER TABLE `documents_status_log` CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT,CHANGE COLUMN `comment` `comment` TEXT NULL;

-- TODO: текущий релиз 5.2. В новых версиях снести старые таблицы в самом начале файла

CREATE TABLE IF NOT EXISTS `documents_pattern` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(100) NOT NULL,
  `comment` varchar(250) DEFAULT NULL,
  `generated_file_name` varchar(100) DEFAULT NULL,
  `output_name` varchar(100) DEFAULT NULL,
  `use_in_plugin` tinyint(4) NOT NULL DEFAULT '1',
  `extractor_class` text DEFAULT NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE IF NOT EXISTS `documents_pattern_variables` (
  `pattern_id` int(11) NOT NULL,
  `title` varchar(45) NOT NULL,
  `type` tinyint(4) DEFAULT '1',
  `additional_param` varchar(50),
  `value` text,
  PRIMARY KEY (`pattern_id`,`title`),
  KEY `fk_docs_pattern_vars` (`pattern_id`),
  CONSTRAINT `fk_docs_pattern_vars` FOREIGN KEY (`pattern_id`) REFERENCES `documents_pattern` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION
);

CREATE TABLE IF NOT EXISTS `documents_pattern_tables` (
  `pattern_id` int(11) NOT NULL,
  `title` varchar(100) NOT NULL,
  `position` int(11),
  `extract_method` tinyint(4) DEFAULT '1',
  `value` text,
  PRIMARY KEY (`pattern_id`,`title`),
  KEY `fk_doc_pattern_tables` (`pattern_id`),
  CONSTRAINT `fk_doc_pattern_tables` FOREIGN KEY (`pattern_id`) REFERENCES `documents_pattern` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION
);

-- 6.2 and greater
ALTER TABLE `documents_pattern_tables` ADD COLUMN `identifier` VARCHAR(32) NULL DEFAULT NULL ;
ALTER TABLE `documents` ADD COLUMN `pattern_id` int(11) NOT NULL DEFAULT -1;

ALTER TABLE `documents_pattern` 
ADD COLUMN `user` INT(11) NULL DEFAULT '-2',
ADD COLUMN `create_date` DATETIME NULL AFTER `user`,
ADD COLUMN `last_modify_date` DATETIME NULL AFTER `create_date`;

ALTER TABLE `documents` 
	CHANGE COLUMN `date` `create_date` TIMESTAMP NULL  ,
	CHANGE COLUMN `comment` `comment` MEDIUMTEXT NULL ,
	ADD COLUMN `last_modify_date` TIMESTAMP NULL;

-- 7.2 and greater
CREATE TABLE IF NOT EXISTS `documents_pattern_domains` (
  `pattern_id` int(11) DEFAULT NULL,
  `domain_id` int(11) DEFAULT NULL,
  KEY `fk_documents_pattern_domains_patternkey` (`pattern_id`),
  KEY `fk_documents_pattern_domains_domainkey` (`domain_id`),
  CONSTRAINT `fk_documents_pattern_domains_domainkey` FOREIGN KEY (`domain_id`) REFERENCES `domain` (`id`),
  CONSTRAINT `fk_documents_pattern_domains_patternkey` FOREIGN KEY (`pattern_id`) REFERENCES `documents_pattern` (`id`)
);

ALTER TABLE `documents_pattern_domains` DROP FOREIGN KEY `fk_documents_pattern_domains_patternkey`;
ALTER TABLE `documents_pattern_domains` ADD CONSTRAINT `fk_documents_pattern_domains_patternkey`
	FOREIGN KEY (`pattern_id`) REFERENCES `documents_pattern` (`id`) ON DELETE CASCADE;

ALTER TABLE `documents_pattern` ADD COLUMN `pos` INTEGER  NOT NULL AFTER `id`;

-- 8.1
ALTER TABLE `documents_pattern`
	ADD COLUMN `file_comment` varchar(250) NULL,
	ADD COLUMN `document_comment` varchar(250) NULL;

ALTER TABLE `documents` ADD COLUMN `secret` varchar(10) DEFAULT NULL AFTER `pattern_id`;
ALTER TABLE `documents` ADD COLUMN `show_in_lk` int(1) DEFAULT 1 AFTER `secret`;
ALTER TABLE `filestorage_files_list_$mid` ADD COLUMN `uuid` VARCHAR(50) NOT NULL AFTER `comment`;
ALTER TABLE `filestorage_files_list_documents` ADD COLUMN `uuid` VARCHAR(50) NOT NULL AFTER `comment`;
ALTER TABLE `filestorage_files_list_documents_pattern` ADD COLUMN `uuid` VARCHAR(50) NOT NULL AFTER `comment`;
ALTER TABLE `documents` ADD INDEX cid (cid);

-- события
-- #BLOCK#
DELETE FROM script_event_type WHERE mid="p$mid";
INSERT INTO script_event_type (mid, event_id, event_mode, title) VALUES ('p$mid', 'ru.bitel.bgbilling.plugins.documents.server.bean.event.DocumentGeneratedEvent', 1, 'После генерации документа');
INSERT INTO script_event_type (mid, event_id, event_mode, title) VALUES ('p$mid', 'ru.bitel.bgbilling.plugins.documents.server.bean.event.DocumentGetPatternListEvent', 1, 'Запрос списка шаблонов документов для договора');
-- #ENDB#
