id_entite = intval($id_entite); if ($this->id_entite) { $this->load(); } } // charge une entité à partir de la base. public function load(){ $q = "select * from entites where id_entite = '".$this->id_entite."' "; $r = pmb_mysql_query($q); $obj = pmb_mysql_fetch_object($r); $this->type_entite = $obj->type_entite; $this->num_bibli = $obj->num_bibli; $this->raison_sociale = $obj->raison_sociale; $this->commentaires = $obj->commentaires; $this->siret = $obj->siret; $this->naf = $obj->naf; $this->rcs = $obj->rcs; $this->tva = $obj->tva; $this->num_cp_client = $obj->num_cp_client; $this->num_cp_compta = $obj->num_cp_compta; $this->site_web = $obj->site_web; $this->logo = $obj->logo; $this->autorisations = $obj->autorisations; $this->num_frais = $obj->num_frais; $this->num_paiement = $obj->num_paiement; } // enregistre une entité en base. public function save(){ if( $this->raison_sociale == '' ) die ("Erreur de création entités"); //Nettoyage des valeurs en entrée $this->raison_sociale = clean_string($this->raison_sociale); $this->siret = clean_string($this->siret); $this->naf = clean_string($this->naf); $this->rcs = clean_string($this->rcs); $this->tva = clean_string($this->tva); $this->num_cp_client = clean_string($this->num_cp_client); $this->num_cp_compta = clean_string($this->num_cp_compta); $this->site_web = clean_string($this->site_web); $this->logo = clean_string($this->logo); if($this->id_entite) { $q = "update entites set type_entite = '".$this->type_entite."', num_bibli = '".$this->num_bibli."', raison_sociale = '".$this->raison_sociale."', commentaires = '".$this->commentaires."', "; $q.= "siret = '".$this->siret."', naf = '".$this->naf."', rcs = '".$this->rcs."', tva = '".$this->tva."', num_cp_client = '".$this->num_cp_client."', "; $q.= "num_cp_compta = '".$this->num_cp_compta."', site_web = '".$this->site_web."', logo = '".$this->logo."', autorisations = '".$this->autorisations."', "; $q.= "num_frais = '".$this->num_frais."', num_paiement = '".$this->num_paiement."', "; $q.= "index_entite = ' ".strip_empty_words($this->raison_sociale)." '"; $q.= "where id_entite = '".$this->id_entite."' "; pmb_mysql_query($q); } else { $q = "insert into entites set type_entite = '".$this->type_entite."', num_bibli = '".$this->num_bibli."', raison_sociale = '".$this->raison_sociale."', commentaires = '".$this->commentaires."', "; $q.= "siret = '".$this->siret."', naf = '".$this->naf."', rcs = '".$this->rcs."', tva = '".$this->tva."', num_cp_client = '".$this->num_cp_client."', "; $q.= "num_cp_compta = '".$this->num_cp_compta."', site_web = '".$this->site_web."', logo = '".$this->logo."' , autorisations = '".$this->autorisations."', "; $q.= "num_frais = '".$this->num_frais."', num_paiement = '".$this->num_paiement."', "; $q.= "index_entite = ' ".strip_empty_words($this->raison_sociale)." '"; pmb_mysql_query($q); $this->id_entite = pmb_mysql_insert_id(); } } //supprime une entité de la base public function delete($id_entite= 0) { if(!$id_entite) $id_entite = $this->id_entite; $q = "delete from entites where id_entite = '".$id_entite."' "; pmb_mysql_query($q); $q = "delete from coordonnees where num_entite = '".$id_entite."' "; pmb_mysql_query($q); $q = "delete from offres_remises where num_fournisseur = '".$id_entite."' "; pmb_mysql_query($q); $q = "update abts_abts set fournisseur='0' where fournisseur = '".$id_entite."' "; pmb_mysql_query($q); } //vérifie l'existence d'une entité en base à partir de son identifiant public static function exists($id_entite= 0) { $q = "SELECT count(1) from entites where id_entite = '".$id_entite."' "; $r = pmb_mysql_query($q); return pmb_mysql_result($r, 0, 0); } //vérifie l'existence d'un fournisseur en base a partir de son identifiant public static function is_a_fournisseur_id($id_entite= 0) { $id_entite = intval($id_entite); if (!$id_entite) { return 0; } $q = "SELECT count(1) from entites where id_entite = '".$id_entite."' and type_entite=".TYP_ENT_FOU; $r = pmb_mysql_query($q); return pmb_mysql_result($r, 0, 0); } //vérifie l'existence d'un etablissement en base a partir de son identifiant public static function is_a_etablissement_id($id_entite= 0) { $id_entite = intval($id_entite); if (!$id_entite) { return 0; } $q = "SELECT count(1) from entites where id_entite = '".$id_entite."' and type_entite=".TYP_ENT_ETAB; $r = pmb_mysql_query($q); return pmb_mysql_result($r, 0, 0); } //vérifie l'existence d'un fournisseur en base a partir de sa raison sociale et de l'etablissement de rattachement public static function is_a_fournisseur_raison_sociale($raison_sociale = '', $id_etablissement = 0 , $id_fournisseur = 0) { $id_etablissement = intval($id_etablissement); $id_fournisseur = intval($id_fournisseur); $q = "SELECT count(1) from entites where raison_sociale = '".addslashes($raison_sociale)."' and num_bibli = '".$id_etablissement."' and type_entite=".TYP_ENT_FOU; if($id_fournisseur){ $q.=" and id_entite != '".$id_fournisseur."'"; } $r = pmb_mysql_query($q); return pmb_mysql_result($r, 0, 0); } //vérifie l'existence d'une entité en base à partir de sa raison sociale public static function exists_rs($raison_sociale= 0, $numero_bibli=0, $id_entite = 0) { //Contrainte à appliquer : /* * type= 1 -> etablissement * type = 0 -> fournisseur * Pas de fournisseur avec la même raison sociale que l'établissement * Pas deux fournisseurs avec la même raison sociale dans un établissement */ $q = "select count(1) from entites where raison_sociale = '".$raison_sociale."' and num_bibli='".$numero_bibli."'"; if($id_entite !== 0){ $q.=" and id_entite != '".$id_entite."'"; } $r = pmb_mysql_query($q); return pmb_mysql_result($r, 0, 0); } //optimization de la table entites public function optimize() { $opt = pmb_mysql_query('OPTIMIZE TABLE entites'); return $opt; } //Retourne une requete pour liste des bibliotheques //si user!=0 la requete est limitee aux bibliotheques accessibles par celui-ci public static function list_biblio($user=0) { $q = "select * from entites where type_entite = '1' "; if ($user) $q.= "and autorisations like('% ".$user." %') "; $q.= "order by raison_sociale "; return $q; } //Retourne un tableau id_entite=>['id_entite'=>id_entite , 'raison sociale' => raison_sociale] public static function get_etablissements_by_user($id_user = 0, $renew = FALSE) { $id_user = intval($id_user); static::get_all_etablissements($renew); if( $id_user && !isset(static::$etablissements['by_user'][$id_user]) ) { return []; } if( $id_user && isset(static::$etablissements['by_user'][$id_user]) ) { return static::$etablissements['by_user'][$id_user]; } return static::$etablissements['by_id']; } protected static function get_all_etablissements($renew=FALSE) { if(is_null(static::$etablissements) || $renew) { static::$etablissements = ['by_id'=>[], 'by_user'=>[]]; $q = "select id_entite, raison_sociale, autorisations from entites where type_entite = ".TYP_ENT_ETAB." order by raison_sociale"; $r = pmb_mysql_query($q); if(pmb_mysql_num_rows($r)) { while($row = pmb_mysql_fetch_assoc($r)){ $autorisations = explode(' ', trim($row['autorisations'])); static::$etablissements['by_id'][$row['id_entite']] = [ 'id_entite' => $row['id_entite'], 'raison_sociale' => $row['raison_sociale'], ]; if(count($autorisations)) { foreach($autorisations as $id_user) { static::$etablissements['by_user'][$id_user][$row['id_entite']] = [ 'id_entite' => $row['id_entite'], 'raison_sociale' => $row['raison_sociale'], ]; } } } } } return static::$etablissements; } //Retourne un selecteur html avec la liste des etablissements public static function get_hmtl_select_etablissements($id_user=0, $selected=0, $sel_all=FALSE, $sel_attr=array()) { global $msg,$charset; $id_user = intval($id_user); $selected = intval($selected); $etablissements = static::get_etablissements_by_user($id_user); if(!count($etablissements)) { return ''; } $sel=""; return $sel; } //Retourne une checkbox "Tous les etablissements" public static function get_html_checkbox_all_etablissements($checked=0, $chk_attr=array()) { global $msg, $charset; $checked = intval($checked); $chk = "$val) { $chk.= "$attr='".$val."' "; } } if($checked) { $chk.= "checked='checked' "; } $chk.= ">"; $chk.= "