<?xml version="1.0" encoding="ISO-8859-1"?>
<ROOT>


    <NODE name="COMMON" label="TRAITEMENTS COMMUNS">

        <NODE label="Parametres">
            <sqlcmd><![CDATA[
					
			-- Suppression des codes NOW et NOWCLOTURE.
            -- De cette façon, si l'import du prestataire ne les ajoute pas, le SHARE le fera.
            DELETE FROM compta.t_divers
            WHERE code IN ('NOW', 'NOWCLOTURE')
            ;
				
			]]></sqlcmd>
        </NODE>
    </NODE>

    <NODE name="POST" label="TRAITEMENTS COMPLEMENTAIRES COMMUNS">

        <condition><![CDATA[
			"[MOISMODIFIES]" != "0"
		]]></condition>

        <Node label="Date exercice comptable">
            <sqlcmd><![CDATA[
				UPDATE base.p_calendrier_mois SET
                    exercice_comptable = to_char(date_debut - (subview.valeur::text || ' month'::text)::interval + '1 month'::interval, 'YYYY')::numeric,
                    exercice_mois_comptable_1 = (to_char(date_debut - (subview.valeur::text || ' month'::text)::interval + '1 month'::interval, 'YYYY')||ltrim(to_char(subview.valeur::numeric, '00')))::numeric
                FROM
                  (SELECT max(valeur) as valeur FROM compta.t_divers WHERE code = 'MOIS_DEBUT') subview
                WHERE
                (
                    exercice_comptable IS DISTINCT FROM to_char(date_debut - (subview.valeur::text || ' month'::text)::interval + '1 month'::interval, 'YYYY')::numeric OR
                    exercice_mois_comptable_1 IS DISTINCT FROM (to_char(date_debut - (subview.valeur::text || ' month'::text)::interval + '1 month'::interval, 'YYYY')||ltrim(to_char(subview.valeur::numeric, '00')))::numeric
                    )
                ;
			]]></sqlcmd>
        </Node>

        <NODE label="Précumul">
            <sqlcmd><![CDATA[
			
			
				SELECT base.cti_vacuum_table('compta','p_historique_ecritures');
		
				TRUNCATE compta.p_historique_ecritures_total;

				INSERT INTO compta.p_historique_ecritures_total( 
					compte_id, mois_comptable, montant_credit, montant_debit, journal_id,  
					section_analytique_id, 
                    section_analytique_2_id, 
                    section_analytique_3_id, 
                    section_analytique_4_id, 
                    section_analytique_5_id, 
                    section_analytique_6_id, 
                    section_analytique_7_id, 
                    section_analytique_8_id, 
                    section_analytique_9_id, 
					clinique_honoraire, exercice_comptable,  
					type_compta_id, site_id, compte_extra_id, partenaire_id, comptabilisee, fin_exercice,  
					ajustement, inter_site, ecriture_consolidee, nombre_ecritures) 
				SELECT  
					compte_id, mois_comptable, sum(montant_credit), sum(montant_debit), journal_id,  
					section_analytique_id, 
                    section_analytique_2_id, 
                    section_analytique_3_id, 
                    section_analytique_4_id, 
                    section_analytique_5_id, 
                    section_analytique_6_id, 
                    section_analytique_7_id, 
                    section_analytique_8_id, 
                    section_analytique_9_id,
					clinique_honoraire, exercice_comptable,  
					type_compta_id, site_id, compte_extra_id, partenaire_id, comptabilisee, fin_exercice,  
					ajustement, inter_site, ecriture_consolidee, count(*) 
				FROM compta.p_historique_ecritures 
				WHERE 
					ajustement <> '1'  AND
					is_budget IS DISTINCT FROM '1'
				GROUP BY 
					compte_id, mois_comptable,  journal_id,  
					section_analytique_id, 
                    section_analytique_2_id, 
                    section_analytique_3_id, 
                    section_analytique_4_id, 
                    section_analytique_5_id, 
                    section_analytique_6_id, 
                    section_analytique_7_id, 
                    section_analytique_8_id, 
                    section_analytique_9_id,
					clinique_honoraire, exercice_comptable,  
					type_compta_id, site_id, compte_extra_id, partenaire_id, comptabilisee, fin_exercice,  
					ajustement, inter_site, ecriture_consolidee;
					
				SELECT base.cti_enable_index('compta', 'i_historique_ecritures_total_1');	
				SELECT base.cti_enable_index('compta', 'i_historique_ecritures_total_2');
				SELECT base.cti_enable_index('compta', 'i_historique_ecritures_total_3');
				SELECT base.cti_enable_index('compta', 'i_historique_ecritures_total_4');
				SELECT base.cti_enable_index('compta', 'i_historique_ecritures_total_5');
				SELECT base.cti_enable_index('compta', 'i_historique_ecritures_total_6');
				SELECT base.cti_enable_index('compta', 'i_historique_ecritures_total_7');
				SELECT base.cti_enable_index('compta', 'i_historique_ecritures_total_8');
				SELECT base.cti_enable_index('compta', 'i_historique_ecritures_total_9');
				SELECT base.cti_enable_index('compta', 'i_historique_ecritures_total_10');
				SELECT base.cti_enable_index('compta', 'i_historique_ecritures_total_11');
				SELECT base.cti_enable_index('compta', 'i_historique_ecritures_total_12');
				SELECT base.cti_enable_index('compta', 'i_historique_ecritures_total_13');
					
				
						
			]]></sqlcmd>

        </NODE>

        <NODE label="Ecritures d'ajustement">
            <sqlcmd><![CDATA[
		
				SELECT compta.cti_gen_ajustements(0);		
						
			]]></sqlcmd>

        </NODE>


        <NODE label="Budget">
            <sqlcmd><![CDATA[
		
				SELECT compta.cti_gen_budget(0);		
						
			]]></sqlcmd>

        </NODE>


        <NODE label="Ajustement paramètres">
            <sqlcmd><![CDATA[
		
				UPDATE compta.t_sites SET code = chr(127) || '***', texte = 'Non renseigné' WHERE oid = 0;
				INSERT INTO compta.t_sites(oid, code, clinique_honoraire, code_original, texte) 
				SELECT 0, chr(127) || '***', '', '', 'Non renseigné' WHERE 0 NOT IN (SELECT oid FROM compta.t_sites);
				
				UPDATE compta.t_partenaires SET code = chr(127) || '****', texte = 'Non renseigné', texte_court = 'Non renseigné' WHERE oid = 0;
				INSERT INTO compta.t_partenaires(oid, code, code_original, texte, texte_court) 
				SELECT 0, chr(127) || '****', '', 'Non renseigné', 'Non renseigné' WHERE 0 NOT IN (SELECT oid FROM compta.t_partenaires);
				
				UPDATE compta.t_journaux SET code = chr(127) || '***', texte = 'Non renseigné' WHERE oid = 0;
				INSERT INTO compta.t_journaux(oid, code, clinique_honoraire, code_original, texte) 
				SELECT 0, chr(127) || '***', '', '', 'Non renseigné' WHERE 0 NOT IN (SELECT oid FROM compta.t_journaux);
	
				UPDATE compta.t_sections_analytiques SET code = chr(127) || '***', texte = 'Non renseigné' WHERE oid = 0;
				INSERT INTO compta.t_sections_analytiques(oid, code, code_original, texte) 
				SELECT 0, chr(127) || '***', '', 'Non renseigné' WHERE 0 NOT IN (SELECT oid FROM compta.t_sections_analytiques);
	
					
				
			]]></sqlcmd>

        </NODE>


        <NODE label="Classes des comptes">
            <sqlcmd><![CDATA[
			
				UPDATE compta.t_classes_comptes
				SET code = trim(code)
				WHERE code <> trim(code);
		
				INSERT into compta.t_classes_comptes (code, texte) 
				(SELECT DISTINCT substr(numero, 1 , 1), '' FROM compta.t_comptes  
				WHERE compte_general_id = oid AND substr(numero, 1 , 1) NOT IN (SELECT code FROM compta.t_classes_comptes)) 
				UNION 
				SELECT DISTINCT substr(numero, 1 , 2), '' FROM compta.t_comptes  
				WHERE compte_general_id = oid AND substr(numero, 1 , 2) NOT IN (SELECT code FROM compta.t_classes_comptes) 
				UNION 
				SELECT DISTINCT substr(numero, 1 , 3), '' FROM compta.t_comptes  
				WHERE compte_general_id = oid AND substr(numero, 1 , 3) NOT IN (SELECT code FROM compta.t_classes_comptes) 
				UNION 
				SELECT DISTINCT substr(numero, 1 , 4), '' FROM compta.t_comptes  
				WHERE compte_general_id = oid AND substr(numero, 1 , 4) NOT IN (SELECT code FROM compta.t_classes_comptes) 
				UNION 
				SELECT DISTINCT substr(numero, 1 , 5), '' FROM compta.t_comptes  
				WHERE compte_general_id = oid AND substr(numero, 1 , 5) NOT IN (SELECT code FROM compta.t_classes_comptes) 
				UNION 
				SELECT DISTINCT substr(numero, 1 , 6), '' FROM compta.t_comptes  
				WHERE compte_general_id = oid AND substr(numero, 1 , 6) NOT IN (SELECT code FROM compta.t_classes_comptes) ;
		
		
		

				UPDATE compta.t_classes_comptes SET texte = '' WHERE texte IS NULL;
	
	

				UPDATE compta.t_comptes SET classe_1_id = t_classes_comptes.oid 
						FROM compta.t_classes_comptes, compta.t_comptes t_comptes_generaux 
						WHERE t_comptes.compte_general_id = t_comptes_generaux.oid AND substr(t_comptes_generaux.numero, 1 , 1) = t_classes_comptes.code  ;
				
				
	
				UPDATE compta.t_comptes SET classe_2_id = t_classes_comptes.oid 
						FROM compta.t_classes_comptes, compta.t_comptes t_comptes_generaux 
						WHERE t_comptes.compte_general_id = t_comptes_generaux.oid AND substr(t_comptes_generaux.numero, 1 , 2) = t_classes_comptes.code  ;
				
				
	
				UPDATE compta.t_comptes SET classe_3_id = t_classes_comptes.oid 
						FROM compta.t_classes_comptes, compta.t_comptes t_comptes_generaux 
						WHERE t_comptes.compte_general_id = t_comptes_generaux.oid AND substr(t_comptes_generaux.numero, 1 , 3) = t_classes_comptes.code  ;
				
				
				
				UPDATE compta.t_comptes SET classe_4_id = t_classes_comptes.oid 
						FROM compta.t_classes_comptes, compta.t_comptes t_comptes_generaux 
						WHERE t_comptes.compte_general_id = t_comptes_generaux.oid AND substr(t_comptes_generaux.numero, 1 , 4) = t_classes_comptes.code  ;
				
				
				
				UPDATE compta.t_comptes SET classe_5_id = t_classes_comptes.oid 
						FROM compta.t_classes_comptes, compta.t_comptes t_comptes_generaux 
						WHERE t_comptes.compte_general_id = t_comptes_generaux.oid AND substr(t_comptes_generaux.numero, 1 , 5) = t_classes_comptes.code  ;
				
				
				
				UPDATE compta.t_comptes SET classe_6_id = t_classes_comptes.oid 
						FROM compta.t_classes_comptes, compta.t_comptes t_comptes_generaux 
						WHERE t_comptes.compte_general_id = t_comptes_generaux.oid AND substr(t_comptes_generaux.numero, 1 , 6) = t_classes_comptes.code  ;
				
				
				
				UPDATE compta.t_classes_comptes SET clinique = '0', honoraire = '0' ;
				
				
				
				UPDATE compta.t_classes_comptes SET clinique = '1' 
						WHERE oid IN (SELECT classe_1_id FROM compta.t_comptes WHERE clinique_honoraire = 'C' AND t_comptes.compte_general_id = t_comptes.oid) ;
				
				
				
				UPDATE compta.t_classes_comptes SET clinique = '1' 
						WHERE oid IN (SELECT classe_2_id FROM compta.t_comptes WHERE clinique_honoraire = 'C' AND t_comptes.compte_general_id = t_comptes.oid) ;
				
				
				
				UPDATE compta.t_classes_comptes SET clinique = '1' 
						WHERE oid IN (SELECT classe_3_id FROM compta.t_comptes WHERE clinique_honoraire = 'C' AND t_comptes.compte_general_id = t_comptes.oid) ;
				
				
				
				UPDATE compta.t_classes_comptes SET clinique = '1' 
						WHERE oid IN (SELECT classe_4_id FROM compta.t_comptes WHERE clinique_honoraire = 'C' AND t_comptes.compte_general_id = t_comptes.oid) ;
				
				
				
				UPDATE compta.t_classes_comptes SET clinique = '1' 
						WHERE oid IN (SELECT classe_5_id FROM compta.t_comptes WHERE clinique_honoraire = 'C' AND t_comptes.compte_general_id = t_comptes.oid) ;
				
				
				
				UPDATE compta.t_classes_comptes SET clinique = '1' 
						WHERE oid IN (SELECT classe_6_id FROM compta.t_comptes WHERE clinique_honoraire = 'C' AND t_comptes.compte_general_id = t_comptes.oid) ;
				
				

				UPDATE compta.t_classes_comptes SET honoraire = '1' WHERE oid IN (SELECT classe_1_id FROM compta.t_comptes WHERE clinique_honoraire = 'H' AND t_comptes.compte_general_id = t_comptes.oid) ;
				
				
				
				UPDATE compta.t_classes_comptes SET honoraire = '1' WHERE oid IN (SELECT classe_2_id FROM compta.t_comptes WHERE clinique_honoraire = 'H' AND t_comptes.compte_general_id = t_comptes.oid) ;
				
				
				
				UPDATE compta.t_classes_comptes SET honoraire = '1' WHERE oid IN (SELECT classe_3_id FROM compta.t_comptes WHERE clinique_honoraire = 'H' AND t_comptes.compte_general_id = t_comptes.oid) ;
				
				
				
				UPDATE compta.t_classes_comptes SET honoraire = '1' WHERE oid IN (SELECT classe_4_id FROM compta.t_comptes WHERE clinique_honoraire = 'H' AND t_comptes.compte_general_id = t_comptes.oid) ;
				
				
				
				UPDATE compta.t_classes_comptes SET honoraire = '1' WHERE oid IN (SELECT classe_5_id FROM compta.t_comptes WHERE clinique_honoraire = 'H' AND t_comptes.compte_general_id = t_comptes.oid) ;
				
				
				
				UPDATE compta.t_classes_comptes SET honoraire = '1' WHERE oid IN (SELECT classe_6_id FROM compta.t_comptes WHERE clinique_honoraire = 'H' AND t_comptes.compte_general_id = t_comptes.oid) ;
				
				
								
				
			]]></sqlcmd>

        </NODE>


        <NODE label="Tables répliquées">


            <sqlcmd><![CDATA[
			
				SELECT compta.cti_reorganize_comptes_c();
				
				
				UPDATE compta.t_comptes_c SET 
						arbre_classe_1_id = 0,  
						arbre_classe_1_code = '',  
						arbre_classe_1_texte = '',  
						arbre_classe_2_id = 0,  
						arbre_classe_2_code = '',  
						arbre_classe_2_texte = '',  
						arbre_classe_3_id = 0,  
						arbre_classe_3_code = '',  
						arbre_classe_3_texte = '',  
						arbre_classe_4_id = 0,  
						arbre_classe_4_code = '',  
						arbre_classe_4_texte = '',  
						arbre_classe_5_id = 0,  
						arbre_classe_5_code = '',  
						arbre_classe_5_texte = '',  
						arbre_classe_6_id = 0,  
						arbre_classe_6_code = '',  
						arbre_classe_6_texte = '',  
						arbre_classe_7_id = 0,  
						arbre_classe_7_code = '',  
						arbre_classe_7_texte = '';  ;
				
				

				UPDATE compta.t_comptes_c 
						SET  
						arbre_classe_1_id = 
						CASE  
							WHEN classe_1_texte <> '' THEN classe_1_id  
							WHEN classe_2_texte <> '' THEN classe_2_id  
							WHEN classe_3_texte <> '' THEN classe_3_id  
							WHEN classe_4_texte <> '' THEN classe_4_id  
							WHEN classe_5_texte <> '' THEN classe_5_id  
							WHEN classe_6_texte <> '' THEN classe_6_id  
							ELSE compte_general_id
						END, 
						arbre_classe_1_code = 
						CASE  
							WHEN classe_1_texte <> '' THEN classe_1_code 
							WHEN classe_2_texte <> '' THEN classe_2_code  
							WHEN classe_3_texte <> '' THEN classe_3_code  
							WHEN classe_4_texte <> '' THEN classe_4_code  
							WHEN classe_5_texte <> '' THEN classe_5_code 
							WHEN classe_6_texte <> '' THEN classe_6_code 
							ELSE compte_general_numero 
						END, 
						arbre_classe_1_texte = 
						CASE  
							WHEN classe_1_texte <> '' THEN classe_1_texte  
							WHEN classe_2_texte <> '' THEN classe_2_texte  
							WHEN classe_3_texte <> '' THEN classe_3_texte 
							WHEN classe_4_texte <> '' THEN classe_4_texte 
							WHEN classe_5_texte <> '' THEN classe_5_texte 
							WHEN classe_6_texte <> '' THEN classe_6_texte 
							ELSE compte_general_texte 
						END ;
				
				
				
				UPDATE compta.t_comptes_c 
						SET  
						arbre_classe_2_id = 
						CASE  
							WHEN classe_2_texte <> '' AND arbre_classe_1_code <> classe_2_code THEN classe_2_id  
							WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code THEN classe_3_id  
							WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code THEN classe_4_id  
							WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code THEN classe_5_id  
							WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code THEN classe_6_id  
							ELSE compte_general_id  
						END, 
						arbre_classe_2_code = 
						CASE  
							WHEN classe_2_texte <> '' AND arbre_classe_1_code <> classe_2_code THEN classe_2_code 
							WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code THEN classe_3_code 
							WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code THEN classe_4_code 
							WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code THEN classe_5_code  
							WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code THEN classe_6_code 
							ELSE compte_general_numero 
						END, 
						arbre_classe_2_texte = 
						CASE  
							WHEN classe_2_texte <> '' AND arbre_classe_1_code <> classe_2_code THEN classe_2_texte 
							WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code THEN classe_3_texte 
							WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code THEN classe_4_texte 
							WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code THEN classe_5_texte 
							WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code THEN classe_6_texte 
							ELSE compte_general_texte 
						END 
						WHERE arbre_classe_1_code <> compte_general_numero  ;
				
				


				UPDATE compta.t_comptes_c 
						SET  
						arbre_classe_3_id = 
						CASE  
							WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code AND arbre_classe_2_code <> classe_3_code THEN classe_3_id  
							WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code THEN classe_4_id  
							WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code THEN classe_5_id  
							WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code THEN classe_6_id  
							ELSE compte_general_id
						END, 
						arbre_classe_3_code = 
						CASE  
							WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code AND arbre_classe_2_code <> classe_3_code THEN classe_3_code 
							WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code THEN classe_4_code  
							WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code THEN classe_5_code  
							WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code THEN classe_6_code 
							ELSE compte_general_numero 
						END, 
						arbre_classe_3_texte = 
						CASE  
							WHEN classe_3_texte <> '' AND arbre_classe_1_code <> classe_3_code AND arbre_classe_2_code <> classe_3_code THEN classe_3_texte 
							WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code THEN classe_4_texte  
							WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code THEN classe_5_texte  
							WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code THEN classe_6_texte 
							ELSE compte_general_texte 
						END 
						WHERE arbre_classe_1_code <> compte_general_numero AND arbre_classe_2_code <> compte_general_numero ;
				
				


				UPDATE compta.t_comptes_c 
						SET  
						arbre_classe_4_id = 
						CASE  
							WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code AND arbre_classe_3_code <> classe_4_code THEN classe_4_id  
							WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code THEN classe_5_id  
							WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code THEN classe_6_id  
							ELSE compte_general_id  
						END, 
						arbre_classe_4_code = 
						CASE  
							WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code AND arbre_classe_3_code <> classe_4_code THEN classe_4_code  
							WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code THEN classe_5_code  
							WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code THEN classe_6_code  
							ELSE compte_general_numero 
						END, 
						arbre_classe_4_texte = 
						CASE  
							WHEN classe_4_texte <> '' AND arbre_classe_1_code <> classe_4_code AND arbre_classe_2_code <> classe_4_code AND arbre_classe_3_code <> classe_4_code THEN classe_4_texte  
							WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code THEN classe_5_texte  
							WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code THEN classe_6_texte  
							ELSE compte_general_texte 
						END 
						WHERE arbre_classe_1_code <> compte_general_numero AND arbre_classe_2_code <> compte_general_numero AND arbre_classe_3_code <> compte_general_numero ;
				
				


				UPDATE compta.t_comptes_c 
						SET  
						arbre_classe_5_id = 
						CASE  
							WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code AND arbre_classe_4_code <> classe_5_code THEN classe_5_id  
							WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_id  
							ELSE compte_general_id
						END, 
						arbre_classe_5_code = 
						CASE  
							WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code AND arbre_classe_4_code <> classe_5_code THEN classe_5_code  
							WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_code  
							ELSE compte_general_numero 
						END, 
						arbre_classe_5_texte = 
						CASE  
							WHEN classe_5_texte <> '' AND arbre_classe_1_code <> classe_5_code AND arbre_classe_2_code <> classe_5_code AND arbre_classe_3_code <> classe_5_code AND arbre_classe_4_code <> classe_5_code THEN classe_5_texte 
							WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_texte  
							ELSE compte_general_texte 
						END 
						WHERE arbre_classe_1_code <> compte_general_numero AND arbre_classe_2_code <> compte_general_numero AND arbre_classe_3_code <> compte_general_numero AND arbre_classe_4_code <> compte_general_numero ;
				
				


				UPDATE compta.t_comptes_c 
						SET  
						arbre_classe_6_id = 
						CASE  
							WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_id  
							ELSE compte_general_id
						END, 
						arbre_classe_6_code = 
						CASE  
							WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_code 
							ELSE compte_general_numero 
						END, 
						arbre_classe_6_texte = 
						CASE  
							WHEN classe_6_texte <> '' AND arbre_classe_1_code <> classe_6_code AND arbre_classe_2_code <> classe_6_code AND arbre_classe_3_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code AND arbre_classe_4_code <> classe_6_code THEN classe_6_texte 
							ELSE compte_general_texte 
						END 
						WHERE arbre_classe_1_code <> compte_general_numero AND arbre_classe_2_code <> compte_general_numero AND arbre_classe_3_code <> compte_general_numero AND arbre_classe_4_code <> compte_general_numero AND arbre_classe_5_code <> compte_general_numero ;
				
				
				

				UPDATE compta.t_comptes_c 
						SET  
						arbre_classe_7_id = compte_general_id,  
						arbre_classe_7_code = compte_general_numero, 
						arbre_classe_7_texte = compte_general_texte 
						WHERE arbre_classe_1_code <> numero 
							AND arbre_classe_2_code <> compte_general_numero 
							AND arbre_classe_3_code <> compte_general_numero 
							AND arbre_classe_4_code <> compte_general_numero 
							AND arbre_classe_5_code <> compte_general_numero 
							AND arbre_classe_6_code <> compte_general_numero ;
							
							
							
				SELECT compta.cti_update_schema_classes('*ALL');

			]]></sqlcmd>

        </NODE>

        <NODE label="Poles">
            <sqlcmd><![CDATA[
				SELECT compta.cti_reorganize_pole();
			]]></sqlcmd>
        </NODE>

        <NODE label="Controle chiffrier">
            <sqlcmd><![CDATA[
				SELECT compta.cti_reorganize_controle_chiffrier();
			]]></sqlcmd>
        </NODE>

        <NODE label="Référencement paramètres">

            <sqlcmd><![CDATA[
			
				TRUNCATE compta.p_mois_comptables;
					INSERT INTO compta.p_mois_comptables (mois_comptable, texte, exercice_comptable, annee, mois, texte_court, exercice_mois_comptable_1) 
					SELECT mois, texte, exercice_comptable, annee, numero_mois, texte_court, exercice_mois_comptable_1 
					FROM base.p_calendrier_mois 
					WHERE mois not in (select mois_comptable from compta.p_mois_comptables) 
					AND mois IN (select mois_comptable from compta.p_historique_ecritures);

				
				TRUNCATE compta.p_oids;

				
				INSERT INTO compta.p_oids (code_table, oid) 
					SELECT 'journaux_c', journal_id 
					FROM compta.p_historique_ecritures_total 
					WHERE clinique_honoraire = 'C' AND journal_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'journaux_c')
					GROUP BY 1,2;
				
				INSERT INTO compta.p_oids (code_table, oid)
					SELECT 'journaux_h', journal_id 
					FROM compta.p_historique_ecritures_total 
					WHERE clinique_honoraire = 'H' AND journal_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'journaux_h')
					GROUP BY 1,2;
				
				
				INSERT INTO compta.p_oids (code_table, oid) 
					SELECT 'comptes_c', compte_id 
					FROM compta.p_historique_ecritures_total
					WHERE clinique_honoraire = 'C' AND compte_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'comptes_c') 
					GROUP BY 1,2;
					
				INSERT INTO compta.p_oids (code_table, oid) 
					SELECT 'comptes_c', compte_nonsigne_id 
					FROM compta.p_historique_ecritures_total
					JOIN compta.t_comptes ON compte_id = t_comptes.oid
					WHERE p_historique_ecritures_total.clinique_honoraire = 'C' AND compte_nonsigne_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'comptes_c') 
					GROUP BY 1,2;
					
				INSERT INTO compta.p_oids (code_table, oid) 
					SELECT 'comptes_budget_c', compte_budget_id 
					FROM compta.p_historique_ecritures_total
					WHERE clinique_honoraire = 'C' 
					AND compte_budget_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'comptes_budget_c')
					GROUP BY 1,2;
				
				
				INSERT INTO compta.p_oids (code_table, oid) 
					SELECT 'comptes_h', compte_id 
					FROM compta.p_historique_ecritures_total
					WHERE clinique_honoraire = 'H' AND compte_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'comptes_h') 
					GROUP BY 1,2;
				
				
				INSERT INTO compta.p_oids (code_table, oid) 
					SELECT 'comptes_extra_c', compte_extra_id 
					FROM compta.p_historique_ecritures_total
					WHERE clinique_honoraire = 'C' 
					AND compte_extra_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'comptes_extra_c')
					GROUP BY 1,2;
				
				
				INSERT INTO compta.p_oids (code_table, oid) 
					SELECT 'comptes_extra_h', compte_extra_id 
					FROM compta.p_historique_ecritures_total
					WHERE clinique_honoraire = 'H' 
					AND compte_extra_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'comptes_extra_h')
					GROUP BY 1,2;
					
				INSERT INTO compta.p_oids (code_table, oid) 
					SELECT 'comptes_budget_c', compte_budget_id 
					FROM compta.p_historique_ecritures_total
					WHERE clinique_honoraire = 'C' 
					AND compte_budget_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'comptes_budget_c')
					GROUP BY 1,2;
				
				
				INSERT INTO compta.p_oids (code_table, oid) 
					SELECT 'types_compta_c', type_compta_id 
					FROM compta.v_historique_ecritures_total_1 
					WHERE clinique_honoraire = 'C' 
					AND type_compta_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'types_compta_c')
					GROUP BY 1,2;
				
				
				INSERT INTO compta.p_oids (code_table, oid) 
					SELECT 'types_compta_h', type_compta_id 
					FROM compta.v_historique_ecritures_total_1 
					WHERE clinique_honoraire = 'H' 
					AND type_compta_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'types_compta_h')
					GROUP BY 1,2;
				
				
				INSERT INTO compta.p_oids (code_table, oid) 
					SELECT 'types_compta_extra_c', type_compta_extra_id 
					FROM compta.v_historique_ecritures_total_1 
					WHERE clinique_honoraire = 'C' 
					AND type_compta_extra_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'types_compta_extra_c')
					GROUP BY 1,2;
				
				
				INSERT INTO compta.p_oids (code_table, oid) 
					SELECT 'types_compta_extra_h', type_compta_extra_id 
					FROM compta.v_historique_ecritures_total_1 
					WHERE clinique_honoraire = 'H' 
					AND type_compta_extra_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'types_compta_extra_h')
					GROUP BY 1,2;
				
				
				INSERT INTO compta.p_oids (code_table, oid)
					SELECT 'sections_analytiques_c', section_analytique_id 
					FROM compta.p_historique_ecritures_total 
					WHERE clinique_honoraire = 'C' 
					AND section_analytique_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'sections_analytiques_c')
					GROUP BY 1,2;
					
				INSERT INTO compta.p_oids (code_table, oid)
					SELECT 'sections_analytiques_2_c', section_analytique_2_id 
					FROM compta.p_historique_ecritures_total 
					WHERE clinique_honoraire = 'C' 
					AND section_analytique_2_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'sections_analytiques_2_c')
					GROUP BY 1,2;

				INSERT INTO compta.p_oids (code_table, oid)
					SELECT 'sections_analytiques_3_c', section_analytique_3_id 
					FROM compta.p_historique_ecritures_total 
					WHERE clinique_honoraire = 'C' 
					AND section_analytique_3_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'sections_analytiques_3_c')
					GROUP BY 1,2;

				INSERT INTO compta.p_oids (code_table, oid)
					SELECT 'sections_analytiques_4_c', section_analytique_4_id 
					FROM compta.p_historique_ecritures_total 
					WHERE clinique_honoraire = 'C' 
					AND section_analytique_4_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'sections_analytiques_4_c')
					GROUP BY 1,2;

				INSERT INTO compta.p_oids (code_table, oid)
					SELECT 'sections_analytiques_5_c', section_analytique_5_id 
					FROM compta.p_historique_ecritures_total 
					WHERE clinique_honoraire = 'C' 
					AND section_analytique_5_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'sections_analytiques_5_c')
					GROUP BY 1,2;

				INSERT INTO compta.p_oids (code_table, oid)
					SELECT 'sections_analytiques_6_c', section_analytique_6_id 
					FROM compta.p_historique_ecritures_total 
					WHERE clinique_honoraire = 'C' 
					AND section_analytique_6_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'sections_analytiques_6_c')
					GROUP BY 1,2;
                    
                INSERT INTO compta.p_oids (code_table, oid)
					SELECT 'sections_analytiques_7_c', section_analytique_7_id 
					FROM compta.p_historique_ecritures_total 
					WHERE clinique_honoraire = 'C' 
					AND section_analytique_7_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'sections_analytiques_7_c')
					GROUP BY 1,2;
                    
                INSERT INTO compta.p_oids (code_table, oid)
					SELECT 'sections_analytiques_8_c', section_analytique_8_id 
					FROM compta.p_historique_ecritures_total 
					WHERE clinique_honoraire = 'C' 
					AND section_analytique_8_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'sections_analytiques_8_c')
					GROUP BY 1,2;
                    
                INSERT INTO compta.p_oids (code_table, oid)
					SELECT 'sections_analytiques_9_c', section_analytique_9_id 
					FROM compta.p_historique_ecritures_total 
					WHERE clinique_honoraire = 'C' 
					AND section_analytique_9_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'sections_analytiques_9_c')
					GROUP BY 1,2;

				INSERT INTO compta.p_oids (code_table, oid)
					SELECT 'sections_analytiques_c', section_analytique_3_id 
					FROM compta.p_historique_ecritures_total 
					WHERE clinique_honoraire = 'C' 
					AND section_analytique_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'sections_analytiques_c')
					GROUP BY 1,2;
					
				INSERT INTO compta.p_oids (code_table, oid)
					SELECT 'sections_analytiques_c', section_analytique_4_id 
					FROM compta.p_historique_ecritures_total 
					WHERE clinique_honoraire = 'C' 
					AND section_analytique_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'sections_analytiques_c')
					GROUP BY 1,2;
					
				INSERT INTO compta.p_oids (code_table, oid)
					SELECT 'sections_analytiques_c', section_analytique_5_id 
					FROM compta.p_historique_ecritures_total 
					WHERE clinique_honoraire = 'C' 
					AND section_analytique_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'sections_analytiques_c')
					GROUP BY 1,2;
				
				INSERT INTO compta.p_oids (code_table, oid) 
					SELECT 'partenaires_c', partenaire_id 
					FROM compta.p_historique_ecritures_total 
					WHERE clinique_honoraire = 'C' 
					AND partenaire_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'partenaires_c')
					GROUP BY 1,2;
				
				INSERT INTO compta.p_oids (code_table, oid) 
					SELECT 'partenaires_h', partenaire_id 
					FROM compta.p_historique_ecritures_total 
					WHERE clinique_honoraire = 'H' 
					AND partenaire_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'partenaires_h')
					GROUP BY 1,2;
				
				
				INSERT INTO compta.p_oids (code_table, oid) 
					SELECT 'sites_c', site_id 
					FROM compta.p_historique_ecritures_total 
					WHERE clinique_honoraire = 'C' 
					AND site_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'sites_c')
					GROUP BY 1,2;
				
				
				INSERT INTO compta.p_oids (code_table, oid) 
					SELECT 'sites_h', site_id 
					FROM compta.p_historique_ecritures_total 
					WHERE clinique_honoraire = 'H' 
					AND site_id NOT IN (SELECT oid FROM compta.p_oids WHERE code_table = 'sites_h')
					GROUP BY 1,2;
				
				
				
				SELECT compta.cti_update_schema_classes('*ALL');

				
			]]></sqlcmd>
        </NODE>

        <NODE label="Mise à jour de la table Divers">
            <sqlcmd><![CDATA[

                -- Initialisation mois en cours/mois clôturé (NOW/NOWCLOTURE) lorsque pas déjà renseigné lors de l'import.
                SELECT compta.cti_now('NOW','FORCE');
                SELECT compta.cti_now('NOWCLOTURE','FORCE');
                
            ]]></sqlcmd>
        </NODE>

    </NODE>

    <NODE name="VACUUM" label="REORGANISATION BASE DE DONNEES">

        <condition><![CDATA[
			"[MOISMODIFIES]" != "0"
		]]></condition>

        <NODE label="Réorganisation tables">

            <sqlcmd><![CDATA[
			
				VACUUM FULL ANALYSE compta.t_comptes;
				REINDEX TABLE compta.t_comptes;
				VACUUM FULL ANALYSE compta.t_comptes_c;
				VACUUM ANALYSE compta.t_classes_comptes;
				REINDEX TABLE compta.t_classes_comptes;
				VACUUM ANALYSE compta.p_chiffrier_comptable;
				VACUUM ANALYSE compta.p_ecriture_fournisseur;
				VACUUM FULL ANALYSE compta.p_historique_ecritures;
				VACUUM ANALYSE compta.t_rapport_group;
				VACUUM ANALYSE compta.t_rapports;
				VACUUM ANALYSE compta.t_sites;

			]]></sqlcmd>
        </NODE>

        <NODE label="Vide cache">
            <sqlcmd><![CDATA[
			
				SELECT cti_cache_reload as log from cache.cti_cache_reload('iCTI_compta', true);
				
			]]></sqlcmd>
        </NODE>


    </NODE>

    <NODE name="RAZ" label="RAZ BASE">

        <NODE label="Nettoyage des tables">
            <sqlcmd><![CDATA[
			
				
			]]></sqlcmd>
        </NODE>

    </NODE>


</ROOT>
