USE websiscre;
CREATE TABLE IF NOT EXISTS tasa_seguro(id INT AUTO_INCREMENT PRIMARY KEY,monto_desde DECIMAL(18,2),monto_hasta DECIMAL(18,2),tasa DECIMAL(10,4),activo TINYINT DEFAULT 1);
CREATE TABLE IF NOT EXISTS tasa_gastos(id INT AUTO_INCREMENT PRIMARY KEY,dias_desde INT,dias_hasta INT,monto_fijo DECIMAL(18,2),activo TINYINT DEFAULT 1);
CREATE TABLE IF NOT EXISTS gastos_administrativos(id INT AUTO_INCREMENT PRIMARY KEY,monto_desde DECIMAL(18,2),monto_hasta DECIMAL(18,2),tasa DECIMAL(10,4),activo TINYINT DEFAULT 1);
CREATE TABLE IF NOT EXISTS gastos_cobranza(id INT AUTO_INCREMENT PRIMARY KEY,dias_desde INT,dias_hasta INT,tasa DECIMAL(10,4),activo TINYINT DEFAULT 1);
CREATE TABLE IF NOT EXISTS limites_operativos(id INT AUTO_INCREMENT PRIMARY KEY,fecha_desde DATE,fecha_hasta DATE,jornal_minimo DECIMAL(18,2),salario_minimo DECIMAL(18,2),max_jornales DECIMAL(10,2) DEFAULT 5,porcentaje_neto DECIMAL(10,4) DEFAULT 25,max_salarios_credito DECIMAL(10,2) DEFAULT 25,activo TINYINT DEFAULT 1);
ALTER TABLE operacion_detalles ADD COLUMN IF NOT EXISTS interes DECIMAL(18,2) DEFAULT 0 AFTER tasa_aplicada;
ALTER TABLE operacion_detalles ADD COLUMN IF NOT EXISTS seguro DECIMAL(18,2) DEFAULT 0 AFTER interes;
ALTER TABLE operacion_detalles ADD COLUMN IF NOT EXISTS comision DECIMAL(18,2) DEFAULT 0 AFTER seguro;
ALTER TABLE operacion_detalles ADD COLUMN IF NOT EXISTS gasto DECIMAL(18,2) DEFAULT 0 AFTER comision;
ALTER TABLE operacion_detalles ADD COLUMN IF NOT EXISTS gasto_administrativo DECIMAL(18,2) DEFAULT 0 AFTER gasto;
ALTER TABLE operacion_detalles ADD COLUMN IF NOT EXISTS gasto_operativo DECIMAL(18,2) DEFAULT 0 AFTER gasto_administrativo;
ALTER TABLE operacion_detalles ADD COLUMN IF NOT EXISTS cobrado_gastos_cobranza DECIMAL(18,2) DEFAULT 0;
ALTER TABLE operacion_detalles ADD COLUMN IF NOT EXISTS cobrado_punitorio DECIMAL(18,2) DEFAULT 0;
ALTER TABLE operacion_detalles ADD COLUMN IF NOT EXISTS cobrado_moratorio DECIMAL(18,2) DEFAULT 0;
ALTER TABLE operacion_detalles ADD COLUMN IF NOT EXISTS cobrado_gastos_administrativos DECIMAL(18,2) DEFAULT 0;
ALTER TABLE operacion_detalles ADD COLUMN IF NOT EXISTS cobrado_gastos_operativos DECIMAL(18,2) DEFAULT 0;
ALTER TABLE operacion_detalles ADD COLUMN IF NOT EXISTS cobrado_comision DECIMAL(18,2) DEFAULT 0;
ALTER TABLE operacion_detalles ADD COLUMN IF NOT EXISTS cobrado_seguro DECIMAL(18,2) DEFAULT 0;
ALTER TABLE operacion_detalles ADD COLUMN IF NOT EXISTS cobrado_interes DECIMAL(18,2) DEFAULT 0;
ALTER TABLE operacion_detalles ADD COLUMN IF NOT EXISTS cobrado_capital DECIMAL(18,2) DEFAULT 0;
ALTER TABLE operacion_detalles ADD COLUMN IF NOT EXISTS ultima_fecha_cobro DATETIME NULL;
ALTER TABLE operaciones ADD COLUMN IF NOT EXISTS total_seguro DECIMAL(18,2) DEFAULT 0 AFTER total_descuento;
ALTER TABLE operaciones ADD COLUMN IF NOT EXISTS total_comision DECIMAL(18,2) DEFAULT 0 AFTER total_seguro;
ALTER TABLE operaciones ADD COLUMN IF NOT EXISTS total_gastos DECIMAL(18,2) DEFAULT 0 AFTER total_comision;
ALTER TABLE operaciones ADD COLUMN IF NOT EXISTS total_gastos_administrativos DECIMAL(18,2) DEFAULT 0 AFTER total_gastos;
ALTER TABLE operaciones ADD COLUMN IF NOT EXISTS gastos_operativos DECIMAL(18,2) DEFAULT 0 AFTER total_gastos_administrativos;
CREATE TABLE IF NOT EXISTS cobros(id INT AUTO_INCREMENT PRIMARY KEY,fecha DATETIME DEFAULT CURRENT_TIMESTAMP,cliente_id INT,operacion_detalle_id INT,monto DECIMAL(18,2),recibo VARCHAR(50),observacion VARCHAR(255),usuario_id INT,FOREIGN KEY(cliente_id) REFERENCES clientes(id),FOREIGN KEY(operacion_detalle_id) REFERENCES operacion_detalles(id));
CREATE TABLE IF NOT EXISTS cobro_aplicaciones(id INT AUTO_INCREMENT PRIMARY KEY,cobro_id INT,concepto VARCHAR(50),monto DECIMAL(18,2),orden_aplicacion INT,FOREIGN KEY(cobro_id) REFERENCES cobros(id) ON DELETE CASCADE);
CREATE TABLE IF NOT EXISTS detalle_saldos(operacion_detalle_id INT PRIMARY KEY,gastos_cobranza DECIMAL(18,2) DEFAULT 0,interes_moratorio DECIMAL(18,2) DEFAULT 0,interes_punitorio DECIMAL(18,2) DEFAULT 0,seguro DECIMAL(18,2) DEFAULT 0,gastos_administrativos DECIMAL(18,2) DEFAULT 0,gastos_operativos DECIMAL(18,2) DEFAULT 0,interes DECIMAL(18,2) DEFAULT 0,capital DECIMAL(18,2) DEFAULT 0,monto_abonado DECIMAL(18,2) DEFAULT 0,FOREIGN KEY(operacion_detalle_id) REFERENCES operacion_detalles(id) ON DELETE CASCADE);
INSERT INTO limites_operativos(fecha_desde,fecha_hasta,jornal_minimo,salario_minimo,max_jornales,porcentaje_neto,max_salarios_credito)
SELECT CURDATE(),'2099-12-31',111502,2899048,5,25,25 WHERE NOT EXISTS(SELECT 1 FROM limites_operativos WHERE activo=1);
