

CREATE TABLE IF NOT EXISTS products (
  id INT AUTO_INCREMENT PRIMARY KEY,
  category VARCHAR(50) NOT NULL,       -- 'tube_unite' | 'tube_lot' | 'plat'
  name_fr VARCHAR(190) NOT NULL,
  name_en VARCHAR(190) NOT NULL,
  unit_price DECIMAL(10,4) NOT NULL,   -- prix par unité (pièce ou kg selon produit)
  min_qty INT NOT NULL DEFAULT 1,
  unit_weight_g DECIMAL(10,2) DEFAULT NULL, -- poids unitaire en grammes (pour les produits à la pièce)
  active TINYINT(1) NOT NULL DEFAULT 1,
  sort_order INT NOT NULL DEFAULT 0
);

CREATE TABLE IF NOT EXISTS shipping_rates (
  id INT AUTO_INCREMENT PRIMARY KEY,
  min_qty_or_weight DECIMAL(10,2) NOT NULL,
  max_qty_or_weight DECIMAL(10,2) NOT NULL,
  price DECIMAL(10,2) NOT NULL,
  label VARCHAR(190) DEFAULT NULL
);

CREATE TABLE IF NOT EXISTS orders (
  id INT AUTO_INCREMENT PRIMARY KEY,
  reference VARCHAR(40) NOT NULL UNIQUE,
  org VARCHAR(190) DEFAULT NULL,
  name VARCHAR(190) NOT NULL,
  firstname VARCHAR(190) NOT NULL,
  email VARCHAR(190) NOT NULL,
  phone VARCHAR(40) DEFAULT NULL,
  address TEXT DEFAULT NULL,
  items_json TEXT NOT NULL,            -- snapshot du panier au format JSON
  total_amount DECIMAL(10,2) NOT NULL,
  shipping_amount DECIMAL(10,2) NOT NULL DEFAULT 0,
  payment_method VARCHAR(20) NOT NULL, -- 'carte' | 'virement'
  payment_status VARCHAR(20) NOT NULL DEFAULT 'en_attente', -- en_attente | paye | echoue | annule
  order_status VARCHAR(30) NOT NULL DEFAULT 'nouvelle',     -- nouvelle | preparation | expediee | livree
  lang VARCHAR(5) NOT NULL DEFAULT 'fr',
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
