--
-- BEGIN - [#10883] - Mise en place des natures de défunt paramétrables
--

CREATE TABLE IF NOT EXISTS nature_defunt (
    nature_defunt integer NOT NULL PRIMARY KEY,
    code character varying(20) NOT NULL,
    libelle character varying(100) NOT NULL,
    om_validite_debut date,
    om_validite_fin date,
    taille float DEFAULT 0,
    is_reductible boolean DEFAULT TRUE
);
--
CREATE SEQUENCE IF NOT EXISTS nature_defunt_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;
ALTER SEQUENCE nature_defunt_seq OWNED BY nature_defunt.nature_defunt;

--
-- Données initiales - Nature de défunt
-- Ces valeurs correspondent aux natures historiquement codées en dur
-- dans defunt.class.php, avec les tailles par défaut associées.
--

INSERT INTO nature_defunt (nature_defunt, code, libelle, taille, is_reductible)
SELECT nextval('nature_defunt_seq'), v.code, v.libelle, v.taille, v.is_reductible
FROM (VALUES
    ('cercueil',          'Cercueil',              1, TRUE),
    ('cendre',             'Cendres',               0.1, TRUE),
    ('zinc',               'Cercueil en zinc',      1, TRUE),
    ('urne',               'Urne',                  0.1, FALSE),
    ('boite',              'Boîte',                 0.5, TRUE),
    ('cercueil_simp',      'Cercueil simple',       2, TRUE),
    ('cercueil_herm',      'Cercueil hermétique',   1, TRUE),
    ('cercueil_partage',   'Cercueil partagé',      2, TRUE),
    ('reliquaire',         'Reliquaire simple',     1, TRUE),
    ('reliquaire_partage', 'Reliquaire partagé',    2, TRUE),
    ('urne_simple',        'Urne simple',           0.1, TRUE),
    ('urne_partage',       'Urne partagée',         0.1, TRUE),
    ('non_renseigne',      'Non renseignée',        1, TRUE)
) AS v(code, libelle, taille, is_reductible)
LEFT JOIN nature_defunt n
       ON n.code = v.code
WHERE n.nature_defunt IS NULL;

--
-- Name: defunt defunt_nature_defunt_fkey; Type: FK CONSTRAINT; Schema: opencimetiere; Owner: -
--

ALTER TABLE ONLY defunt
    ALTER COLUMN nature TYPE integer USING nature::integer,
    ALTER COLUMN nature SET NOT NULL,
    DROP CONSTRAINT IF EXISTS defunt_nature_defunt_fkey,
    ADD CONSTRAINT defunt_nature_defunt_fkey FOREIGN KEY (nature) REFERENCES nature_defunt (nature_defunt);

ALTER TABLE ONLY operation_defunt
    ALTER COLUMN defunt_nature TYPE integer USING defunt_nature::integer,
    ALTER COLUMN defunt_nature SET NOT NULL,
    DROP CONSTRAINT IF EXISTS operation_defunt_defunt_nature_fkey,
    ADD CONSTRAINT operation_defunt_defunt_nature_fkey FOREIGN KEY (defunt_nature) REFERENCES nature_defunt (nature_defunt);

--
-- END - [#10883] - Mise en place des natures de défunt paramétrables
--