CREATE TABLE conta_utilidad_rpt (id BIGINT NOT NULL AUTO_INCREMENT , utilidad VARCHAR(200) NOT NULL , PRIMARY KEY (id)) ENGINE = InnoDB;
CREATE TABLE conta_grupo_resultado_rpt (id BIGINT NOT NULL AUTO_INCREMENT , grupo VARCHAR(200) NULL , PRIMARY KEY (id)) ENGINE = InnoDB;
ALTER TABLE conta_grupo_resultado_rpt ADD utilidad_id BIGINT NULL AFTER grupo;
CREATE TABLE conta_grupo_sub_resultado (
  id bigint NOT NULL,
  sub_grupo varchar(200) DEFAULT NULL,
  grupo_id bigint DEFAULT NULL,
  utilidad_id bigint DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

ALTER TABLE conta_grupo_sub_resultado
  ADD PRIMARY KEY (id);
ALTER TABLE conta_grupo_sub_resultado
  MODIFY id bigint NOT NULL AUTO_INCREMENT;

CREATE TABLE conta_grupo_cuenta_resultado (id BIGINT NOT NULL AUTO_INCREMENT , cuenta_id BIGINT NULL , codigo VARCHAR(200) NULL , grupo_id BIGINT NULL , sub_grupo_id BIGINT NULL , PRIMARY KEY (id)) ENGINE = InnoDB;
ALTER TABLE conta_grupo_cuenta_resultado ADD signo VARCHAR(10) NULL AFTER sub_grupo_id;
ALTER TABLE conta_grupo_cuenta_resultado ADD INDEX(sub_grupo_id);
ALTER TABLE conta_grupo_cuenta_resultado ADD INDEX(cuenta_id);
ALTER TABLE conta_grupo_cuenta_resultado CHANGE cuenta_id cuenta_id BIGINT UNSIGNED NULL DEFAULT NULL;
ALTER TABLE conta_grupo_cuenta_resultado ADD INDEX(grupo_id);
ALTER TABLE conta_grupo_resultado_rpt ADD signo VARCHAR(10) NULL AFTER utilidad_id;
ALTER TABLE conta_grupo_resultado_rpt ADD INDEX(utilidad_id);
ALTER TABLE conta_grupo_sub_resultado ADD INDEX(grupo_id);
ALTER TABLE conta_grupo_sub_resultado ADD INDEX(utilidad_id);

ALTER TABLE conta_grupo_cuenta_resultado ADD FOREIGN KEY (cuenta_id) REFERENCES cuentas(id) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE conta_grupo_cuenta_resultado ADD FOREIGN KEY (grupo_id) REFERENCES conta_grupo_resultado_rpt(id) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE conta_grupo_cuenta_resultado ADD FOREIGN KEY (sub_grupo_id) REFERENCES conta_grupo_sub_resultado(id) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE conta_grupo_resultado_rpt ADD FOREIGN KEY (utilidad_id) REFERENCES conta_utilidad_rpt(id) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE conta_grupo_sub_resultado ADD FOREIGN KEY (grupo_id) REFERENCES conta_grupo_resultado_rpt(id) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE conta_grupo_sub_resultado ADD FOREIGN KEY (utilidad_id) REFERENCES conta_utilidad_rpt(id) ON DELETE CASCADE ON UPDATE CASCADE;


CREATE TABLE conta_utilidad_operacion (id BIGINT NOT NULL AUTO_INCREMENT , utilidad_id BIGINT NULL , utilidad_operar_id BIGINT NULL , signo VARCHAR(10) NULL , PRIMARY KEY (id)) ENGINE = InnoDB;
ALTER TABLE conta_utilidad_operacion ADD INDEX(utilidad_id);
ALTER TABLE conta_utilidad_operacion ADD INDEX(utilidad_operar_id);


ALTER TABLE conta_utilidad_operacion ADD FOREIGN KEY (utilidad_id) REFERENCES conta_utilidad_rpt(id) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE conta_utilidad_operacion ADD FOREIGN KEY (utilidad_operar_id) REFERENCES conta_utilidad_rpt(id) ON DELETE CASCADE ON UPDATE CASCADE;