-- Crear tabla en caso de necesitar recuperar

CREATE TABLE vn.expence__ LIKE vn.expence;
INSERT INTO vn.expence__ SELECT * FROM vn.expence;

-- Eliminar las Fk en expence

ALTER TABLE `vn`.`invoiceOutExpence` 
DROP FOREIGN KEY `invoiceOutExpence_expenceFk`;
ALTER TABLE `vn`.`invoiceOutExpence` 
DROP INDEX `invoiceOutExpence_FK_2_idx` ;

ALTER TABLE `vn`.`item` 
DROP FOREIGN KEY `item_expenceFk`;
ALTER TABLE `vn`.`item` 
DROP INDEX `item_expenceFk` ;

ALTER TABLE `vn`.`invoiceInTax` 
DROP FOREIGN KEY `recibida_iva_gastos_id`;
ALTER TABLE `vn`.`invoiceInTax` 
DROP INDEX `recibida_iva_gastos_id` ;

ALTER TABLE `vn`.`invoiceInSage` 
DROP FOREIGN KEY `invoiceInSage_expenceFk`;
ALTER TABLE `vn`.`invoiceInSage` 
DROP INDEX `invoiceInSage_expenceFk` ;

ALTER TABLE `vn`.`invoiceIn` 
DROP FOREIGN KEY `invoiceIn_expenceFkDeductible`;
ALTER TABLE `vn`.`invoiceIn` 
DROP INDEX `invoiceIn_expenceFkDeductible` ;

ALTER TABLE `vn`.`ticketServiceType` 
DROP FOREIGN KEY `ticketServiceType_expenceFk`;
ALTER TABLE `vn`.`ticketServiceType` 
DROP INDEX `ticketServiceType_expenceFk` ;

-- Actualizar tabla expence

ALTER TABLE `vn`.`expence` 
DROP INDEX `iva_tipo_id`;

ALTER TABLE `vn`.`expence` 
DROP COLUMN `isForSale`,
DROP COLUMN `isConbase`;

CREATE TEMPORARY TABLE tmp.expence
SELECT * 
	FROM vn.expence 
	GROUP BY id;

TRUNCATE vn.expence;

ALTER TABLE `vn`.`expence` 
	CHANGE COLUMN `taxTypeFk` `taxTypeFk` TINYINT(4) NULL ,
	DROP PRIMARY KEY,
	ADD PRIMARY KEY (`id`);
	
ALTER TABLE `vn`.`expence` 
	DROP COLUMN `taxTypeFk`;


INSERT INTO vn.expence (id, name ,isWithheld)
	SELECT id, name ,isWithheld 
		FROM tmp.expence;


-- Volver a poner las Fk en expence

ALTER TABLE `vn`.`invoiceOutExpence` 
    ADD INDEX `invoiceOutExpence_expenceFk_idx` (`expenceFk` ASC) ;

ALTER TABLE `vn`.`invoiceOutExpence` 
    ADD CONSTRAINT `invoiceOutExpence_expenceFk`
  FOREIGN KEY (`expenceFk`)
  REFERENCES `vn`.`expence` (`id`)
  ON DELETE RESTRICT
  ON UPDATE CASCADE;

ALTER TABLE `vn`.`item` 
    ADD INDEX `item_expenceFk_idx` (`expenceFk` ASC) ;

ALTER TABLE `vn`.`item` 
    ADD CONSTRAINT `item_expenceFk`
  FOREIGN KEY (`expenceFk`)
  REFERENCES `vn`.`expence` (`id`)
  ON DELETE RESTRICT
  ON UPDATE CASCADE;


ALTER TABLE `vn`.`invoiceInTax` 
    ADD INDEX `invoiceInTax_idx` (`expenceFk` ASC) ;

ALTER TABLE `vn`.`invoiceInTax` 
    ADD CONSTRAINT `invoiceInTax_expenceFk`
  FOREIGN KEY (`expenceFk`)
  REFERENCES `vn`.`expence` (`id`)
  ON DELETE RESTRICT
  ON UPDATE CASCADE;


ALTER TABLE `vn`.`invoiceInSage` 
    ADD INDEX `invoiceInSage_idx` (`expenceFk` ASC) ;

ALTER TABLE `vn`.`invoiceInSage` 
    ADD CONSTRAINT `invoiceInSage_expenceFk`
  FOREIGN KEY (`expenceFk`)
  REFERENCES `vn`.`expence` (`id`)
  ON DELETE RESTRICT
  ON UPDATE CASCADE;
  
ALTER TABLE `vn`.`invoiceIn` 
    ADD INDEX `invoiceIn_expenceFkDeductible_idx` (`expenceFkDeductible` ASC) ;

ALTER TABLE `vn`.`invoiceIn` 
    ADD CONSTRAINT `invoiceIn_expenceFkDeductible`
  FOREIGN KEY (`expenceFkDeductible`)
  REFERENCES `vn`.`expence` (`id`)
  ON DELETE RESTRICT
  ON UPDATE CASCADE;

ALTER TABLE `vn`.`ticketServiceType` 
    ADD INDEX `ticketServiceType_expenceFk_idx` (`expenceFk` ASC) ;

ALTER TABLE `vn`.`ticketServiceType` 
    ADD CONSTRAINT `ticketServiceType_expenceFk`
  FOREIGN KEY (`expenceFk`)
  REFERENCES `vn`.`expence` (`id`)
  ON DELETE RESTRICT
  ON UPDATE CASCADE;