"; if ($tableName != "" && $action != "" && $recordNode !== FALSE) { $httpString .= setRecords($database, $tableName, $action, $recordNode); } else { $httpString .= "\n"; $httpString .= "\n"; } //if ($compress64) { //$httpString = compress64($httpString); //} //echo "$httpString"; echo "$httpString"; // DEFINITIONS DE FONCTION /** * * @param Database $db * @param string $tableName * @param string $action * @param object $recordNode */ function setRecords($db, $tableName, $action, $recordNode) { $returnCode = "OK"; $returnTexte = ""; $oid = floatval($recordNode["oid"]); $code = utf8_decode($recordNode["code"]); $texte = utf8_decode($recordNode["texte"]); $texte_court = utf8_decode($recordNode["texte_court"]); $code_original = utf8_decode($recordNode["code_original"]); $rfoids = utf8_decode($recordNode["rfoids"]); // Champs spécifiques t_articles $gere_en_stock = utf8_decode($recordNode["gere_en_stock"]); $cacic_id = floatval($recordNode["cacic_id"]); // Champs spécifiques t_fournisseurs $rfcti = floatval($recordNode["rfcti"]); $fusionner_vers_fournisseur_id = floatval($recordNode["fusionner_vers_fournisseur_id"]); // Champs spécifiques t_reference $import_data = toSQL(utf8_decode($recordNode["import_data"])); //Champs spécifiques à t_type_articles $defaut_selon = utf8_decode($recordNode["defaut_selon"]); $defaut_selon_codes = utf8_decode($recordNode["defaut_selon_codes"]); //Champs spécifiques à t_type_mouvemetns $particularite_inverser_signe = utf8_decode($recordNode["particularite_inverser_signe"]); $sens_force = utf8_decode($recordNode["sens_force"]); //Champs spécifiques à t_divers $valeur = utf8_decode($recordNode["valeur"]); $description = utf8_decode($recordNode["complement"]); // Champts spécifiques aux règles type article cti $priorite = floatval($recordNode["priorite"]); if ($priorite == 0) { $priorite = 5000; } $type_article_cti_id = floatval($recordNode["type_article_cti_id"]); $liste_type_article = toSQL(utf8_decode($recordNode["liste_type_article"])); $liste_compte = toSQL(utf8_decode($recordNode["liste_compte"])); $liste_famille = toSQL(utf8_decode($recordNode["liste_famille"])); $liste_sous_famille = toSQL(utf8_decode($recordNode["liste_sous_famille"])); $liste_categorie = toSQL(utf8_decode($recordNode["liste_categorie"])); $liste_sous_categorie = toSQL(utf8_decode($recordNode["liste_sous_categorie"])); $liste_article = toSQL(utf8_decode($recordNode["liste_article"])); $updatedOids = ""; switch ($action) { case SAVE : $code = toSQL($code); $texte = toSQL($texte); $texte_court = toSQL($texte_court); $code_original = toSQL($code_original); // creation ou mise à jour de la liste if ($oid != -1) { // Oids Impactés if($table_name != 't_divers') { $sqlcmd = "SELECT base.cti_group_concat(oid) AS updatedOids "; $sqlcmd .= "FROM ("; $sqlcmd .= "SELECT oid AS oid FROM eco.$tableName WHERE oid = $oid "; if ($tableName == "t_article_reference_cti") { $sqlcmd .= "UNION "; $sqlcmd .= "SELECT article_reference_cti_id AS oid FROM eco.t_articles WHERE oid::text = ANY (string_to_array('$rfoids',',')) "; } if ($tableName == "t_fournisseur_reference_cti") { $sqlcmd .= "UNION "; $sqlcmd .= "SELECT fournisseur_reference_cti_id AS oid FROM eco.t_fournisseurs WHERE oid::text = ANY (string_to_array('$rfoids',',')) "; } $sqlcmd .= ") subview"; $result = $db->exec($sqlcmd); if ($result != false) { $record = $db->nextRecordAssoc(); if ($record != FALSE) { $updatedOids = toHTML(trim($record['updatedoids'])); } } } // Mise à jour $sqlcmd = "UPDATE eco.$tableName SET "; $sqlcmd .= " code = '$code'"; $sqlcmd .= ",texte = '$texte'"; if ($tableName == "t_articles") { $sqlcmd .= ", gere_en_stock = '$gere_en_stock', article_reference_cacic_id = $cacic_id "; } if ($tableName == "t_fournisseurs") { $sqlcmd .= ", fournisseur_reference_cti_id = $rfcti , fournisseur_reference_cacic_id = $cacic_id, fusionner_vers_fournisseur_id = $fusionner_vers_fournisseur_id "; } if ($tableName == "t_reference_input") { $sqlcmd .= ", import_data = '$import_data' "; } if ($tableName == 't_types_mouvements') { $sqlcmd .= ", particularite_inverser_signe = '$particularite_inverser_signe' "; $sqlcmd .= ", sens_force = '$sens_force' "; } if ($tableName == 't_types_articles') { $sqlcmd .= ", defaut_selon = '$defaut_selon' "; $sqlcmd .= ", defaut_selon_codes = '$defaut_selon_codes' "; } if ($tableName == 't_divers') { $sqlcmd .= ", valeur = '$valeur' "; $sqlcmd .= ", description = '$description' "; $sqlcmd .= "WHERE code = '$code';"; } else { $sqlcmd .= ",texte_court = '$texte_court'"; $sqlcmd .= "WHERE oid = $oid;"; } // References fournisseurs CTI dans fournisseurs if ($tableName == "t_article_reference_cti") { $sqlcmd = "$sqlcmd UPDATE eco.t_articles SET article_reference_cti_id = $oid WHERE oid::text = ANY (string_to_array('$rfoids',','));"; $sqlcmd = "$sqlcmd UPDATE eco.t_articles SET article_reference_cti_id = 0 WHERE article_reference_cti_id = $oid AND oid::text <> ALL (string_to_array('$rfoids',','));"; $sqlcmd = "$sqlcmd UPDATE eco.t_article_reference_cti SET texte_court = texte WHERE texte_court <> texte;"; $sqlcmd = "$sqlcmd UPDATE eco.t_articles SET article_reference_cti_code = t_article_reference_cti.code, article_reference_cti_texte = t_article_reference_cti.texte_court, article_reference_cti_section_id = t_article_reference_cti.section_id, article_reference_cti_section_code = t_article_reference_cti.section_code, article_reference_cti_section_texte = t_article_reference_cti.section_texte FROM eco.t_article_reference_cti WHERE article_reference_cti_id = t_article_reference_cti.oid AND ( article_reference_cti_code IS DISTINCT FROM t_article_reference_cti.code OR article_reference_cti_texte IS DISTINCT FROM t_article_reference_cti.texte_court OR article_reference_cti_section_id IS DISTINCT FROM t_article_reference_cti.section_id OR article_reference_cti_section_code IS DISTINCT FROM t_article_reference_cti.section_code OR article_reference_cti_section_texte IS DISTINCT FROM t_article_reference_cti.section_texte );"; } // References fournisseurs CTI dans fournisseurs if ($tableName == "t_fournisseur_reference_cti") { $sqlcmd = "$sqlcmd UPDATE eco.t_fournisseurs SET fournisseur_reference_cti_id = $oid WHERE oid::text = ANY (string_to_array('$rfoids',','));"; $sqlcmd = "$sqlcmd UPDATE eco.t_fournisseurs SET fournisseur_reference_cti_id = 0 WHERE fournisseur_reference_cti_id = $oid AND oid::text <> ALL (string_to_array('$rfoids',','));"; $sqlcmd = "$sqlcmd UPDATE eco.t_fournisseur_reference_cti SET texte_court = texte WHERE texte_court <> texte;"; $sqlcmd = "$sqlcmd UPDATE eco.t_fournisseurs SET fournisseur_reference_cti_code = t_fournisseur_reference_cti.code, fournisseur_reference_cti_texte = t_fournisseur_reference_cti.texte_court, fournisseur_reference_cti_section_id = t_fournisseur_reference_cti.section_id, fournisseur_reference_cti_section_code = t_fournisseur_reference_cti.section_code, fournisseur_reference_cti_section_texte = t_fournisseur_reference_cti.section_texte FROM eco.t_fournisseur_reference_cti WHERE fournisseur_reference_cti_id = t_fournisseur_reference_cti.oid AND ( fournisseur_reference_cti_code IS DISTINCT FROM t_fournisseur_reference_cti.code OR fournisseur_reference_cti_texte IS DISTINCT FROM t_fournisseur_reference_cti.texte_court OR fournisseur_reference_cti_section_id IS DISTINCT FROM t_fournisseur_reference_cti.section_id OR fournisseur_reference_cti_section_code IS DISTINCT FROM t_fournisseur_reference_cti.section_code OR fournisseur_reference_cti_section_texte IS DISTINCT FROM t_fournisseur_reference_cti.section_texte );"; } // Règles types d'articles CTI if ($tableName == "t_type_article_cti_rule") { $sqlcmd = " UPDATE eco.t_type_article_cti_rule SET priorite = $priorite, texte = '$texte', type_article_cti_id = $type_article_cti_id, liste_type_article = '$liste_type_article', liste_compte = '$liste_compte', liste_famille = '$liste_famille', liste_sous_famille = '$liste_sous_famille', liste_categorie = '$liste_categorie', liste_sous_categorie = '$liste_sous_categorie', liste_article = '$liste_article' WHERE oid = $oid AND ( priorite IS DISTINCT FROM $priorite OR texte IS DISTINCT FROM '$texte' OR type_article_cti_id IS DISTINCT FROM $type_article_cti_id OR liste_type_article IS DISTINCT FROM '$liste_type_article' OR liste_compte IS DISTINCT FROM '$liste_compte' OR liste_famille IS DISTINCT FROM '$liste_famille' OR liste_sous_famille IS DISTINCT FROM '$liste_sous_famille' OR liste_categorie IS DISTINCT FROM '$liste_categorie' OR liste_sous_categorie IS DISTINCT FROM '$liste_sous_categorie' OR liste_article IS DISTINCT FROM '$liste_article' )"; } $result = $db->exec($sqlcmd); if ($db->lastResult) { } else { $updatedOids = ""; $returnCode = "KO"; $returnTexte = "Erreur SQL : $db->lastError"; } } // creation ou mise à jour de la liste if ($oid == -1) { // Règles types d'articles CTI if ($tableName == "t_type_article_cti_rule") { $sqlcmd = " INSERT INTO eco.t_type_article_cti_rule ( texte, priorite, type_article_cti_id, liste_type_article, liste_compte, liste_famille, liste_sous_famille, liste_categorie, liste_sous_categorie, liste_article ) VALUES ( '$texte', $priorite, $type_article_cti_id, '$liste_type_article', '$liste_compte', '$liste_famille', '$liste_sous_famille', '$liste_categorie', '$liste_sous_categorie', '$liste_article' ) "; } $result = $db->exec($sqlcmd); if ($db->lastResult) { } else { $updatedOids = ""; $returnCode = "KO"; $returnTexte = "Erreur SQL : $db->lastError"; } } switch ($tableName) { case "t_divers" : $sqlcmd = "SELECT eco.cti_create_repartition()"; $result = $db->exec($sqlcmd); break; case "t_fournisseurs" : $sqlcmd = "SELECT eco.cti_reorganize_fournisseur()"; $result = $db->exec($sqlcmd); break; } break; case UPDATE : // nothing to do yet break; case COPY : // nothing to do yet break; case DELETE : if ($tableName == "t_type_article_cti_rule") { $sqlcmd = "DELETE FROM eco.t_type_article_cti_rule WHERE oid = $oid"; $result = $db->exec($sqlcmd); } break; case UPLOAD : $tmp_path = "../../../temp"; $code = toSQL($code); $in_file = basename($_FILES['Filedata']['name']); $uploadfile = $tmp_path . "/" . $in_file; if (move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadfile)) { $uploadfile = realpath($tmp_path . "/" . $in_file); $result = $db->exec("SELECT * FROM eco.cti_gen_referentiel_cacic('$code','$uploadfile')"); $record = $db->nextRecordAssoc(); if ($record["cti_gen_referentiel_cacic"] != "OK") { $returnCode = "KO"; $returnTexte = substr($record["cti_gen_referentiel_cacic"],4); } else { } } else { $returnTexte = "Le fichier $importFile n'a pas été téléchargé. Erreur système"; $returnCode = "KO"; } break; case EXEC : if ($tableName == "t_type_article_cti_rule") { $sqlcmd = "SELECT eco.cti_reorganize_type_article_cti()"; } $result = $db->exec($sqlcmd); if ($db->lastResult) { } else { $updatedOids = ""; $returnCode = "KO"; $returnTexte = "Erreur SQL : $db->lastError"; } break; default: // nothing to do yet break; } // Effacement cache erase_cache($db); $httpString = ""; //$httpString = ""; $httpString .= "\n"; return $httpString; } /** * * @param Database $db * @param string eco */ function erase_cache($db) { // Effacer cache ancienne version if ($db->cticache == "true") { $sqlcmd = "SELECT cti_cache_erase as result from cache.cti_cache_erase('iCTI_eco')"; $result = $db->exec($sqlcmd); } // Effacer cache nouvelle version cleanAllCache("iCTI_eco"); } ?>