-- 1/3 : Création de la table temporaire
DROP TABLE IF EXISTS w_dbsetup
;

CREATE TEMP TABLE w_dbsetup AS
    SELECT
    	t_classes_sections.code AS section_code, 
    	t_prestations.code as to_code, 
    	t_listes_tables.code as table_code, 
    	t_classes.sequence as classe_sequence 
    FROM 
    	pmsi.t_classes_sections_elements, 
    	pmsi.t_classes_sections, 
    	pmsi.t_classes, 
    	pmsi.t_listes_tables, 
    	pmsi.t_prestations
    WHERE 
    	t_classes_sections_elements.section_id = t_classes_sections.oid
    	AND t_classes_sections.classe_id = t_classes.oid 
    	AND t_classes.is_cti = '1' 
    	AND table_id = t_listes_tables.oid
    	AND t_listes_tables.code = 'TYPEFACT'
    	AND t_classes_sections_elements.to_id = t_prestations.oid
    ORDER BY t_classes.sequence, t_classes_sections.code, t_prestations.code LIMIT 0
;

-- 2/3 : Peuplement de la table temporaire
INSERT INTO w_dbsetup(
    section_code,
    to_code,
    table_code,
    classe_sequence
)
VALUES
('1GHS', 'ANT', 'TYPEFACT', 7),
('1GHS', 'EXH', 'TYPEFACT', 7),
('1GHS', 'GHS', 'TYPEFACT', 7),
('1GHS', 'NN1', 'TYPEFACT', 7),
('1GHS', 'REA', 'TYPEFACT', 7),
('1GHS', 'SRC', 'TYPEFACT', 7),
('1GHS', 'STF', 'TYPEFACT', 7),
('2DIA', 'D01', 'TYPEFACT', 7),
('2DIA', 'D02', 'TYPEFACT', 7),
('2DIA', 'D03', 'TYPEFACT', 7),
('2DIA', 'D04', 'TYPEFACT', 7),
('2DIA', 'D05', 'TYPEFACT', 7),
('2DIA', 'D06', 'TYPEFACT', 7),
('2DIA', 'D07', 'TYPEFACT', 7),
('2DIA', 'D08', 'TYPEFACT', 7),
('2DIA', 'D09', 'TYPEFACT', 7),
('2DIA', 'D10', 'TYPEFACT', 7),
('2DIA', 'D11', 'TYPEFACT', 7),
('2DIA', 'D12', 'TYPEFACT', 7),
('2DIA', 'D13', 'TYPEFACT', 7),
('2DIA', 'D14', 'TYPEFACT', 7),
('2DIA', 'D15', 'TYPEFACT', 7),
('2DIA', 'D16', 'TYPEFACT', 7),
('2DIA', 'D17', 'TYPEFACT', 7),
('2DIA', 'D18', 'TYPEFACT', 7),
('2DIA', 'D19', 'TYPEFACT', 7),
('2DIA', 'D20', 'TYPEFACT', 7),
('2DIA', 'D21', 'TYPEFACT', 7),
('2DIA', 'D22', 'TYPEFACT', 7),
('2DIA', 'D23', 'TYPEFACT', 7),
('2DIA', 'D24', 'TYPEFACT', 7),
('3SE', 'SE1', 'TYPEFACT', 7),
('3SE', 'SE2', 'TYPEFACT', 7),
('3SE', 'SE3', 'TYPEFACT', 7),
('3SE', 'SE4', 'TYPEFACT', 7),
('4FFM', 'AP2', 'TYPEFACT', 7),
('4FFM', 'APE', 'TYPEFACT', 7),
('4FFM', 'FFM', 'TYPEFACT', 7),
('5ATU', 'ATU', 'TYPEFACT', 7),
('6CCAM', 'ACO', 'TYPEFACT', 7),
('6CCAM', 'ADA', 'TYPEFACT', 7),
('6CCAM', 'ADC', 'TYPEFACT', 7),
('6CCAM', 'ADE', 'TYPEFACT', 7),
('6CCAM', 'ADI', 'TYPEFACT', 7),
('6CCAM', 'ATM', 'TYPEFACT', 7),
('6CCAM', 'DEN', 'TYPEFACT', 7),
('6CCAM', 'END', 'TYPEFACT', 7),
('6CCAM', 'PAR', 'TYPEFACT', 7),
('6CCAM', 'PDT', 'TYPEFACT', 7),
('6CCAM', 'RPN', 'TYPEFACT', 7),
('6CCAM', 'SDE', 'TYPEFACT', 7),
('7FTN', 'FR2', 'TYPEFACT', 7),
('7FTN', 'FR3', 'TYPEFACT', 7),
('7FTN', 'FTG', 'TYPEFACT', 7),
('7FTN', 'FTN', 'TYPEFACT', 7),
('7FTN', 'FTR', 'TYPEFACT', 7),
('7FTN', 'FTS', 'TYPEFACT', 7),
('8NGAP', 'A', 'TYPEFACT', 7),
('8NGAP', 'A   F', 'TYPEFACT', 7),
('8NGAP', 'A   N', 'TYPEFACT', 7),
('8NGAP', 'AAD', 'TYPEFACT', 7),
('8NGAP', 'AAR', 'TYPEFACT', 7),
('8NGAP', 'ABA', 'TYPEFACT', 7),
('8NGAP', 'ABG', 'TYPEFACT', 7),
('8NGAP', 'ADP', 'TYPEFACT', 7),
('8NGAP', 'AIS', 'TYPEFACT', 7),
('8NGAP', 'AM', 'TYPEFACT', 7),
('8NGAP', 'AM  F', 'TYPEFACT', 7),
('8NGAP', 'AM  N', 'TYPEFACT', 7),
('8NGAP', 'AMC', 'TYPEFACT', 7),
('8NGAP', 'AMC F', 'TYPEFACT', 7),
('8NGAP', 'AMC N', 'TYPEFACT', 7),
('8NGAP', 'AMD', 'TYPEFACT', 7),
('8NGAP', 'AMF', 'TYPEFACT', 7),
('8NGAP', 'AMI', 'TYPEFACT', 7),
('8NGAP', 'AMI F', 'TYPEFACT', 7),
('8NGAP', 'AMI N', 'TYPEFACT', 7),
('8NGAP', 'AMK', 'TYPEFACT', 7),
('8NGAP', 'AMK F', 'TYPEFACT', 7),
('8NGAP', 'AMK N', 'TYPEFACT', 7),
('8NGAP', 'AMO', 'TYPEFACT', 7),
('8NGAP', 'AMP', 'TYPEFACT', 7),
('8NGAP', 'AMP F', 'TYPEFACT', 7),
('8NGAP', 'AMP N', 'TYPEFACT', 7),
('8NGAP', 'AMS', 'TYPEFACT', 7),
('8NGAP', 'AMS F', 'TYPEFACT', 7),
('8NGAP', 'AMY', 'TYPEFACT', 7),
('8NGAP', 'AMY F', 'TYPEFACT', 7),
('8NGAP', 'AMY N', 'TYPEFACT', 7),
('8NGAP', 'ANP', 'TYPEFACT', 7),
('8NGAP', 'APC', 'TYPEFACT', 7),
('8NGAP', 'APD', 'TYPEFACT', 7),
('8NGAP', 'APHE', 'TYPEFACT', 7),
('8NGAP', 'AR1', 'TYPEFACT', 7),
('8NGAP', 'AR2', 'TYPEFACT', 7),
('8NGAP', 'ARE', 'TYPEFACT', 7),
('8NGAP', 'ARE F', 'TYPEFACT', 7),
('8NGAP', 'ARE N', 'TYPEFACT', 7),
('8NGAP', 'ARE2', 'TYPEFACT', 7),
('8NGAP', 'ARE2N', 'TYPEFACT', 7),
('8NGAP', 'ARO', 'TYPEFACT', 7),
('8NGAP', 'AS1', 'TYPEFACT', 7),
('8NGAP', 'AS2', 'TYPEFACT', 7),
('8NGAP', 'AS3', 'TYPEFACT', 7),
('8NGAP', 'AS4', 'TYPEFACT', 7),
('8NGAP', 'AS5', 'TYPEFACT', 7),
('8NGAP', 'ATD', 'TYPEFACT', 7),
('8NGAP', 'ATL', 'TYPEFACT', 7),
('8NGAP', 'ATP', 'TYPEFACT', 7),
('8NGAP', 'AXI', 'TYPEFACT', 7),
('8NGAP', 'B', 'TYPEFACT', 7),
('8NGAP', 'B   F', 'TYPEFACT', 7),
('8NGAP', 'B   N', 'TYPEFACT', 7),
('8NGAP', 'BDC', 'TYPEFACT', 7),
('8NGAP', 'BHN', 'TYPEFACT', 7),
('8NGAP', 'BP', 'TYPEFACT', 7),
('8NGAP', 'BP  F', 'TYPEFACT', 7),
('8NGAP', 'BP  N', 'TYPEFACT', 7),
('8NGAP', 'BR', 'TYPEFACT', 7),
('8NGAP', 'BR  F', 'TYPEFACT', 7),
('8NGAP', 'BR  N', 'TYPEFACT', 7),
('8NGAP', 'BR2', 'TYPEFACT', 7),
('8NGAP', 'BR4', 'TYPEFACT', 7),
('8NGAP', 'C', 'TYPEFACT', 7),
('8NGAP', 'C   F', 'TYPEFACT', 7),
('8NGAP', 'C   N', 'TYPEFACT', 7),
('8NGAP', 'CA', 'TYPEFACT', 7),
('8NGAP', 'CDE', 'TYPEFACT', 7),
('8NGAP', 'CG', 'TYPEFACT', 7),
('8NGAP', 'CG  F', 'TYPEFACT', 7),
('8NGAP', 'CG  N', 'TYPEFACT', 7),
('8NGAP', 'CNP', 'TYPEFACT', 7),
('8NGAP', 'CNP F', 'TYPEFACT', 7),
('8NGAP', 'CNP N', 'TYPEFACT', 7),
('8NGAP', 'COR', 'TYPEFACT', 7),
('8NGAP', 'COR A', 'TYPEFACT', 7),
('8NGAP', 'COR E', 'TYPEFACT', 7),
('8NGAP', 'COR P', 'TYPEFACT', 7),
('8NGAP', 'CPC', 'TYPEFACT', 7),
('8NGAP', 'CPH', 'TYPEFACT', 7),
('8NGAP', 'CRD', 'TYPEFACT', 7),
('8NGAP', 'CRM', 'TYPEFACT', 7),
('8NGAP', 'CRN', 'TYPEFACT', 7),
('8NGAP', 'CRS', 'TYPEFACT', 7),
('8NGAP', 'CS', 'TYPEFACT', 7),
('8NGAP', 'CS  F', 'TYPEFACT', 7),
('8NGAP', 'CS  N', 'TYPEFACT', 7),
('8NGAP', 'CSC', 'TYPEFACT', 7),
('8NGAP', 'CSC F', 'TYPEFACT', 7),
('8NGAP', 'CSC N', 'TYPEFACT', 7),
('8NGAP', 'CST', 'TYPEFACT', 7),
('8NGAP', 'D', 'TYPEFACT', 7),
('8NGAP', 'D   F', 'TYPEFACT', 7),
('8NGAP', 'D   N', 'TYPEFACT', 7),
('8NGAP', 'DAP', 'TYPEFACT', 7),
('8NGAP', 'DC', 'TYPEFACT', 7),
('8NGAP', 'DC  F', 'TYPEFACT', 7),
('8NGAP', 'DC  N', 'TYPEFACT', 7),
('8NGAP', 'DI', 'TYPEFACT', 7),
('8NGAP', 'DIP', 'TYPEFACT', 7),
('8NGAP', 'DIV', 'TYPEFACT', 7),
('8NGAP', 'DPS', 'TYPEFACT', 7),
('8NGAP', 'DTP', 'TYPEFACT', 7),
('8NGAP', 'DVO', 'TYPEFACT', 7),
('8NGAP', 'F', 'TYPEFACT', 7),
('8NGAP', 'FPE', 'TYPEFACT', 7),
('8NGAP', 'FSD', 'TYPEFACT', 7),
('8NGAP', 'G', 'TYPEFACT', 7),
('8NGAP', 'HCS', 'TYPEFACT', 7),
('8NGAP', 'ID', 'TYPEFACT', 7),
('8NGAP', 'IF', 'TYPEFACT', 7),
('8NGAP', 'IFA', 'TYPEFACT', 7),
('8NGAP', 'IFN', 'TYPEFACT', 7),
('8NGAP', 'IFO', 'TYPEFACT', 7),
('8NGAP', 'IFP', 'TYPEFACT', 7),
('8NGAP', 'IFR', 'TYPEFACT', 7),
('8NGAP', 'IFS', 'TYPEFACT', 7),
('8NGAP', 'IK', 'TYPEFACT', 7),
('8NGAP', 'IKM', 'TYPEFACT', 7),
('8NGAP', 'IKS', 'TYPEFACT', 7),
('8NGAP', 'K', 'TYPEFACT', 7),
('8NGAP', 'KA', 'TYPEFACT', 7),
('8NGAP', 'KB', 'TYPEFACT', 7),
('8NGAP', 'KC', 'TYPEFACT', 7),
('8NGAP', 'KCC', 'TYPEFACT', 7),
('8NGAP', 'KE', 'TYPEFACT', 7),
('8NGAP', 'KFA', 'TYPEFACT', 7),
('8NGAP', 'KFB', 'TYPEFACT', 7),
('8NGAP', 'KFC', 'TYPEFACT', 7),
('8NGAP', 'KGP', 'TYPEFACT', 7),
('8NGAP', 'KMB', 'TYPEFACT', 7),
('8NGAP', 'KMO', 'TYPEFACT', 7),
('8NGAP', 'KTH', 'TYPEFACT', 7),
('8NGAP', 'MAS', 'TYPEFACT', 7),
('8NGAP', 'MBB', 'TYPEFACT', 7),
('8NGAP', 'MCC', 'TYPEFACT', 7),
('8NGAP', 'MCE', 'TYPEFACT', 7),
('8NGAP', 'MCG', 'TYPEFACT', 7),
('8NGAP', 'MCS', 'TYPEFACT', 7),
('8NGAP', 'MD', 'TYPEFACT', 7),
('8NGAP', 'MM', 'TYPEFACT', 7),
('8NGAP', 'MNO', 'TYPEFACT', 7),
('8NGAP', 'MNP', 'TYPEFACT', 7),
('8NGAP', 'MPC', 'TYPEFACT', 7),
('8NGAP', 'MTD', 'TYPEFACT', 7),
('8NGAP', 'MTO', 'TYPEFACT', 7),
('8NGAP', 'MTU', 'TYPEFACT', 7),
('8NGAP', 'P', 'TYPEFACT', 7),
('8NGAP', 'PAE', 'TYPEFACT', 7),
('8NGAP', 'PAS', 'TYPEFACT', 7),
('8NGAP', 'PAT', 'TYPEFACT', 7),
('8NGAP', 'PHU', 'TYPEFACT', 7),
('8NGAP', 'PRO', 'TYPEFACT', 7),
('8NGAP', 'SC', 'TYPEFACT', 7),
('8NGAP', 'SCM', 'TYPEFACT', 7),
('8NGAP', 'SF', 'TYPEFACT', 7),
('8NGAP', 'SF  F', 'TYPEFACT', 7),
('8NGAP', 'SF  N', 'TYPEFACT', 7),
('8NGAP', 'SFI', 'TYPEFACT', 7),
('8NGAP', 'SP', 'TYPEFACT', 7),
('8NGAP', 'SPR', 'TYPEFACT', 7),
('8NGAP', 'V', 'TYPEFACT', 7),
('8NGAP', 'VDE', 'TYPEFACT', 7),
('8NGAP', 'Z', 'TYPEFACT', 7),
('8NGAP', 'ZN', 'TYPEFACT', 7)
;

