-- Create the units users
CREATE TABLE users (
  userid INT(11) NOT NULL,
  email VARCHAR(100) NOT NULL,
  password VARCHAR(100) NOT NULL,
  created TIMESTAMP NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Create the units table
CREATE TABLE unita (
    id_unita INT(3) PRIMARY KEY AUTO_INCREMENT,
    descrizione VARCHAR(255) NOT NULL,
    abbreviazione VARCHAR(25) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Create the payment terms table
CREATE TABLE pagamenti (
    id_pagamento INT(11) PRIMARY KEY AUTO_INCREMENT,
    descrizione_pagamento VARCHAR(500) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Create the due dates table
CREATE TABLE scadenze (
    id_scadenza INT(11) PRIMARY KEY AUTO_INCREMENT,
    descrizione_scadenza VARCHAR(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Create the properties table
CREATE TABLE properties (
    chiave VARCHAR(255) PRIMARY KEY,
    valore VARCHAR(4000) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Create the articles table
CREATE TABLE articoli (
    id_articolo INT PRIMARY KEY AUTO_INCREMENT,
    codice VARCHAR(50) NOT NULL,
    descrizione VARCHAR(255) NOT NULL,
    descrizione_estesa varchar(2500) DEFAULT NULL,
    prezzo DECIMAL(10,2) NOT NULL,
    id_unita INT(3) NOT NULL,
    iva DECIMAL(10,2) NOT NULL DEFAULT 22.00,
    FOREIGN KEY (id_unita) REFERENCES unita(id_unita)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Create the quotes table
CREATE TABLE preventivi (
    id_preventivo INT(11) PRIMARY KEY AUTO_INCREMENT,
    numero VARCHAR(25) NOT NULL,
    data DATE NOT NULL,
    destinatario VARCHAR(255) NOT NULL,
    telefono VARCHAR(25) DEFAULT NULL,
    cellulare VARCHAR(25) DEFAULT NULL,
    email VARCHAR(100) DEFAULT NULL,
    indirizzo VARCHAR(255) DEFAULT NULL,
    cap VARCHAR(5) DEFAULT NULL,
    comune VARCHAR(100) DEFAULT NULL,
    provincia VARCHAR(2) DEFAULT NULL,
    note VARCHAR(2500) DEFAULT NULL,
    id_pagamento INT(11) NOT NULL,
    id_scadenza INT(11) NOT NULL,
    consolidato TINYINT(1) NOT NULL DEFAULT 0,
    FOREIGN KEY (id_pagamento) REFERENCES pagamenti(id_pagamento),
    FOREIGN KEY (id_scadenza) REFERENCES scadenze(id_scadenza)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Create the quote details table
CREATE TABLE preventivi_dettaglio (
    id_dettaglio INT(11) PRIMARY KEY AUTO_INCREMENT,
    id_preventivo INT(11) NOT NULL,
    id_articolo INT(6) NOT NULL,
    quantita DECIMAL(10,2) NOT NULL,
    nota VARCHAR(2000) NOT NULL,
    prezzo_consolidato DECIMAL(10,2) DEFAULT NULL,
    FOREIGN KEY (id_preventivo) REFERENCES preventivi(id_preventivo),
    FOREIGN KEY (id_articolo) REFERENCES articoli(id_articolo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Create the invoices table
CREATE TABLE fatture (
    id_fattura INT(11) PRIMARY KEY AUTO_INCREMENT,
    numero VARCHAR(25) NOT NULL,
    data DATE NOT NULL,
    destinatario VARCHAR(255) NOT NULL,
    telefono VARCHAR(25) DEFAULT NULL,
    cellulare VARCHAR(25) DEFAULT NULL,
    email VARCHAR(100) DEFAULT NULL,
    indirizzo VARCHAR(255) NOT NULL,
    cap VARCHAR(5) NOT NULL,
    comune VARCHAR(100) NOT NULL,
    provincia VARCHAR(2) NOT NULL,
    codice_fiscale VARCHAR(16) DEFAULT NULL,
    partita_iva VARCHAR(11) DEFAULT NULL,
    note VARCHAR(2500) DEFAULT NULL,
    id_pagamento INT(11) NOT NULL,
    id_scadenza INT(11) NOT NULL,
    id_preventivo INT(11) DEFAULT NULL,
    FOREIGN KEY (id_pagamento) REFERENCES pagamenti(id_pagamento),
    FOREIGN KEY (id_scadenza) REFERENCES scadenze(id_scadenza),
    FOREIGN KEY (id_preventivo) REFERENCES preventivi(id_preventivo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Create the invoice details table
CREATE TABLE fatture_dettaglio (
    id_dettaglio INT(11) PRIMARY KEY AUTO_INCREMENT,
    id_fattura INT(11) NOT NULL,
    descrizione VARCHAR(2000) NOT NULL,
    importo DECIMAL(10,2) NOT NULL,
    FOREIGN KEY (id_fattura) REFERENCES fatture(id_fattura)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


-- Add indexes for better performance
CREATE INDEX idx_articoli_codice ON articoli(codice);
CREATE INDEX idx_preventivi_numero ON preventivi(numero);
CREATE INDEX idx_preventivi_data ON preventivi(data);
CREATE INDEX idx_fatture_numero ON fatture(numero);
CREATE INDEX idx_fatture_data ON fatture(data);


-- Popolamento tabelle
INSERT INTO users (userid, email, password, created) VALUES
(1, 'beatrice_righi@hotmail.it', '65a856c987ede01a71e343b40ea432586e35bf5a8f8796750422f21077ab76e9', '2020-10-05 12:34:12');

INSERT INTO unita (id_unita, descrizione, abbreviazione) VALUES
(1, 'Metri quadri', 'mq'),
(2, 'Ore', 'h');

INSERT INTO properties (chiave, valore) VALUES
('CAP', '50050'),
('COMUNE', 'Cerreto Guidi'),
('INDIRIZZO', 'Via Caracosta'),
('INTESTAZIONE', 'Ditta Sguerri Andrea'),
('MOTTO', 'Lavori di tinteggiatura e verniciatura edile di interni ed esterni. Opere di raschiatura, rasatura e stuccatura preventiva e trattamenti di materiali metallici e legnosi.'),
('PROVINCIA', 'FI'),
('LOGO', 'img/logo_1.png'),
('TELEFONO', ''),
('CELLULARE', '3392450184'),
('EMAIL', 'sguerriandrea@gmail.com'),
('PEC', 'ANDREASG@ARUBAPEC.IT'),
('FATTURA_DICITURA', 'Prestazione svolta in regime fiscale agevolato ex Art.1 comma 54-89 Legge di Stabilita\' per il 2015 n.190 del 23/12/2014 e pertanto non soggetta ad IVA'),
('PREVENTIVO_DICITURA', 'Per eventuali domande rimaniamo a Sua completa disposizione, con l\'occasione porgiamo distinti saluti.'),
('CODICE_FISCALE', 'SGRNDR78T04D403A'),
('PARTITA_IVA', '05606860483'),
('CAPITALE_SOCIALE', ''),
('PROVINCIA_CCIAA', 'FI'),
('NUMERO_REA', '560505');

INSERT INTO pagamenti (id_pagamento, descrizione_pagamento) VALUES
(1, 'Da concordare'),
(2, 'Bonfico Bancario IT0832537900000000013815'),
(3, 'Assegno'),
(4, 'Contanti');

INSERT INTO scadenze (id_scadenza, descrizione_scadenza) VALUES
(1, 'A vista'),
(2, '30 giorni'),
(3, '60 giorni'),
(4, '90 giorni');

INSERT INTO articoli (id_articolo, codice, descrizione, descrizione_estesa, prezzo, id_unita, iva) VALUES
(9, 'GRAT', 'Grattatura', 'Rimozione manuale della vecchia tinta mediante grattino', '25.00', 2, '0.00'),
(10, 'FISA', 'Fissativo all\'acqua', 'Fissativo per bloccaggio spolvero della parete precendetemente sottoposta a grattatura', '1.50', 1, '0.00'),
(11, 'IMBI', 'Imbiancatura interni antimuffa', 'Due mani di verniciatura delle pareti con tinta da interni antimuffa', '4.50', 1, '0.00'),
(12, 'IMBE', 'Imbiancatura esterno silossanica', 'Due mani di verniciatura delle pareti con tinta da esterni silossanica', '11.00', 1, '0.00'),
(13, 'IMBQ', 'Imbiancatura esterni al quarzo', 'Due mani di verniciatura delle pareti con tinta da esterni al quarzo', '9.00', 1, '0.00'),
(14, 'IMBS', 'Imbiancatura interni silicati', 'Due mani di verniciatura delle pareti con tinta da interni ai silicati di calce', '8.50', 1, '0.00'),
(15, 'STUC', 'Stuccature', 'Riprese con stucco e rasante alle fibre', '25.00', 2, '0.00'),
(16, 'FOND', 'Fondo uniformante', 'Una mano di fondo di collegamento uniformante per riunificare le stuccature', '2.50', 1, '0.00'),
(17, 'IMBI  GESSO', 'imbiancatura pareti a gesso', 'imbiancatura pareti a gesso', '5.00', 1, '0.00'),
(18, 'VERN RAD', 'Verniciatura radiatori', 'Due mani di verniciatura radiatori', '400.00', 2, '0.00');

INSERT INTO preventivi (id_preventivo, numero, data, destinatario, telefono, cellulare, email, indirizzo, cap, comune, provincia, note, id_pagamento, id_scadenza, consolidato) VALUES
(24	, '2020/0001', '2020-10-29', 'test', '', '', '', '', '', '', '', '', 1, 2, 0);

INSERT INTO preventivi_dettaglio (id_dettaglio, id_preventivo, id_articolo, quantita, nota, prezzo_consolidato) VALUES
(223, 24, 9, '32.00', '', NULL);

INSERT INTO fatture (id_fattura, numero, data, destinatario, telefono, cellulare, email, indirizzo, cap, comune, provincia, codice_fiscale, partita_iva, note, id_pagamento, id_scadenza, id_preventivo) VALUES
(4, '2020/0007', '2020-10-04', 'Elisa Ponticelli', '', '', '', 'Via Senese Romana 49', '50053', 'Ponte a Elsa', 'FI', 'PNTLSE81B60D815Q', '', '', 2, 1, 24);

INSERT INTO fatture_dettaglio (id_dettaglio, id_fattura, descrizione, importo) VALUES
(31, 4, 'Lavori di imbiancatura presso la Vs abitazione', '730.00');