
CREATE TABLE IF NOT EXISTS empresas (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nombre_comercial VARCHAR(120) NOT NULL,
  razon_social VARCHAR(160) NOT NULL,
  nit VARCHAR(20) NOT NULL,
  nrc VARCHAR(20) NULL,
  giro VARCHAR(120) NULL,
  direccion VARCHAR(200) NULL,
  telefono VARCHAR(30) NULL,
  email VARCHAR(120) NULL,
  iva_porcentaje DECIMAL(5,2) NOT NULL DEFAULT 13.00,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE IF NOT EXISTS folios (
  id INT AUTO_INCREMENT PRIMARY KEY,
  tipo_documento ENUM('FACTURA','TICKET') NOT NULL,
  serie VARCHAR(20) NOT NULL,
  numero_actual INT NOT NULL DEFAULT 0,
  numero_fin INT NULL,
  resolucion_mh VARCHAR(200) NULL,
  fecha_resolucion DATE NULL,
  vigente TINYINT(1) NOT NULL DEFAULT 1,
  UNIQUE KEY uk_folio (tipo_documento, serie)
);

CREATE TABLE IF NOT EXISTS ventas (
  id INT AUTO_INCREMENT PRIMARY KEY,
  tipo_documento ENUM('FACTURA','TICKET') NOT NULL,
  serie VARCHAR(20) NOT NULL,
  numero INT NOT NULL,
  fecha DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  cliente_id INT NULL,
  subtotal DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  exento DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  no_sujeto DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  iva DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  descuento DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  total DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  forma_pago VARCHAR(20) NOT NULL DEFAULT 'EFECTIVO',
  usuario_id INT NULL,
  estado ENUM('EMITIDA','ANULADA') NOT NULL DEFAULT 'EMITIDA',
  observaciones VARCHAR(255) NULL
);

CREATE TABLE IF NOT EXISTS venta_items (
  id INT AUTO_INCREMENT PRIMARY KEY,
  venta_id INT NOT NULL,
  tipo_item ENUM('PRODUCTO','SERVICIO') NOT NULL,
  item_id INT NOT NULL,
  descripcion VARCHAR(200) NOT NULL,
  cantidad DECIMAL(12,3) NOT NULL,
  precio_unitario DECIMAL(12,4) NOT NULL,
  afecta_iva TINYINT(1) NOT NULL DEFAULT 1,
  descuento DECIMAL(12,2) NOT NULL DEFAULT 0.00,
  total_linea DECIMAL(12,2) NOT NULL,
  FOREIGN KEY (venta_id) REFERENCES ventas(id) ON DELETE CASCADE
);

CREATE TABLE IF NOT EXISTS inventario_movimientos (
  id INT AUTO_INCREMENT PRIMARY KEY,
  producto_id INT NOT NULL,
  tipo ENUM('ENTRADA','SALIDA','AJUSTE') NOT NULL,
  cantidad DECIMAL(12,3) NOT NULL,
  referencia_tipo ENUM('VENTA','COMPRA','AJUSTE') NOT NULL,
  referencia_id INT NULL,
  fecha DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
);

-- Sugerencias sobre tablas existentes del usuario:
ALTER TABLE clientes ADD COLUMN IF NOT EXISTS nit VARCHAR(20) NULL;
ALTER TABLE clientes ADD COLUMN IF NOT EXISTS nrc VARCHAR(20) NULL;

CREATE INDEX IF NOT EXISTS idx_ventas_fecha ON ventas(fecha);
CREATE INDEX IF NOT EXISTS idx_items_venta ON venta_items(venta_id);