-- 3/3 : Màj de la table iCTI
-- Supprime la classe de type de facturation qui a été créée sur la séquence 9 (elle sera remplacée par la séquence 7) _ by CLA 15-07-2014

DELETE FROM pmsi.t_classes_sections_elements
USING pmsi.t_classes_sections cs
	JOIN pmsi.t_classes c ON c.oid = cs.classe_id
	JOIN pmsi.t_listes_tables lt ON lt.oid = c.table_id
WHERE
	1=1
	AND lt.code = 'TYPEFACT'
    AND c.is_cti = '1'
	AND c.sequence = 9
	AND t_classes_sections_elements.section_id = cs.oid;


DELETE FROM pmsi.t_classes_sections
USING pmsi.t_classes c
	JOIN pmsi.t_listes_tables lt ON lt.oid = c.table_id
WHERE 1=1
	AND lt.code = 'TYPEFACT'
	AND c.sequence = 9
	AND pmsi.t_classes_sections.classe_id = c.oid;

DELETE FROM pmsi.t_classes
USING pmsi.t_listes_tables lt
WHERE 1=1
	AND lt.oid = t_classes.table_id
	AND lt.code = 'TYPEFACT'
    AND t_classes.is_cti = '1'
	AND t_classes.sequence = 9;
	
	
-- Insertion des classes de type de facturation

INSERT INTO pmsi.t_classes_sections_elements(section_id, to_id)     
SELECT 
	t_classes_sections.oid, 
	t_prestations.oid 
FROM 
	w_dbsetup, 
	pmsi.t_listes_tables, 
	pmsi.t_classes, 
	pmsi.t_classes_sections, 
	pmsi.t_prestations   
WHERE 
	w_dbsetup.table_code = t_listes_tables.code       
	AND t_classes.table_id = t_listes_tables.oid   
	AND t_classes_sections.classe_id = t_classes.oid   
	AND w_dbsetup.section_code = t_classes_sections.code
	AND w_dbsetup.classe_sequence = t_classes.sequence
	AND w_dbsetup.to_code = t_prestations.code
	AND t_classes_sections.oid::text || '-'::text || t_prestations.oid::text NOT IN (SELECT section_id::text || '-'::text || to_id::text FROM pmsi.t_classes_sections_elements);

SELECT * FROM pmsi.cti_update_schema_classes('TYPEFACT');