CREATE TABLE IF NOT EXISTS cuentas_bancarias (
 id INT AUTO_INCREMENT PRIMARY KEY, nombre VARCHAR(100) NOT NULL, tipo_cuenta VARCHAR(50) NULL,
 nro_cuenta VARCHAR(50) NULL, saldo_actual DECIMAL(15,2) NOT NULL DEFAULT 0,
 categoria VARCHAR(100) NOT NULL, estado VARCHAR(10) NOT NULL DEFAULT 'Activa', origen_id INT NULL,
 UNIQUE KEY uq_cuenta_origen (origen_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS movimientos_bancarios (
 id INT AUTO_INCREMENT PRIMARY KEY, cuenta_id INT NOT NULL, descripcion VARCHAR(255) NOT NULL,
 monto DECIMAL(15,2) NOT NULL, tipo ENUM('Ingreso','Egreso','Ajuste') NOT NULL, fecha DATETIME NOT NULL,
 usuario_id INT NULL, INDEX idx_mov_cuenta_fecha(cuenta_id,fecha),
 CONSTRAINT fk_mov_cuenta FOREIGN KEY(cuenta_id) REFERENCES cuentas_bancarias(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO cuentas_bancarias(nombre,tipo_cuenta,nro_cuenta,saldo_actual,categoria,estado,origen_id)
SELECT banco,tipo_cuenta,nro_cuenta,saldo_actual,'Banco',estado,id
FROM sistema_bancario.cuentas
WHERE categoria='Banco'
ON DUPLICATE KEY UPDATE nombre=VALUES(nombre),tipo_cuenta=VALUES(tipo_cuenta),nro_cuenta=VALUES(nro_cuenta),saldo_actual=VALUES(saldo_actual),categoria=VALUES(categoria),estado=VALUES(estado);
