* Copyright (C) 2004 Laurent Destailleur * Copyright (C) 2004 Benoit Mortier * Copyright (C) 2004 Sebastien Di Cintio * Copyright (C) 2004 Benoit Mortier * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * $Id$ * $Source$ */ class Form { var $db; var $errorstr; function Form($DB) { $this->db = $DB; return 1; } /* * \brief Retourne la liste déroulante des départements/province/cantons * avec un affichage avec rupture sur le pays * \remarks La cle de la liste est le code (il peut y avoir plusieurs entrée pour * un code donnée mais dans ce cas, le champ pays et lang diffère). * Ainsi les liens avec les départements se font sur un département * independemment de nom som. */ function select_departement($selected='',$htmlname='departement_id') { // On recherche les départements/cantons/province active d'une region et pays actif $sql = "SELECT d.rowid, d.code_departement as code , d.nom, d.active, p.libelle as libelle_pays, p.code as code_pays FROM "; $sql .= MAIN_DB_PREFIX ."c_departements as d, ".MAIN_DB_PREFIX."c_regions as r,".MAIN_DB_PREFIX."c_pays as p"; $sql .= " WHERE d.fk_region=r.code_region and r.fk_pays=p.rowid"; $sql .= " AND d.active = 1 AND r.active = 1 AND p.active = 1 "; $sql .= "ORDER BY code_pays, code ASC"; if ($this->db->query($sql)) { print ''; } else { dolibarr_print_error($this->db); } } /* * \brief Retourne la liste déroulante des regions actives dont le pays est actif * \remarks La cle de la liste est le code (il peut y avoir plusieurs entrée pour * un code donnée mais dans ce cas, le champ pays et lang diffère). * Ainsi les liens avec les regions se font sur une region independemment * de nom som. */ function select_region($selected='',$htmlname='region_id') { $sql = "SELECT r.rowid, r.code_region as code, r.nom as libelle, r.active, p.libelle as libelle_pays FROM ".MAIN_DB_PREFIX."c_regions as r, ".MAIN_DB_PREFIX."c_pays as p"; $sql .= " WHERE r.fk_pays=p.rowid AND r.active = 1 and p.active = 1 ORDER BY libelle_pays, libelle ASC"; if ($this->db->query($sql)) { print ''; } else { dolibarr_print_error($this->db); } } /* * \brief Retourne la liste déroulante des pays actifs * */ function select_pays($selected='',$htmlname='pays_id') { $sql = "SELECT rowid, libelle, active FROM ".MAIN_DB_PREFIX."c_pays"; $sql .= " WHERE active = 1 ORDER BY libelle ASC;"; if ($this->db->query($sql)) { print ''; } } /* * \brief Retourne la liste déroulante des langues disponibles * \param */ function select_lang($selected='',$htmlname='lang_id') { global $langs; $langs_available=$langs->get_available_languages(); print ''; } /* * Retourne la liste déroulante des sociétés * */ function select_societes($selected='',$htmlname='soc_id') { // On recherche les societes $sql = "SELECT s.idp, s.nom FROM "; $sql .= MAIN_DB_PREFIX ."societe as s "; $sql .= "ORDER BY nom ASC"; if ($this->db->query($sql)) { print ''; } else { dolibarr_print_error($this->db); } } /* * Retourne la liste déroulante des contacts d'une société donnée * */ function select_contacts($socid,$selected='',$htmlname='contactid') { // On recherche les societes $sql = "SELECT s.idp, s.name, s.firstname FROM "; $sql .= MAIN_DB_PREFIX ."socpeople as s"; $sql .= " WHERE fk_soc=".$socid; $sql .= " ORDER BY s.name ASC"; if ($this->db->query($sql)) { print ''; } else { dolibarr_print_error($this->db); } } /* * Retourne le nom d'un pays * */ function pays_name($id) { $sql = "SELECT rowid, libelle FROM ".MAIN_DB_PREFIX."c_pays"; $sql .= " WHERE rowid=$id"; if ($this->db->query($sql)) { $num = $this->db->num_rows(); if ($num) { $obj = $this->db->fetch_object(0); return $obj->libelle; } else { return "Non définit"; } } } /* * Retourne la liste déroulante des civilite actives * */ function select_civilite($selected='') { global $conf; $sql = "SELECT rowid, code, civilite, active FROM ".MAIN_DB_PREFIX."c_civilite"; $sql .= " WHERE active = 1"; $sql .= " AND lang='".$conf->langage."'"; if ($this->db->query($sql)) { print ''; } else { dolibarr_print_error($this->db); } } /* * Retourne la liste déroulante des formes juridiques * avec un affichage avec rupture sur le pays * */ function select_forme_juridique($selected='') { // On recherche les formes juridiques actives des pays actifs $sql = "SELECT f.rowid, f.code as code , f.libelle as nom, f.active, p.libelle as libelle_pays, p.code as code_pays FROM llx_c_forme_juridique as f, llx_c_pays as p"; $sql .= " WHERE f.fk_pays=p.rowid"; $sql .= " AND f.active = 1 AND p.active = 1 ORDER BY code_pays, code ASC"; if ($this->db->query($sql)) { print ''; } else { dolibarr_print_error($this->db); } } /* * * * */ function form_confirm($page, $title, $question, $action) { global $langs; print '
'; print ''; print ''; print ''; print '\n"; print ''; print '
'.$title.'
'.$question.''; $this->selectyesno("confirm","no"); print "
'; print "
\n"; } /* * * */ function select_tva($name='', $defaulttx = '') { if (! strlen(trim($name))) { $name = "tauxtva"; } $file = DOL_DOCUMENT_ROOT . "/conf/tva.local.php"; if (is_readable($file)) { include $file; } else { $txtva[0] = '19.6'; $txtva[1] = '5.5'; $txtva[2] = '0'; } if ($defaulttx == '') { $defaulttx = $txtva[0]; } $taille = sizeof($txtva); print ''; } /* * Affiche zone de selection de date * Liste deroulante pour les jours, mois, annee et eventuellement heurs et minutes * Les champs sont présélectionnées avec: * - La date set_time (timestamps ou date au format YYYY-MM-DD ou YYYY-MM-DD HH:MM) * - La date du jour si set_time vaut '' * - Aucune date (champs vides) si set_time vaut -1 */ function select_date($set_time='', $prefix='re', $h = 0, $m = 0, $empty=0) { if (! $set_time && ! $empty) { $set_time = time(); } $strmonth[1] = "Janvier"; $strmonth[2] = "Février"; $strmonth[3] = "Mars"; $strmonth[4] = "Avril"; $strmonth[5] = "Mai"; $strmonth[6] = "Juin"; $strmonth[7] = "Juillet"; $strmonth[8] = "Août"; $strmonth[9] = "Septembre"; $strmonth[10] = "Octobre"; $strmonth[11] = "Novembre"; $strmonth[12] = "Décembre"; # Analyse de la date de préselection if (eregi('^([0-9]+)\-([0-9]+)\-([0-9]+)\s?([0-9]+)?:?([0-9]+)?',$set_time,$reg)) { // Date au format 'YYYY-MM-DD' ou 'YYYY-MM-DD HH:MM:SS' $syear = $reg[1]; $smonth = $reg[2]; $sday = $reg[3]; $shour = $reg[4]; $smin = $reg[5]; } else { // Date est un timestamps $syear = date("Y", $set_time); $smonth = date("n", $set_time); $sday = date("d", $set_time); $shour = date("H", $set_time); $smin = date("i", $set_time); } print '"; print '"; if ($empty || $set_time == -1) { print ''; } else { print '\n"; } if ($h) { print 'H\n"; if ($m) { print 'M\n"; } } } /* * * */ function select($name, $sql, $id='') { $result = $this->db->query($sql); if ($result) { print '"; } else { print $this->db->error(); } } /*! \brief Affiche un select à partir d'un tableau \param nom de la zone select \param tableau de key+valeur \param key présélectionnée \param 1 si il faut un valeur "-" dans la liste, 0 sinon \param 1 pour afficher la key dans la valeur "[key] value" */ function select_array($name, $array, $id='', $empty=0, $key_libelle=0) { print '"; } /* * Renvoie la chaîne de caractère décrivant l'erreur * * */ function error() { return $this->errorstr; } /* * * Yes/No * */ function selectyesno($name,$value='') { global $langs; print ''; } /* * * Yes/No * */ function selectyesnonum($name,$value='') { global $langs; print ''; } /* * * Checkbox * */ function checkbox($name,$checked=0,$value=1) { if ($checked==1){ print "\n"; }else{ print "\n"; } } } ?>