CREATE TABLE IF NOT EXISTS `cashcheck_payment_queue_$mid` (
  `payment_id` int(11) NOT NULL,
  `dt` timestamp NOT NULL default CURRENT_TIMESTAMP,
  PRIMARY KEY (`payment_id`)
);

ALTER TABLE `cashcheck_payment_queue_$mid` ADD COLUMN `pos_id` INTEGER  NOT NULL DEFAULT 0;

-- create-copy-table + drop-queue-not-log
-- убрать к релизу 5.4 миграцию имён таблиц, исправить чтобы выше создавались сразу без $mid
CREATE TABLE IF NOT EXISTS `cashcheck_payment_log` SELECT * FROM `cashcheck_payment_queue_$mid`;
DELETE FROM `cashcheck_payment_log` WHERE pos_id=0;
DELETE FROM `cashcheck_payment_log` WHERE pos_id=-1;

-- http://bugs.mysql.com/bug.php?id=68670
ALTER TABLE `cashcheck_payment_log` CHANGE COLUMN `dt` `dt` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

-- потерялся индекс же
ALTER TABLE `cashcheck_payment_log` ADD PRIMARY KEY (`payment_id`);

CREATE TABLE IF NOT EXISTS `cashcheck_charge_log` (
  `charge_id` int(11) NOT NULL COMMENT 'ид расхода из contract_charge',
  `dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `pos_id` int(11) NOT NULL DEFAULT '0' COMMENT 'номер ККМ, на котором был напечатан чек возврата',
  PRIMARY KEY (`charge_id`) USING BTREE
) COMMENT='очередь чеков на расходы';


-- добавление полей для сохранения в лог данных чека
ALTER TABLE `cashcheck_payment_log` ADD check_data MEDIUMTEXT NULL COMMENT 'содержимое чека';
ALTER TABLE `cashcheck_payment_log` ADD check_type varchar(32) DEFAULT NULL NULL COMMENT 'реальный тип чека: продажа, возврат, коррекция итд';

ALTER TABLE `cashcheck_charge_log` ADD check_data MEDIUMTEXT NULL COMMENT 'содержимое чека';
ALTER TABLE `cashcheck_charge_log` ADD check_type varchar(32) DEFAULT NULL NULL COMMENT 'реальный тип чека: продажа, возврат, коррекция итд';

-- сохранение в логе инфы о используемом маппинге(типе) при печати чека
ALTER TABLE `cashcheck_payment_log` ADD pos_mapping varchar(8) DEFAULT NULL NULL COMMENT 'использованный при печати тип маппинга, для истории';
ALTER TABLE `cashcheck_charge_log` ADD pos_mapping varchar(8) DEFAULT NULL NULL COMMENT 'использованный при печати тип маппинга, для истории';

-- добавление полей для сохранения инфы о нераспечатанных по ошибке платежей
ALTER TABLE `cashcheck_payment_log` ADD last_error varchar(255) DEFAULT NULL NULL COMMENT 'последняя ошибка, если чек не напечатался';
ALTER TABLE `cashcheck_charge_log` ADD last_error varchar(255) DEFAULT NULL NULL COMMENT 'последняя ошибка, если чек не напечатался';

-- для асинхронных онлайн-протоколов: ид для запроса чеков
ALTER TABLE `cashcheck_payment_log` ADD pending_id varchar(64) DEFAULT NULL NULL COMMENT 'ид чека во внешней системе для асинхронных протоколов';
ALTER TABLE `cashcheck_charge_log` ADD pending_id varchar(64) DEFAULT NULL NULL COMMENT 'ид чека во внешней системе для асинхронных протоколов';

CREATE INDEX cashcheck_payment_log_pending_id_IDX USING BTREE ON `cashcheck_payment_log` (pending_id);
CREATE INDEX cashcheck_charge_log_pending_id_IDX USING BTREE ON `cashcheck_charge_log` (pending_id);

-- в основном для асинхронных онлайн-протоколов: данные об успешной фискализации документа
ALTER TABLE `cashcheck_payment_log` ADD fiscal_data varchar(512) DEFAULT NULL NULL COMMENT 'данные об успешной фискализации документа';
ALTER TABLE `cashcheck_charge_log` ADD fiscal_data varchar(512) DEFAULT NULL NULL COMMENT 'данные об успешной фискализации документа';

ALTER TABLE `cashcheck_payment_log` MODIFY COLUMN `last_error` varchar(512) DEFAULT NULL NULL COMMENT 'последняя ошибка, если чек не напечатался';
ALTER TABLE `cashcheck_charge_log` MODIFY COLUMN `last_error` varchar(512) DEFAULT NULL NULL COMMENT 'последняя ошибка, если чек не напечатался';
ALTER TABLE `cashcheck_payment_log` MODIFY COLUMN `fiscal_data` varchar(1024) DEFAULT NULL NULL COMMENT 'данные об успешной фискализации документа';
ALTER TABLE `cashcheck_charge_log` MODIFY COLUMN `fiscal_data` varchar(1024) DEFAULT NULL NULL COMMENT 'данные об успешной фискализации документа';


-- TODO не доделано, общий лог всех чеков
CREATE TABLE IF NOT EXISTS `cashcheck_check_log` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `payment_id` int(11) DEFAULT NULL COMMENT 'ид прихода из contract_payment',
  `charge_id` int(11) DEFAULT NULL COMMENT 'ид расхода из contract_charge',
  `dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `pos_id` int(11) NOT NULL DEFAULT '-1' COMMENT 'номер ККМ, на котором был напечатан чек',
  `check_data` mediumtext COMMENT 'содержимое чека',
  `success` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'успешно напечатано?',
  `type` tinyint(4) NOT NULL DEFAULT '-1' COMMENT 'тип чека: 0 - продажа, 1 - возврат',
  PRIMARY KEY (`id`)
) COMMENT='лог/очередь всех чеков';


-- смена индекса с payment_id на новый столбец id
ALTER TABLE `cashcheck_payment_log` DROP PRIMARY KEY, ADD id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT;
CREATE INDEX cashcheck_payment_log_payment_id_IDX USING BTREE ON `cashcheck_payment_log` (payment_id);

ALTER TABLE `cashcheck_charge_log` DROP PRIMARY KEY, ADD id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT;
CREATE INDEX cashcheck_charge_log_charge_id_IDX USING BTREE ON `cashcheck_charge_log` (charge_id);

-- добавление cid для того чтобы сделать поддержку логирования чеков не привязанных к платежу/расходу
ALTER TABLE `cashcheck_payment_log` ADD contract_id INT NULL COMMENT 'cid, избыточность для случая когда чек не проивязан к платежу';
ALTER TABLE `cashcheck_charge_log` ADD contract_id INT NULL COMMENT 'cid, избыточность для случая когда чек не проивязан к расходу';

-- костыль: добавление primary key id для случая если прошлое добавление в инструкции выше не выполнилось по причине отсутствия примари кея на payment_id
ALTER TABLE `cashcheck_payment_log` ADD id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT;
ALTER TABLE `cashcheck_charge_log` ADD id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT;

-- + ON UPDATE
ALTER TABLE `cashcheck_payment_log` MODIFY COLUMN dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
ALTER TABLE `cashcheck_charge_log` MODIFY COLUMN dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;



-- #BLOCK#
DELETE FROM script_event_type WHERE mid="p$mid";

-- #ENDB#
