'';"; $oids = ""; $result = $database->exec($sqlcmd); if ($result != false) { $record = $database->nextRecordInto(); if ($record != FALSE) { $oids = trim($record[0]); } } if ($oids == "") { $oids = "0"; } } $sqlScript = ""; // Entetes des controles $sqlScript = $sqlScript . " DROP TABLE IF EXISTS w_dbsetup;"; $sqlScript = $sqlScript . " CREATE TEMP TABLE w_dbsetup ( code text, texte text, texte_court text, texte_abrege text, description text, is_cti text, is_datim text, code_datim text, date_validite_debut text, date_validite_fin text, is_hide text, is_global text, gravite_id text );"; $sqlcmd = "SELECT 'INSERT INTO w_dbsetup VALUES(' || array_to_string(ARRAY[ quote_literal(code), quote_literal(texte), quote_literal(COALESCE(texte_court,texte)), quote_literal(COALESCE(texte_abrege,texte_court,texte)), quote_literal(description), quote_literal(COALESCE(is_cti,'0')), quote_literal(COALESCE(is_datim,'0')), quote_literal(COALESCE(code_datim,0)::text), quote_literal(COALESCE(date_validite_debut,'20100101'::date)::text), quote_literal(COALESCE(date_validite_fin,'20991231'::date)::text), quote_literal(COALESCE(is_hide,'0')), quote_literal(COALESCE(is_global,'0')), quote_literal(COALESCE(gravite_id,5)::text) ],',') || ');' AS cmd FROM pmsi.t_expert_controle WHERE code <> '' AND oid IN ($oids) ORDER BY code ;"; $result = $database->exec($sqlcmd); if ($result != false) { // lignes $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = $database->nextRecordInto(); if ($record != FALSE) { $ok = TRUE; $r++; $cmd = $record[0]; $sqlScript = $sqlScript . "\r\n\t\t$cmd"; } } } if ($cmd == "") { return "ERREUR. Cette classe ne peux être choisie (Vérifiez le code)"; } $sqlScript = $sqlScript . " UPDATE pmsi.t_expert_controle SET texte = w_dbsetup.texte, texte_court = w_dbsetup.texte_court, texte_abrege = w_dbsetup.texte_abrege, description = w_dbsetup.description, code_datim = w_dbsetup.code_datim::numeric, is_datim = w_dbsetup.is_datim, is_cti = w_dbsetup.is_cti, is_global = w_dbsetup.is_global, date_validite_debut = w_dbsetup.date_validite_debut::date, date_validite_fin = w_dbsetup.date_validite_fin::date FROM w_dbsetup WHERE t_expert_controle.code = w_dbsetup.code AND ( t_expert_controle.texte IS DISTINCT FROM w_dbsetup.texte OR t_expert_controle.texte_court IS DISTINCT FROM w_dbsetup.texte_court OR t_expert_controle.texte_abrege IS DISTINCT FROM w_dbsetup.texte_abrege OR t_expert_controle.description IS DISTINCT FROM w_dbsetup.description OR t_expert_controle.code_datim IS DISTINCT FROM w_dbsetup.code_datim::numeric OR t_expert_controle.is_datim IS DISTINCT FROM w_dbsetup.is_datim OR t_expert_controle.is_cti IS DISTINCT FROM w_dbsetup.is_cti OR t_expert_controle.is_global IS DISTINCT FROM w_dbsetup.is_global OR t_expert_controle.date_validite_debut IS DISTINCT FROM w_dbsetup.date_validite_debut::date OR t_expert_controle.date_validite_fin IS DISTINCT FROM w_dbsetup.date_validite_fin::date ); INSERT INTO pmsi.t_expert_controle( code, texte, texte_court, is_datim, code_datim, date_validite_debut, date_validite_fin, is_global, texte_abrege, description, is_cti, gravite_id, is_hide) SELECT code, texte, texte_court, is_datim, code_datim::numeric, date_validite_debut::date, date_validite_fin::date, is_global, texte_abrege, description, is_cti, 5, '0' FROM w_dbsetup WHERE code NOT IN (SELECT code FROM pmsi.t_expert_controle WHERE code IS NOT NULL); "; // Règles SQL $sqlScript = $sqlScript . " DROP TABLE IF EXISTS w_dbsetup;"; $sqlScript = $sqlScript . " CREATE TEMP TABLE w_dbsetup ( controle_code text, numero text, sqlcmd_where text, sqlcmd_justificatif text );"; $sqlcmd = "SELECT 'INSERT INTO w_dbsetup VALUES(' || array_to_string(ARRAY[ quote_literal(t_expert_controle.code), quote_literal(COALESCE(t_expert_controle_rule.numero,1)::text), quote_literal(COALESCE(t_expert_controle_rule.sqlcmd_where,'')), quote_literal(COALESCE(t_expert_controle_rule.sqlcmd_justificatif,'')) ],',') || ');' AS cmd FROM pmsi.t_expert_controle_rule JOIN pmsi.t_expert_controle ON controle_id = t_expert_controle.oid WHERE t_expert_controle.code <> '' AND t_expert_controle.oid IN ($oids) ORDER BY t_expert_controle.code, t_expert_controle_rule.numero ;"; $result = $database->exec($sqlcmd); if ($result != false) { // lignes $ok = TRUE; while ($ok == TRUE) { $ok = FALSE; $record = $database->nextRecordInto(); if ($record != FALSE) { $ok = TRUE; $r++; $cmd = $record[0]; $sqlScript = $sqlScript . "\r\n\t\t$cmd"; } } } $sqlScript = $sqlScript . " UPDATE pmsi.t_expert_controle_rule SET numero = 1 WHERE numero IS NULL or NUMERO NOT IN (1,2,3); UPDATE pmsi.t_expert_controle_rule SET sqlcmd_where = w_dbsetup.sqlcmd_where, sqlcmd_justificatif = w_dbsetup.sqlcmd_justificatif FROM w_dbsetup JOIN pmsi.t_expert_controle ON t_expert_controle.code = w_dbsetup.controle_code WHERE t_expert_controle_rule.controle_id = t_expert_controle.oid AND t_expert_controle_rule.numero = w_dbsetup.numero::numeric AND ( t_expert_controle_rule.sqlcmd_where IS DISTINCT FROM w_dbsetup.sqlcmd_where OR t_expert_controle_rule.sqlcmd_justificatif IS DISTINCT FROM w_dbsetup.sqlcmd_justificatif ); INSERT INTO pmsi.t_expert_controle_rule ( controle_id, numero, sqlcmd_where, sqlcmd_justificatif ) SELECT t_expert_controle.oid, w_dbsetup.numero::numeric, w_dbsetup.sqlcmd_where, w_dbsetup.sqlcmd_justificatif FROM w_dbsetup JOIN pmsi.t_expert_controle ON t_expert_controle.code = w_dbsetup.controle_code LEFT JOIN pmsi.t_expert_controle_rule ON t_expert_controle_rule.controle_id = t_expert_controle.oid AND t_expert_controle_rule.numero = w_dbsetup.numero::numeric WHERE t_expert_controle_rule.oid IS NULL; "; return $sqlScript; } ?>