-- mg_empenos_v4.sql
CREATE DATABASE IF NOT EXISTS `mgempreendimento_paraguai` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE `mgempreendimento_paraguai`;

-- clientes
CREATE TABLE IF NOT EXISTS clientes (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nombre_completo VARCHAR(255) NOT NULL,
  documento VARCHAR(100) NOT NULL,
  telefono VARCHAR(80),
  email VARCHAR(150),
  direccion TEXT,
  fecha_creacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- productos
CREATE TABLE IF NOT EXISTS productos (
  id INT AUTO_INCREMENT PRIMARY KEY,
  cliente_id INT NULL,
  nombre VARCHAR(255) NOT NULL,
  categoria VARCHAR(120),
  cantidad INT DEFAULT 1,
  valor_avaluo DECIMAL(14,2) DEFAULT 0,
  ubicacion VARCHAR(120),
  status VARCHAR(60) DEFAULT 'En Depósito',
  fecha_vencimiento DATE NULL,
  descripcion TEXT,
  qr_code VARCHAR(255) NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (cliente_id) REFERENCES clientes(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- empenos
CREATE TABLE IF NOT EXISTS empenos (
  id INT AUTO_INCREMENT PRIMARY KEY,
  recibo VARCHAR(64) NOT NULL UNIQUE,
  cliente_id INT NOT NULL,
  monto DECIMAL(14,2) NOT NULL,
  tasa_ate_15 DECIMAL(6,3) DEFAULT 12.5,
  tasa_pos_15 DECIMAL(6,3) DEFAULT 25.0,
  tasa_usada DECIMAL(6,3) DEFAULT 0,
  periodo_dias INT NOT NULL,
  fecha_inicio DATE NOT NULL,
  fecha_vencimiento DATE NOT NULL,
  interes_total DECIMAL(14,2) DEFAULT 0,
  mora_diaria DECIMAL(6,3) DEFAULT 0,
  mora_total DECIMAL(14,2) DEFAULT 0,
  total_pagar DECIMAL(14,2) DEFAULT 0,
  status ENUM('Activo','Vencido','Resgatado') DEFAULT 'Activo',
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (cliente_id) REFERENCES clientes(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- relation empeno_productos
CREATE TABLE IF NOT EXISTS empeno_productos (
  id INT AUTO_INCREMENT PRIMARY KEY,
  empeno_id INT NOT NULL,
  producto_id INT NOT NULL,
  FOREIGN KEY (empeno_id) REFERENCES empenos(id) ON DELETE CASCADE,
  FOREIGN KEY (producto_id) REFERENCES productos(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- pagos
CREATE TABLE IF NOT EXISTS pagos (
  id INT AUTO_INCREMENT PRIMARY KEY,
  empeno_id INT NULL,
  cliente_id INT NULL,
  tipo ENUM('Entrada','Salida') DEFAULT 'Entrada',
  descripcion VARCHAR(255),
  valor DECIMAL(14,2) NOT NULL,
  fecha_movimiento DATE NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (empeno_id) REFERENCES empenos(id) ON DELETE SET NULL,
  FOREIGN KEY (cliente_id) REFERENCES clientes(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- caja
CREATE TABLE IF NOT EXISTS caja (
  id INT AUTO_INCREMENT PRIMARY KEY,
  fecha DATE NOT NULL,
  total_entradas DECIMAL(14,2) DEFAULT 0,
  total_salidas DECIMAL(14,2) DEFAULT 0,
  saldo DECIMAL(14,2) DEFAULT 0,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE INDEX idx_empenos_status ON empenos(status);
