CREATE TABLE IF NOT EXISTS `bonus_payment_type` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(256) NOT NULL,
  `used` INT NOT NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE IF NOT EXISTS `bonus_contract_charge` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `cid` INT NOT NULL,
  `uid` INT NOT NULL,
  `sum` DECIMAL(10,2) NOT NULL,
  `date` DATETIME NOT NULL,
  `contractChargeId` INT NOT NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE IF NOT EXISTS `bonus_contract_payment` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `cid` INT NOT NULL,
  `uid` INT NOT NULL,
  `typeId` INT NOT NULL,
  `date` DATETIME NOT NULL,
  `sum` DECIMAL(10,2) NOT NULL,
  `dateFrom` DATE NOT NULL,
  `dateTo` DATE NOT NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE IF NOT EXISTS `bonus_details_charge` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `chargeId` INT NOT NULL,
  `paymentId` INT NOT NULL,
  `sum` DECIMAL(10,2) NOT NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE IF NOT EXISTS `bonus_contract_include` (
  `cid` INT NOT NULL,
  `include` INT NOT NULL,
  PRIMARY KEY (`cid`)
);

CREATE  TABLE `bonus_contract_program` (
  `cid` INT NOT NULL ,
  `programId` INT NOT NULL ,
  `dateFrom` DATE NOT NULL ,
  `dateTo` DATE NULL ,
  PRIMARY KEY (`cid`, `programId`) 
);

CREATE  TABLE `bonus_programs` (
  `id` INT NOT NULL AUTO_INCREMENT ,
  `title` VARCHAR(45) NULL ,
  `typeId` VARCHAR(45) NOT NULL ,
  `dateFrom` DATE NOT NULL ,
  `dateTo` DATE NULL ,
  `paymentTypeId` INT NOT NULL ,
  `timeLag` INT NOT NULL ,
  `activeTime` INT NOT NULL ,
  `params` TEXT NOT NULL ,
  PRIMARY KEY (`id`)    
 );

CREATE  TABLE `bonus_program_log` (
  `programId` INT NOT NULL ,
  `dateFrom` DATE NOT NULL ,
  `dateTo` DATE NOT NULL ,
  PRIMARY KEY (`programId`) 
 );
 
 ALTER TABLE `bonus_programs` CHANGE COLUMN `timeLag` `timeLag` VARCHAR(45) NOT NULL, CHANGE COLUMN `activeTime` `activeTime` VARCHAR(45) NOT NULL  ;
 
 ALTER TABLE `bonus_contract_charge` DROP COLUMN `typeId` ;
 
 DROP TABLE IF EXISTS `bonus_charge_type` ;

CREATE TABLE IF NOT EXISTS `bonus_program_data_contract` (
  `programId` INT NOT NULL,
  `contractId` INT NOT NULL,
  `data` VARCHAR(1024),
  PRIMARY KEY (`programId`, `contractId`)
 );
 
 ALTER TABLE `bonus_contract_charge` ADD INDEX `cid`(`cid`), ADD INDEX `contractChargeId`(`contractChargeId`);
 ALTER TABLE `bonus_contract_payment` ADD INDEX `cid`(`cid`), ADD INDEX `period`(`dateFrom`, `dateTo`);
 ALTER TABLE `bonus_contract_program` ADD INDEX `cid`(`cid`), ADD INDEX `period`(`dateFrom`, `dateTo`);
 ALTER TABLE `bonus_programs` ADD INDEX `typeId`(`typeId`), ADD INDEX `period`(`dateFrom`, `dateTo`);
 
 ALTER TABLE `bonus_contract_payment` ADD `comment` VARCHAR(256) NULL AFTER `dateTo`;
