-- Vendas: tabelas principais por tenant

-- Pedidos de venda
CREATE TABLE IF NOT EXISTS sales_orders (
  id INT AUTO_INCREMENT PRIMARY KEY,
  numero VARCHAR(40) NOT NULL UNIQUE,
  cliente_id INT NOT NULL,
  valor_total DECIMAL(12,2) NOT NULL DEFAULT 0,
  status VARCHAR(20) NOT NULL DEFAULT 'aberto', -- aberto, confirmado, faturado, cancelado
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  INDEX idx_sales_orders_cliente (cliente_id),
  INDEX idx_sales_orders_status (status),
  INDEX idx_sales_orders_created (created_at)
);

-- Itens do pedido de venda
CREATE TABLE IF NOT EXISTS sales_order_items (
  id INT AUTO_INCREMENT PRIMARY KEY,
  order_id INT NOT NULL,
  product_id INT NOT NULL,
  quantidade DECIMAL(12,3) NOT NULL,
  preco DECIMAL(12,2) NOT NULL,
  total DECIMAL(12,2) NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  INDEX idx_so_items_order (order_id),
  INDEX idx_so_items_product (product_id)
);

-- Pagamentos de vendas (inclui PDV ou pedidos)
CREATE TABLE IF NOT EXISTS sales_payments (
  id INT AUTO_INCREMENT PRIMARY KEY,
  order_id INT NULL, -- pode ser NULL para pagamentos PDV soltos
  metodo VARCHAR(30) NOT NULL, -- dinheiro, cartao_credito, cartao_debito, pix, etc
  valor DECIMAL(12,2) NOT NULL,
  troco DECIMAL(12,2) NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  INDEX idx_sales_payments_order (order_id),
  INDEX idx_sales_payments_created (created_at)
);

-- Índices auxiliares
CREATE INDEX IF NOT EXISTS idx_so_numero ON sales_orders (numero);