-- Extensão de Ordens de Compra: campos de cabeçalho, itens, referências e histórico

-- Cabeçalho da ordem de compra
ALTER TABLE purchase_orders
    ADD COLUMN empresa_id INT NULL,
    ADD COLUMN warehouse_id INT NULL,
    ADD COLUMN supplier_name VARCHAR(200) NULL,
    ADD COLUMN supplier_contact VARCHAR(200) NULL,
    ADD COLUMN operacao VARCHAR(20) NULL,
    ADD COLUMN situacao VARCHAR(20) NOT NULL DEFAULT 'aberto', -- aberto, aprovado, cancelado
    ADD COLUMN data_aprovacao DATETIME NULL,
    ADD COLUMN responsavel_aprovacao VARCHAR(200) NULL,
    ADD COLUMN condicao_pagamento VARCHAR(100) NULL,
    ADD COLUMN condicao_entrega VARCHAR(100) NULL,
    ADD COLUMN observacoes TEXT NULL,
    ADD COLUMN pedido_compra_id INT NULL,
    ADD COLUMN pedido_venda_id INT NULL,
    ADD COLUMN solicitacao_compra_id INT NULL,
    ADD COLUMN cotacao_id INT NULL;

CREATE INDEX IF NOT EXISTS idx_purchase_orders_situacao ON purchase_orders(situacao);
CREATE INDEX IF NOT EXISTS idx_purchase_orders_operacao ON purchase_orders(operacao);
CREATE INDEX IF NOT EXISTS idx_purchase_orders_empresa ON purchase_orders(empresa_id);
CREATE INDEX IF NOT EXISTS idx_purchase_orders_warehouse ON purchase_orders(warehouse_id);

-- Itens da ordem de compra
ALTER TABLE purchase_order_items
    ADD COLUMN unidade_medida VARCHAR(20) NULL,
    ADD COLUMN freight DECIMAL(14,2) NOT NULL DEFAULT 0,
    ADD COLUMN extra_expenses DECIMAL(14,2) NOT NULL DEFAULT 0,
    ADD COLUMN delivery_date DATE NULL,
    ADD COLUMN product_description VARCHAR(255) NULL;

-- Histórico de alterações da ordem de compra
CREATE TABLE IF NOT EXISTS purchase_order_history (
  id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  order_id INT NOT NULL,
  data_alteracao DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  usuario VARCHAR(200) NOT NULL,
  acao VARCHAR(40) NOT NULL, -- criacao, aprovacao, modificacao, cancelamento, envio, rejeicao
  observacao TEXT NULL,
  INDEX idx_poh_order (order_id),
  INDEX idx_poh_acao (acao)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;