-- Schema za Radni Nalog modul
-- Kreiran: 2025-11-28
-- Ažurirano: 2025-12-02 - Stavke su sada artikli, automobil/uređaj je info o radnom nalogu
-- 
-- UPUTE: Izvrši ovu skriptu u phpMyAdmin za kreiranje svih potrebnih tablica
-- Za postojeću bazu koristi fix_radni_nalog_stavke.sql za migraciju

-- Pomoćna tablica za tipove goriva
CREATE TABLE IF NOT EXISTS gorivo (
    id INT AUTO_INCREMENT PRIMARY KEY,
    naziv VARCHAR(20) NOT NULL,
    created DATETIME DEFAULT CURRENT_TIMESTAMP,
    modified DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Inicijalni podaci za gorivo
INSERT IGNORE INTO gorivo (id, naziv) VALUES
    (1, 'benzin'),
    (2, 'diesel'),
    (3, 'elektro'),
    (4, 'hybrid'),
    (5, 'plin');

-- Pomoćna tablica za statuse radnog naloga
CREATE TABLE IF NOT EXISTS radni_nalog_status (
    id INT AUTO_INCREMENT PRIMARY KEY,
    naziv VARCHAR(30) NOT NULL,
    created DATETIME DEFAULT CURRENT_TIMESTAMP,
    modified DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Inicijalni podaci za status (unesite rucno preko phpMyAdmin za hrvatske znakove)
INSERT INTO radni_nalog_status (id, naziv) VALUES
     (1, 'U radu'),
     (2, 'Ceka se dio'),
     (3, 'Ceka se Kupac'),
     (4, 'Gotov'),
    (5, 'Isporucen');
-- Zatim UPDATE preko phpMyAdmin za hrvatske znakove

-- Tablica Automobil
CREATE TABLE IF NOT EXISTS automobil (
    id INT AUTO_INCREMENT PRIMARY KEY,
    customer_id INT NOT NULL,
    vin VARCHAR(30),
    registarska_oznaka VARCHAR(10),
    marka VARCHAR(20),
    tip VARCHAR(20),
    boja VARCHAR(10),
    km INT DEFAULT 0,
    datum_prve_reg DATE DEFAULT '2025-01-01',
    god_proizvodnje INT DEFAULT 2025,
    zapremina_motora INT DEFAULT 0 COMMENT 'ccm',
    snaga_kw INT DEFAULT 0,
    gorivo_id INT,
    datum_zadnjeg_servisa DATE,
    datum_sljedeceg_servisa DATE,
    created DATETIME DEFAULT CURRENT_TIMESTAMP,
    created_by INT,
    modified DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    modified_by INT,
    INDEX idx_customer (customer_id),
    INDEX idx_vin (vin),
    INDEX idx_registarska (registarska_oznaka)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Tablica Uređaj
CREATE TABLE IF NOT EXISTS uredjaj (
    id INT AUTO_INCREMENT PRIMARY KEY,
    customer_id INT NOT NULL,
    naziv_uredjaja VARCHAR(40),
    serijski_broj VARCHAR(30),
    tvornicki_broj VARCHAR(30),
    tip_stroja VARCHAR(30),
    vrsta_stroja VARCHAR(30),
    namjena_stroja VARCHAR(30),
    napajanje VARCHAR(20),
    zaduzena_osoba VARCHAR(20),
    mobitel VARCHAR(20),
    proizvodjac VARCHAR(30),
    datum_zadnje_provjere DATE,
    datum_sljedece_provjere DATE,
    created DATETIME DEFAULT CURRENT_TIMESTAMP,
    created_by INT,
    modified DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    modified_by INT,
    INDEX idx_customer (customer_id),
    INDEX idx_serijski (serijski_broj)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Tablica Radni Nalog
-- automobil_id i uredjaj_id su dodatne informacije o predmetu radnog naloga
-- Ako je automobil_id popunjen = radni nalog za automobil
-- Ako je uredjaj_id popunjen = radni nalog za uređaj
-- Oba mogu biti NULL ili samo jedno popunjeno
CREATE TABLE IF NOT EXISTS radni_nalog (
    id INT AUTO_INCREMENT PRIMARY KEY,
    number VARCHAR(50) UNIQUE,
    document_date DATE,
    datum_rn DATE,
    datum_obecan DATE,
    datum_gotovo DATE,
    status_id INT,
    customer_id INT NOT NULL,
    automobil_id INT DEFAULT NULL COMMENT 'Predmet RN - automobil',
    uredjaj_id INT DEFAULT NULL COMMENT 'Predmet RN - uređaj',
    km INT DEFAULT 0,
    broj_rh INT DEFAULT 0,
    stanje VARCHAR(200),
    napomena_rn TEXT,
    napomena_ponuda TEXT,
    offer_id INT COMMENT 'veza sa ponudom ako postoji',
    price DECIMAL(10,2) DEFAULT 0.00,
    note TEXT,
    created DATETIME DEFAULT CURRENT_TIMESTAMP,
    created_by VARCHAR(50),
    modified DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    modified_by INT,
    canceled DATETIME,
    canceled_by INT,
    INDEX idx_customer (customer_id),
    INDEX idx_automobil (automobil_id),
    INDEX idx_uredjaj (uredjaj_id),
    INDEX idx_status (status_id),
    INDEX idx_datum_rn (datum_rn),
    INDEX idx_number (number)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Tablica Radni Nalog Stavke - ARTIKLI/USLUGE
-- price_sell se dohvaća iz Article tablice, ovdje samo amount, discount i napomena
CREATE TABLE IF NOT EXISTS radni_nalog_stavke (
    id INT AUTO_INCREMENT PRIMARY KEY,
    radni_nalog_id INT NOT NULL,
    article_id INT NOT NULL COMMENT 'Artikl/usluga - cijena se dohvaća iz articles',
    amount DECIMAL(10,2) DEFAULT 1.00 COMMENT 'Količina',
    discount DECIMAL(5,2) DEFAULT 0.00 COMMENT 'Popust %',
    price DECIMAL(10,2) DEFAULT 0.00 COMMENT 'Ukupna cijena (izračunata)',
    napomena TEXT DEFAULT NULL COMMENT 'Napomena za ovu stavku',
    created DATETIME DEFAULT NULL,
    modified DATETIME DEFAULT NULL,
    INDEX idx_radni_nalog (radni_nalog_id),
    INDEX idx_article (article_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;


-- =====================================================
-- ALTER za offers tablicu - dodaj veze s radnim nalogom i predmetom
-- =====================================================
ALTER TABLE `offers` 
ADD COLUMN `radni_nalog_id` INT DEFAULT NULL COMMENT 'Veza s radnim nalogom',
ADD COLUMN `automobil_id` INT DEFAULT NULL COMMENT 'Predmet ponude - automobil',
ADD COLUMN `uredjaj_id` INT DEFAULT NULL COMMENT 'Predmet ponude - uređaj';

-- =====================================================
-- ALTER za offer_items tablicu - dodaj price_sell i discount ako ne postoje
-- =====================================================
--ALTER TABLE `offer_items` 
--ADD COLUMN `price_sell` DECIMAL(10,2) DEFAULT 0.00 AFTER `amount`,
--ADD COLUMN `discount` DECIMAL(5,2) DEFAULT 0.00 AFTER `price_sell`;

ALTER TABLE `offer_items` 
ADD COLUMN `napomena` TEXT DEFAULT NULL COMMENT 'Napomena za ovu stavku ponude' AFTER `discount`;

