From 3a8cf17f3c86b81b276653598635cad1a1799fe6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 6 May 2015 23:13:07 +0200 Subject: [PATCH] NEW Can edit list of prospect status for customers/prospects. Add a new entry into dictionary table to manage list fo status. Removed deprecated files. --- dev/ansible/{README => README.md} | 0 htdocs/admin/dict.php | 26 ++- htdocs/comm/card.php | 43 ++--- htdocs/comm/prospect/class/index.html | 0 htdocs/comm/prospect/class/prospect.class.php | 172 ------------------ htdocs/comm/prospect/list.php | 85 +++++---- htdocs/core/boxes/box_prospect.php | 7 +- htdocs/core/lib/company.lib.php | 4 +- htdocs/core/lib/functions.lib.php | 20 +- htdocs/index.php | 4 +- htdocs/langs/en_US/admin.lang | 2 + htdocs/langs/en_US/products.lang | 1 - htdocs/societe/class/client.class.php | 38 +++- htdocs/societe/class/societe.class.php | 60 +++--- htdocs/theme/amarok/img/stcomm-1_grayed.png | Bin 325 -> 0 bytes htdocs/theme/amarok/img/stcomm0.png | Bin 593 -> 914 bytes htdocs/theme/amarok/img/stcomm0_grayed.png | Bin 365 -> 0 bytes htdocs/theme/amarok/img/stcomm1_grayed.png | Bin 415 -> 0 bytes htdocs/theme/amarok/img/stcomm2_grayed.png | Bin 458 -> 0 bytes htdocs/theme/amarok/img/stcomm3_grayed.png | Bin 356 -> 0 bytes htdocs/theme/amarok/img/stcomm4_grayed.png | Bin 397 -> 0 bytes htdocs/theme/auguria/img/stcomm-1_grayed.png | Bin 223 -> 0 bytes htdocs/theme/auguria/img/stcomm0.png | Bin 782 -> 914 bytes htdocs/theme/auguria/img/stcomm0_grayed.png | Bin 456 -> 0 bytes htdocs/theme/auguria/img/stcomm1_grayed.png | Bin 472 -> 0 bytes htdocs/theme/auguria/img/stcomm2_grayed.png | Bin 343 -> 0 bytes htdocs/theme/auguria/img/stcomm3_grayed.png | Bin 488 -> 0 bytes htdocs/theme/auguria/img/stcomm4_grayed.png | Bin 488 -> 0 bytes .../theme/bureau2crea/img/stcomm-1_grayed.png | Bin 223 -> 0 bytes htdocs/theme/bureau2crea/img/stcomm0.png | Bin 284 -> 914 bytes .../theme/bureau2crea/img/stcomm0_grayed.png | Bin 456 -> 0 bytes .../theme/bureau2crea/img/stcomm1_grayed.png | Bin 472 -> 0 bytes .../theme/bureau2crea/img/stcomm2_grayed.png | Bin 343 -> 0 bytes .../theme/bureau2crea/img/stcomm3_grayed.png | Bin 488 -> 0 bytes .../theme/bureau2crea/img/stcomm4_grayed.png | Bin 488 -> 0 bytes htdocs/theme/cameleo/img/stcomm0.png | Bin 596 -> 914 bytes htdocs/theme/eldy/img/stcomm-1.png | Bin 431 -> 903 bytes htdocs/theme/eldy/img/stcomm-1_grayed.png | Bin 223 -> 0 bytes htdocs/theme/eldy/img/stcomm0.png | Bin 782 -> 914 bytes htdocs/theme/eldy/img/stcomm0_grayed.png | Bin 456 -> 0 bytes htdocs/theme/eldy/img/stcomm1_grayed.png | Bin 472 -> 0 bytes htdocs/theme/eldy/img/stcomm2_grayed.png | Bin 343 -> 0 bytes htdocs/theme/eldy/img/stcomm3_grayed.png | Bin 488 -> 0 bytes htdocs/theme/eldy/img/stcomm4_grayed.png | Bin 488 -> 0 bytes htdocs/theme/eldy/style.css.php | 7 +- htdocs/theme/md_exp/img/stcomm-1_grayed.png | Bin 223 -> 0 bytes htdocs/theme/md_exp/img/stcomm0.png | Bin 782 -> 914 bytes htdocs/theme/md_exp/img/stcomm0_grayed.png | Bin 456 -> 0 bytes htdocs/theme/md_exp/img/stcomm1_grayed.png | Bin 472 -> 0 bytes htdocs/theme/md_exp/img/stcomm2_grayed.png | Bin 343 -> 0 bytes htdocs/theme/md_exp/img/stcomm3_grayed.png | Bin 488 -> 0 bytes htdocs/theme/md_exp/img/stcomm4_grayed.png | Bin 488 -> 0 bytes 52 files changed, 182 insertions(+), 287 deletions(-) rename dev/ansible/{README => README.md} (100%) delete mode 100644 htdocs/comm/prospect/class/index.html delete mode 100644 htdocs/comm/prospect/class/prospect.class.php delete mode 100644 htdocs/theme/amarok/img/stcomm-1_grayed.png delete mode 100644 htdocs/theme/amarok/img/stcomm0_grayed.png delete mode 100644 htdocs/theme/amarok/img/stcomm1_grayed.png delete mode 100644 htdocs/theme/amarok/img/stcomm2_grayed.png delete mode 100644 htdocs/theme/amarok/img/stcomm3_grayed.png delete mode 100644 htdocs/theme/amarok/img/stcomm4_grayed.png delete mode 100644 htdocs/theme/auguria/img/stcomm-1_grayed.png delete mode 100644 htdocs/theme/auguria/img/stcomm0_grayed.png delete mode 100644 htdocs/theme/auguria/img/stcomm1_grayed.png delete mode 100644 htdocs/theme/auguria/img/stcomm2_grayed.png delete mode 100644 htdocs/theme/auguria/img/stcomm3_grayed.png delete mode 100644 htdocs/theme/auguria/img/stcomm4_grayed.png delete mode 100644 htdocs/theme/bureau2crea/img/stcomm-1_grayed.png delete mode 100644 htdocs/theme/bureau2crea/img/stcomm0_grayed.png delete mode 100644 htdocs/theme/bureau2crea/img/stcomm1_grayed.png delete mode 100644 htdocs/theme/bureau2crea/img/stcomm2_grayed.png delete mode 100644 htdocs/theme/bureau2crea/img/stcomm3_grayed.png delete mode 100644 htdocs/theme/bureau2crea/img/stcomm4_grayed.png delete mode 100644 htdocs/theme/eldy/img/stcomm-1_grayed.png delete mode 100644 htdocs/theme/eldy/img/stcomm0_grayed.png delete mode 100644 htdocs/theme/eldy/img/stcomm1_grayed.png delete mode 100644 htdocs/theme/eldy/img/stcomm2_grayed.png delete mode 100644 htdocs/theme/eldy/img/stcomm3_grayed.png delete mode 100644 htdocs/theme/eldy/img/stcomm4_grayed.png delete mode 100644 htdocs/theme/md_exp/img/stcomm-1_grayed.png delete mode 100644 htdocs/theme/md_exp/img/stcomm0_grayed.png delete mode 100644 htdocs/theme/md_exp/img/stcomm1_grayed.png delete mode 100644 htdocs/theme/md_exp/img/stcomm2_grayed.png delete mode 100644 htdocs/theme/md_exp/img/stcomm3_grayed.png delete mode 100644 htdocs/theme/md_exp/img/stcomm4_grayed.png diff --git a/dev/ansible/README b/dev/ansible/README.md similarity index 100% rename from dev/ansible/README rename to dev/ansible/README.md diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index 253bba695b1..2c37bcd9e42 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2014 Laurent Destailleur + * Copyright (C) 2004-2015 Laurent Destailleur * Copyright (C) 2004 Benoit Mortier * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2010-2013 Juanjo Menent @@ -70,7 +70,7 @@ $hookmanager->initHooks(array('admin')); // Put here declaration of dictionaries properties // Sort order to show dictionary (0 is space). All other dictionaries (added by modules) will be at end of this. -$taborder=array(9,0,4,3,2,0,1,8,19,16,0,5,11,0,6,0,10,23,12,13,0,14,0,7,17,0,22,20,18,21,0,15,0,24,0,25,0,26); +$taborder=array(9,0,4,3,2,0,1,8,19,16,27,0,5,11,0,6,0,10,23,12,13,0,14,0,7,17,0,22,20,18,21,0,15,0,24,0,25,0,26); // Name of SQL tables of dictionaries $tabname=array(); @@ -100,6 +100,7 @@ $tabname[23]= MAIN_DB_PREFIX."c_revenuestamp"; $tabname[24]= MAIN_DB_PREFIX."c_type_resource"; $tabname[25]= MAIN_DB_PREFIX."c_email_templates"; $tabname[26]= MAIN_DB_PREFIX."c_units"; +$tabname[27]= MAIN_DB_PREFIX."c_stcomm"; // Dictionary labels $tablib=array(); @@ -128,7 +129,8 @@ $tablib[22]= "DictionarySource"; $tablib[23]= "DictionaryRevenueStamp"; $tablib[24]= "DictionaryResourceType"; $tablib[25]= "DictionaryEMailTemplates"; -$tablib[26]= "DictionnaryUnits"; +$tablib[26]= "DictionaryUnits"; +$tablib[27]= "DictionaryProspectStatus"; // Requests to extract data $tabsql=array(); @@ -154,10 +156,11 @@ $tabsql[19]= "SELECT id as rowid, code, libelle, active FROM ".MAIN_DB_PREF $tabsql[20]= "SELECT rowid as rowid, code, libelle, active FROM ".MAIN_DB_PREFIX."c_input_method"; $tabsql[21]= "SELECT c.rowid as rowid, code, label, active FROM ".MAIN_DB_PREFIX."c_availability AS c"; $tabsql[22]= "SELECT rowid as rowid, code, label, active FROM ".MAIN_DB_PREFIX."c_input_reason"; -$tabsql[23]= "SELECT t.rowid, t.taux, c.label as country, c.code as country_code, t.fk_pays as country_id, t.note, t.active, t.accountancy_code_sell, t.accountancy_code_buy FROM ".MAIN_DB_PREFIX."c_revenuestamp as t, ".MAIN_DB_PREFIX."c_country as c WHERE t.fk_pays=c.rowid"; +$tabsql[23]= "SELECT t.rowid as rowid, t.taux, c.label as country, c.code as country_code, t.fk_pays as country_id, t.note, t.active, t.accountancy_code_sell, t.accountancy_code_buy FROM ".MAIN_DB_PREFIX."c_revenuestamp as t, ".MAIN_DB_PREFIX."c_country as c WHERE t.fk_pays=c.rowid"; $tabsql[24]= "SELECT rowid as rowid, code, label, active FROM ".MAIN_DB_PREFIX."c_type_resource"; $tabsql[25]= "SELECT rowid as rowid, label, type_template, private, position, topic, content, active FROM ".MAIN_DB_PREFIX."c_email_templates"; $tabsql[26]= "SELECT rowid as rowid, code, label, short_label, active FROM ".MAIN_DB_PREFIX."c_units"; +$tabsql[27]= "SELECT id as rowid, code, libelle, active FROM ".MAIN_DB_PREFIX."c_stcomm"; // Criteria to sort dictionaries $tabsqlsort=array(); @@ -187,6 +190,7 @@ $tabsqlsort[23]="country ASC, taux ASC"; $tabsqlsort[24]="code ASC,label ASC"; $tabsqlsort[25]="label ASC"; $tabsqlsort[26]="code ASC"; +$tabsqlsort[27]="code ASC"; // Nom des champs en resultat de select pour affichage du dictionnaire $tabfield=array(); @@ -216,6 +220,7 @@ $tabfield[23]= "country_id,country,taux,accountancy_code_sell,accountancy_code_b $tabfield[24]= "code,label"; $tabfield[25]= "label,type_template,private,position,topic,content"; $tabfield[26]= "code,label,short_label"; +$tabfield[27]= "code,libelle"; // Nom des champs d'edition pour modification d'un enregistrement $tabfieldvalue=array(); @@ -245,6 +250,7 @@ $tabfieldvalue[23]= "country,taux,accountancy_code_sell,accountancy_code_buy,not $tabfieldvalue[24]= "code,label"; $tabfieldvalue[25]= "label,type_template,private,position,topic,content"; $tabfieldvalue[26]= "code,label,short_label"; +$tabfieldvalue[27]= "code,libelle"; // Nom des champs dans la table pour insertion d'un enregistrement $tabfieldinsert=array(); @@ -274,6 +280,7 @@ $tabfieldinsert[23]= "fk_pays,taux,accountancy_code_sell,accountancy_code_buy,no $tabfieldinsert[24]= "code,label"; $tabfieldinsert[25]= "label,type_template,private,position,topic,content"; $tabfieldinsert[26]= "code,label,short_label"; +$tabfieldinsert[27]= "code,libelle"; // Nom du rowid si le champ n'est pas de type autoincrement // Example: "" if id field is "rowid" and has autoincrement on @@ -305,6 +312,7 @@ $tabrowid[23]= ""; $tabrowid[24]= ""; $tabrowid[25]= ""; $tabrowid[26]= ""; +$tabrowid[27]= "id"; // Condition to show dictionary in setup page $tabcond=array(); @@ -333,7 +341,8 @@ $tabcond[22]= (! empty($conf->commande->enabled) || ! empty($conf->propal->enabl $tabcond[23]= true; $tabcond[24]= ! empty($conf->resource->enabled); $tabcond[25]= true; // && ! empty($conf->global->MAIN_EMAIL_EDIT_TEMPLATE_FROM_DIC); -$tabcond[26]= $conf->product->enabled; +$tabcond[26]= ! empty($conf->product->enabled); +$tabcond[27]= ! empty($conf->societe->enabled); // List of help for fields $tabhelp=array(); @@ -362,6 +371,8 @@ $tabhelp[22] = array(); $tabhelp[23] = array(); $tabhelp[24] = array(); $tabhelp[25] = array(); +$tabhelp[26] = array(); +$tabhelp[27] = array(); // List of check for fields (NOT USED YET) $tabfieldcheck=array(); @@ -390,6 +401,8 @@ $tabfieldcheck[22] = array(); $tabfieldcheck[23] = array(); $tabfieldcheck[24] = array(); $tabfieldcheck[25] = array(); +$tabfieldcheck[26] = array(); +$tabfieldcheck[27] = array(); // Complete all arrays with entries found into modules complete_dictionary_with_modules($taborder,$tabname,$tablib,$tabsql,$tabsqlsort,$tabfield,$tabfieldvalue,$tabfieldinsert,$tabrowid,$tabcond,$tabhelp,$tabfieldcheck); @@ -1017,7 +1030,8 @@ if ($id) if ($id == 4) print getTitleFieldOfList($langs->trans("Favorite"),0,$_SERVER["PHP_SELF"],"favorite",($page?'page='.$page.'&':'').'&id='.$id,"",'align="center"',$sortfield,$sortorder); print getTitleFieldOfList($langs->trans("Status"),0,$_SERVER["PHP_SELF"],"active",($page?'page='.$page.'&':'').'&id='.$id,"",'align="center"',$sortfield,$sortorder); - print ' '; + print getTitleFieldOfList(''); + print getTitleFieldOfList(''); print ''; // Lines with values diff --git a/htdocs/comm/card.php b/htdocs/comm/card.php index 81e8b396963..784ae4f096c 100644 --- a/htdocs/comm/card.php +++ b/htdocs/comm/card.php @@ -97,15 +97,13 @@ if (empty($reshook)) $action=""; } + // set accountancy code if ($action == 'setcustomeraccountancycode') { $result=$object->fetch($id); $object->code_compta=$_POST["customeraccountancycode"]; $result=$object->update($object->id,$user,1,1,0); - if ($result < 0) - { - setEventMessage($object->errors, 'errors'); - } + if ($result < 0) setEventMessage($object->error,$object->errors,'errors'); } // conditions de reglement @@ -113,7 +111,7 @@ if (empty($reshook)) { $object->fetch($id); $result=$object->setPaymentTerms(GETPOST('cond_reglement_id','int')); - if ($result < 0) dol_print_error($db,$object->error); + if ($result < 0) setEventMessage($object->error,$object->errors,'errors'); } // mode de reglement @@ -121,7 +119,7 @@ if (empty($reshook)) { $object->fetch($id); $result=$object->setPaymentMethods(GETPOST('mode_reglement_id','int')); - if ($result < 0) dol_print_error($db,$object->error); + if ($result < 0) setEventMessage($object->error,$object->errors,'errors'); } // assujetissement a la TVA @@ -130,7 +128,7 @@ if (empty($reshook)) $object->fetch($id); $object->tva_assuj=$_POST['assujtva_value']; $result=$object->update($object->id); - if ($result < 0) dol_print_error($db,$object->error); + if ($result < 0) setEventMessage($object->error,$object->errors,'errors'); } // set prospect level @@ -139,16 +137,16 @@ if (empty($reshook)) $object->fetch($id); $object->fk_prospectlevel=GETPOST('prospect_level_id','alpha'); $result=$object->set_prospect_level($user); - if ($result < 0) setEventMessage($object->error,'errors'); + if ($result < 0) setEventMessage($object->error,$object->errors,'errors'); } // update prospect level - if ($action == 'cstc') + if ($action == 'setstcomm') { $object->fetch($id); - $object->stcomm_id=GETPOST('stcomm','int'); + $object->stcomm_id=dol_getIdFromCode($db, GETPOST('stcomm','alpha'), 'c_stcomm'); $result=$object->set_commnucation_level($user); - if ($result < 0) setEventMessage($object->error,'errors'); + if ($result < 0) setEventMessages($object->error,$object->errors,'errors'); } // update outstandng limit @@ -157,7 +155,7 @@ if (empty($reshook)) $object->fetch($id); $object->outstanding_limit=GETPOST('outstanding_limit'); $result=$object->set_OutstandingBill($user); - if ($result < 0) setEventMessage($object->error,'errors'); + if ($result < 0) setEventMessage($object->error,$object->errors,'errors'); } } @@ -407,7 +405,8 @@ if ($id > 0) print $form->editfieldval("OutstandingBill",'outstanding_limit',$object->outstanding_limit,$object,$user->rights->societe->creer,$limit_field_type,($object->outstanding_limit != '' ? price($object->outstanding_limit) : '')); // display amount and link to unpaid bill $outstandingBills = $object->get_OutstandingBill(); - if ($outstandingBills != 0) { + if ($outstandingBills != 0) + { print ' ('.$langs->trans("CurrentOutstandingBill"); print ' '; print price($outstandingBills, '', $langs, 0, -1, -1, $conf->currency); @@ -457,14 +456,16 @@ if ($id > 0) print ''; // Status - print ''.$langs->trans("StatusProsp").''.$object->getLibProspCommStatut(4).''; - print ''; - if ($object->stcomm_id != -1) print ''.img_action(0,-1).''; - if ($object->stcomm_id != 0) print ''.img_action(0,0).''; - if ($object->stcomm_id != 1) print ''.img_action(0,1).''; - if ($object->stcomm_id != 2) print ''.img_action(0,2).''; - if ($object->stcomm_id != 3) print ''.img_action(0,3).''; - print ''; + $object->loadCacheOfProspStatus(); + print ''.$langs->trans("StatusProsp").''.$object->getLibProspCommStatut(4, $object->cacheprospectstatus[$object->stcomm_id]['label']); + print '    
'; + foreach($object->cacheprospectstatus as $key => $val) + { + $titlealt='default'; + if (! empty($val['code']) && ! in_array($val['code'], array('ST_NO', 'ST_NEVER', 'ST_TODO', 'ST_PEND', 'ST_DONE'))) $titlealt=$val['label']; + if ($object->stcomm_id != $val['id']) print ''.img_action($titlealt,$val['code']).''; + } + print '
'; } // Other attributes diff --git a/htdocs/comm/prospect/class/index.html b/htdocs/comm/prospect/class/index.html deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/htdocs/comm/prospect/class/prospect.class.php b/htdocs/comm/prospect/class/prospect.class.php deleted file mode 100644 index 719a8c830f1..00000000000 --- a/htdocs/comm/prospect/class/prospect.class.php +++ /dev/null @@ -1,172 +0,0 @@ - - * Copyright (C) 2006-2012 Laurent Destailleur - * Copyright (C) 2005-2012 Regis Houssin - * - * 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 3 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, see . - */ - -/** - * \file htdocs/comm/prospect/class/prospect.class.php - * \ingroup societe - * \brief Fichier de la classe des prospects - */ -include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; - - -/** - * Class to manage prospects - */ -class Prospect extends Societe -{ - var $db; - - - /** - * Constructor - * - * @param DoliDB $db Database handler - */ - function __construct($db) - { - $this->db = $db; - - return 0; - } - - - /** - * Charge indicateurs this->nb de tableau de bord - * - * @return int <0 if KO, >0 if OK - */ - function load_state_board() - { - global $user; - - $this->nb=array("customers" => 0,"prospects" => 0); - $clause = "WHERE"; - - $sql = "SELECT count(s.rowid) as nb, s.client"; - $sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; - if (!$user->rights->societe->client->voir && !$user->societe_id) - { - $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON s.rowid = sc.fk_soc"; - $sql.= " WHERE sc.fk_user = " .$user->id; - $clause = "AND"; - } - $sql.= " ".$clause." s.client IN (1,2,3)"; - $sql.= " AND s.entity IN (".getEntity($this->element, 1).")"; - $sql.= " GROUP BY s.client"; - - $resql=$this->db->query($sql); - if ($resql) - { - while ($obj=$this->db->fetch_object($resql)) - { - if ($obj->client == 1 || $obj->client == 3) $this->nb["customers"]+=$obj->nb; - if ($obj->client == 2 || $obj->client == 3) $this->nb["prospects"]+=$obj->nb; - } - $this->db->free($resql); - return 1; - } - else - { - dol_print_error($this->db); - $this->error=$this->db->error(); - return -1; - } - } - - - /** - * Return status of prospect - * - * @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long - * @return string Libelle - */ - function getLibProspStatut($mode=0) - { - return $this->LibProspStatut($this->stcomm_id,$mode); - } - - /** - * Return label of a given status - * - * @param int $statut Id statut - * @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto - * @return string Libelle du statut - */ - function LibProspStatut($statut,$mode=0) - { - global $langs; - $langs->load('customers'); - - if ($mode == 2) - { - if ($statut == -1) return img_action($langs->trans("StatusProspect-1"),-1).' '.$langs->trans("StatusProspect-1"); - if ($statut == 0) return img_action($langs->trans("StatusProspect0"), 0).' '.$langs->trans("StatusProspect0"); - if ($statut == 1) return img_action($langs->trans("StatusProspect1"), 1).' '.$langs->trans("StatusProspect1"); - if ($statut == 2) return img_action($langs->trans("StatusProspect2"), 2).' '.$langs->trans("StatusProspect2"); - if ($statut == 3) return img_action($langs->trans("StatusProspect3"), 3).' '.$langs->trans("StatusProspect3"); - } - if ($mode == 3) - { - if ($statut == -1) return img_action($langs->trans("StatusProspect-1"),-1); - if ($statut == 0) return img_action($langs->trans("StatusProspect0"), 0); - if ($statut == 1) return img_action($langs->trans("StatusProspect1"), 1); - if ($statut == 2) return img_action($langs->trans("StatusProspect2"), 2); - if ($statut == 3) return img_action($langs->trans("StatusProspect3"), 3); - } - if ($mode == 4) - { - if ($statut == -1) return img_action($langs->trans("StatusProspect-1"),-1).' '.$langs->trans("StatusProspect-1"); - if ($statut == 0) return img_action($langs->trans("StatusProspect0"), 0).' '.$langs->trans("StatusProspect0"); - if ($statut == 1) return img_action($langs->trans("StatusProspect1"), 1).' '.$langs->trans("StatusProspect1"); - if ($statut == 2) return img_action($langs->trans("StatusProspect2"), 2).' '.$langs->trans("StatusProspect2"); - if ($statut == 3) return img_action($langs->trans("StatusProspect3"), 3).' '.$langs->trans("StatusProspect3"); - } - - return "Error, mode/status not found"; - } - - /** - * Renvoi le libelle du niveau - * - * @return string Libelle - */ - function getLibProspLevel() - { - return $this->LibProspLevel($this->fk_prospectlevel); - } - - /** - * Renvoi le libelle du niveau - * - * @param int $fk_prospectlevel Prospect level - * @return string Libelle du niveau - */ - function LibProspLevel($fk_prospectlevel) - { - global $langs; - - $lib=$langs->trans("ProspectLevel".$fk_prospectlevel); - // If lib not found in language file, we get label from cache/databse - if ($lib == $langs->trans("ProspectLevel".$fk_prospectlevel)) - { - $lib=$langs->getLabelFromKey($this->db,$fk_prospectlevel,'c_prospectlevel','code','label'); - } - return $lib; - } -} diff --git a/htdocs/comm/prospect/list.php b/htdocs/comm/prospect/list.php index 52659df162d..12f327ba0d5 100644 --- a/htdocs/comm/prospect/list.php +++ b/htdocs/comm/prospect/list.php @@ -1,11 +1,11 @@ - * Copyright (C) 2004-2011 Laurent Destailleur + * Copyright (C) 2004-2015 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2011 Philippe Grand - * Copyright (C) 2013 Florian Henry + * Copyright (C) 2013 Florian Henry * Copyright (C) 2013 Cédric Salvador - * Copyright (C) 2015 Jean-François Ferry + * Copyright (C) 2015 Jean-François Ferry * * 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 @@ -28,7 +28,7 @@ */ require '../../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/comm/prospect/class/prospect.class.php'; +require_once DOL_DOCUMENT_ROOT.'/societe/class/client.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; $langs->load("propal"); @@ -41,7 +41,8 @@ $result = restrictedArea($user, 'societe',$socid,''); $action = GETPOST('action','alpha'); $socname = GETPOST("socname",'alpha'); -$stcomm = GETPOST("stcomm",'int'); +$stcomm = GETPOST("stcomm",'alpha'); // code +$search_stcomm = GETPOST("search_stcomm",'int'); $search_nom = GETPOST("search_nom"); $search_zipcode = GETPOST("search_zipcode"); $search_town = GETPOST("search_town"); @@ -159,6 +160,7 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both { $socname=""; $stcomm=""; + $search_stcomm=""; $search_nom=""; $search_zipcode=""; $search_town=""; @@ -170,6 +172,8 @@ if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both if ($search_status=='') $search_status=1; // always display active customer first + + /* * Actions */ @@ -178,12 +182,17 @@ $parameters=array(); $reshook=$hookmanager->executeHooks('doActions',$parameters); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); -if (empty($reshook)) { - if ($action == 'cstc') +if (empty($reshook)) +{ + if ($action == 'setstcomm') { - $sql = "UPDATE ".MAIN_DB_PREFIX."societe SET fk_stcomm = ".$_GET["pstcomm"]; - $sql .= " WHERE rowid = ".$_GET["socid"]; - $result=$db->query($sql); + $object = new Client($db); + $result=$object->fetch($socid); + $object->stcomm_id=dol_getIdFromCode($db, GETPOST('stcomm','alpha'), 'c_stcomm'); + $result=$object->set_commnucation_level($user); + if ($result < 0) setEventMessages($object->error,$object->errors,'errors'); + + $action=''; $socid=0; } } @@ -195,8 +204,9 @@ if (empty($reshook)) { $formother=new FormOther($db); $form=new Form($db); -$sql = "SELECT s.rowid, s.nom as name, s.zip, s.town, s.datec, s.status as status, s.code_client, s.client,"; -$sql.= " st.libelle as stcomm, s.prefix_comm, s.fk_stcomm, s.fk_prospectlevel,"; +$sql = "SELECT s.rowid as socid, s.nom as name, s.zip, s.town, s.datec, s.status as status, s.code_client, s.client,"; +$sql.= " s.prefix_comm, s.fk_prospectlevel, s.fk_stcomm as stcomm_id,"; +$sql.= " st.libelle as stcomm_label,"; $sql.= " d.nom as departement"; if ((!$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects) $sql .= " FROM ".MAIN_DB_PREFIX."c_stcomm as st"; @@ -209,7 +219,7 @@ $sql.= " AND s.client IN (2, 3)"; $sql.= ' AND s.entity IN ('.getEntity('societe', 1).')'; if ((!$user->rights->societe->client->voir && !$socid) || $search_sale > 0) $sql.= " AND s.rowid = sc.fk_soc"; if ($socid) $sql.= " AND s.rowid = " .$socid; -if (isset($stcomm) && $stcomm != '') $sql.= " AND s.fk_stcomm=".$stcomm; +if ($search_stcomm != '') $sql.= " AND s.fk_stcomm=".$search_stcomm; if ($catid > 0) $sql.= " AND cs.fk_categorie = ".$catid; if ($catid == -2) $sql.= " AND cs.fk_categorie IS NULL"; if ($search_categ > 0) $sql.= " AND cs.fk_categorie = ".$search_categ; @@ -260,7 +270,7 @@ if ($resql) if ($num == 1 && $socname) { $obj = $db->fetch_object($resql); - header("Location: card.php?socid=".$obj->rowid); + header("Location: card.php?socid=".$obj->socid); exit; } else @@ -269,23 +279,23 @@ if ($resql) llxHeader('',$langs->trans("ThirdParty"),$help_url); } - $param='&stcomm='.$stcomm.'&search_nom='.urlencode($search_nom).'&search_zipcode='.urlencode($search_zipcode).'&search_town='.urlencode($search_town); + $param='&search_stcomm='.$search_stcomm.'&search_nom='.urlencode($search_nom).'&search_zipcode='.urlencode($search_zipcode).'&search_town='.urlencode($search_town); // Store the status filter in the URL - if (isSet($search_cstc)) + if (isSet($search_setstcomm)) { - foreach ($search_cstc as $key => $value) + foreach ($search_setstcomm as $key => $value) { if ($value == 'true') - $param.='&search_cstc['.((int) $key).']=true'; + $param.='&search_setstcomm['.((int) $key).']=true'; else - $param.='&search_cstc['.((int) $key).']=false'; + $param.='&search_setstcomm['.((int) $key).']=false'; } } - if ($search_level_from != '') $param.='&search_level_from='.$search_level_from; - if ($search_level_to != '') $param.='&search_level_to='.$search_level_to; - if ($search_categ != '') $param.='&search_categ='.$search_categ; - if ($search_sale > 0) $param.='&search_sale='.$search_sale; - if ($search_status != '') $param.='&search_status='.$search_status; + if ($search_level_from != '') $param.='&search_level_from='.$search_level_from; + if ($search_level_to != '') $param.='&search_level_to='.$search_level_to; + if ($search_categ != '') $param.='&search_categ='.$search_categ; + if ($search_sale > 0) $param.='&search_sale='.$search_sale; + if ($search_status != '') $param.='&search_status='.$search_status; // $param and $urladd should have the same value $urladd = $param; @@ -326,9 +336,9 @@ if ($resql) print_liste_field_titre($langs->trans("DateCreation"),$_SERVER["PHP_SELF"],"s.datec","",$param,'align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("ProspectLevelShort"),$_SERVER["PHP_SELF"],"s.fk_prospectlevel","",$param,'align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("StatusProsp"),$_SERVER["PHP_SELF"],"s.fk_stcomm","",$param,'align="center"',$sortfield,$sortorder); - print ' '; + print_liste_field_titre(''); print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"s.status","",$param,'align="center"',$sortfield,$sortorder); - print ' '; + print_liste_field_titre(''); $parameters=array(); $formconfirm=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook @@ -408,8 +418,9 @@ if ($resql) $i = 0; $var=true; - $prospectstatic=new Prospect($db); + $prospectstatic=new Client($db); $prospectstatic->client=2; + $prospectstatic->loadCacheOfProspStatus(); while ($i < min($num,$conf->liste_limit)) { @@ -419,7 +430,7 @@ if ($resql) print ''; print ''; - $prospectstatic->id=$obj->rowid; + $prospectstatic->id=$obj->socid; $prospectstatic->name=$obj->name; $prospectstatic->status=$obj->status; $prospectstatic->code_client=$obj->code_client; @@ -427,8 +438,8 @@ if ($resql) $prospectstatic->fk_prospectlevel=$obj->fk_prospectlevel; print $prospectstatic->getNomUrl(1,'prospect'); print ''; - print "".$obj->zip." "; - print "".$obj->town." "; + print "".$obj->zip.""; + print "".$obj->town.""; print ''.$obj->departement.''; // Creation date print ''.dol_print_date($db->jdate($obj->datec)).''; @@ -438,19 +449,15 @@ if ($resql) print ""; // Statut print ''; - print $prospectstatic->LibProspStatut($obj->fk_stcomm,2); + print $prospectstatic->LibProspCommStatut($obj->stcomm_id,2,$prospectstatic->cacheprospectstatus[$obj->stcomm_id]['label']); print ""; - //$sts = array(-1,0,1,2,3); print ''; - foreach ($sts as $key => $value) + foreach($prospectstatic->cacheprospectstatus as $key => $val) { - if ($value <> $obj->fk_stcomm) - { - print ''; - print img_action(0,$value); - print ' '; - } + $titlealt='default'; + if (! empty($val['code']) && ! in_array($val['code'], array('ST_NO', 'ST_NEVER', 'ST_TODO', 'ST_PEND', 'ST_DONE'))) $titlealt=$val['label']; + if ($obj->stcomm_id != $val['id']) print ''.img_action($titlealt,$val['code']).''; } print ''; diff --git a/htdocs/core/boxes/box_prospect.php b/htdocs/core/boxes/box_prospect.php index 2f96c57ee95..b3f2144b28b 100644 --- a/htdocs/core/boxes/box_prospect.php +++ b/htdocs/core/boxes/box_prospect.php @@ -26,7 +26,7 @@ include_once DOL_DOCUMENT_ROOT.'/core/boxes/modules_boxes.php'; -include_once DOL_DOCUMENT_ROOT.'/comm/prospect/class/prospect.class.php'; +include_once DOL_DOCUMENT_ROOT.'/societe/class/client.class.php'; /** @@ -74,8 +74,7 @@ class box_prospect extends ModeleBoxes $this->max=$max; - include_once DOL_DOCUMENT_ROOT.'/comm/prospect/class/prospect.class.php'; - $thirdpartystatic=new Prospect($db); + $thirdpartystatic=new Client($db); $this->info_box_head = array('text' => $langs->trans("BoxTitleLastModifiedProspects",$max)); @@ -130,7 +129,7 @@ class box_prospect extends ModeleBoxes $this->info_box_contents[$line][] = array( 'td' => 'align="right" width="18"', - 'text' => str_replace('img ','img height="14" ',$thirdpartystatic->LibProspStatut($objp->fk_stcomm,3)), + 'text' => str_replace('img ','img height="14" ',$thirdpartystatic->LibProspCommStatut($objp->fk_stcomm,3)), ); $this->info_box_contents[$line][] = array( diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php index 34a5514fe4f..690d015ac38 100644 --- a/htdocs/core/lib/company.lib.php +++ b/htdocs/core/lib/company.lib.php @@ -614,10 +614,10 @@ function show_contacts($conf,$langs,$db,$object,$backtopage='') if (! empty($conf->agenda->enabled) && ! empty($user->rights->agenda->myactions->create)) { $colspan++; - print ' '; + print_liste_field_titre(''); } // Edit - print ' '; + print_liste_field_titre(''); print ""; diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 7cf0e4ff91c..1e19a488899 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -2046,22 +2046,24 @@ function img_picto_common($titlealt, $picto, $options = '', $pictoisfullpath = 0 /** * Show logo action * - * @param string $titlealt Text on alt and title of image. Alt only if param notitle is set to 1. If text is "TextA:TextB", use Text A on alt and Text B on title. - * @param int $numaction Action to show - * @return string Return an img tag + * @param string $titlealt Text on alt and title of image. Alt only if param notitle is set to 1. If text is "TextA:TextB", use Text A on alt and Text B on title. + * @param string $numaction Action id or code to show + * @return string Return an img tag */ function img_action($titlealt, $numaction) { global $conf, $langs; - if ($titlealt == 'default') + if (empty($titlealt) || $titlealt == 'default') { - if ($numaction == -1) $titlealt = $langs->transnoentitiesnoconv('ChangeDoNotContact'); - if ($numaction == 0) $titlealt = $langs->transnoentitiesnoconv('ChangeNeverContacted'); - if ($numaction == 1) $titlealt = $langs->transnoentitiesnoconv('ChangeToContact'); - if ($numaction == 2) $titlealt = $langs->transnoentitiesnoconv('ChangeContactInProcess'); - if ($numaction == 3) $titlealt = $langs->transnoentitiesnoconv('ChangeContactDone'); + if ($numaction == '-1' || $numaction == 'ST_NO') { $numaction = -1; $titlealt = $langs->transnoentitiesnoconv('ChangeDoNotContact'); } + elseif ($numaction == '0' || $numaction == 'ST_NEVER') { $numaction = 0; $titlealt = $langs->transnoentitiesnoconv('ChangeNeverContacted'); } + elseif ($numaction == '1' || $numaction == 'ST_TODO') { $numaction = 1; $titlealt = $langs->transnoentitiesnoconv('ChangeToContact'); } + elseif ($numaction == '2' || $numaction == 'ST_PEND') { $numaction = 2; $titlealt = $langs->transnoentitiesnoconv('ChangeContactInProcess'); } + elseif ($numaction == '3' || $numaction == 'ST_DONE') { $numaction = 3; $titlealt = $langs->transnoentitiesnoconv('ChangeContactDone'); } + else { $titlealt = $langs->transnoentitiesnoconv('ChangeStatus '.$numaction); $numaction = 0; } } + if (! is_numeric($numaction)) $numaction=0; return img_picto($titlealt, 'stcomm'.$numaction.'.png'); } diff --git a/htdocs/index.php b/htdocs/index.php index a3d7c509540..61f3f274ecf 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -161,7 +161,7 @@ if (empty($user->societe_id)) ! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture->lire); // Class file containing the method load_state_board for each line $includes=array(DOL_DOCUMENT_ROOT."/societe/class/client.class.php", - DOL_DOCUMENT_ROOT."/comm/prospect/class/prospect.class.php", + DOL_DOCUMENT_ROOT."/societe/class/client.class.php", DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.class.php", DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php", DOL_DOCUMENT_ROOT."/product/class/product.class.php", @@ -174,7 +174,7 @@ if (empty($user->societe_id)) DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.facture.class.php"); // Name class containing the method load_state_board for each line $classes=array('Client', - 'Prospect', + 'Client', 'Fournisseur', 'Adherent', 'Product', diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 09aafd228f7..6e0e1d602b7 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -817,6 +817,8 @@ DictionarySource=Origin of proposals/orders DictionaryAccountancyplan=Chart of accounts DictionaryAccountancysystem=Models for chart of accounts DictionaryEMailTemplates=Emails templates +DictionaryUnits=Units +DictionaryProspectStatus=Prospection status SetupSaved=Setup saved BackToModuleList=Back to modules list BackToDictionaryList=Back to dictionaries list diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang index 9ceef0033c0..d7fba120cb3 100644 --- a/htdocs/langs/en_US/products.lang +++ b/htdocs/langs/en_US/products.lang @@ -189,7 +189,6 @@ CustomCode=Customs code CountryOrigin=Origin country HiddenIntoCombo=Hidden into select lists Nature=Nature -DictionnaryUnits=Units ShortLabel=Short label Unit=Unit p=u. diff --git a/htdocs/societe/class/client.class.php b/htdocs/societe/class/client.class.php index d5ac33227c5..2bff90f2f3f 100644 --- a/htdocs/societe/class/client.class.php +++ b/htdocs/societe/class/client.class.php @@ -25,15 +25,17 @@ include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; /** - * Class to manage customers + * Class to manage customers or prospects */ class Client extends Societe { var $db; - + var $next_prev_filter="te.client in (1,2,3)"; // Used to add a filter in Form::showrefnav method - - + + var $cacheprospectstatus=array(); + + /** * Constructor * @@ -51,7 +53,7 @@ class Client extends Societe */ function load_state_board() { - global $conf, $user; + global $user; $this->nb=array("customers" => 0,"prospects" => 0); $clause = "WHERE"; @@ -82,10 +84,34 @@ class Client extends Societe else { dol_print_error($this->db); - $this->error=$this->db->error(); + $this->error=$this->db->lasterror(); return -1; } } + /** + * Load array of prospect status + * + * @param int $active 1=Active only, 0=Not active only, -1=All + * @return int <0 if KO, >0 if OK + */ + function loadCacheOfProspStatus($active=1) + { + global $langs; + + $sql="SELECT id, code, libelle as label FROM ".MAIN_DB_PREFIX."c_stcomm"; + if ($active >= 0) $sql.=" WHERE active = ".$active; + $resql=$this->db->query($sql); + $num=$this->db->num_rows($resql); + $i=0; + while ($i < $num) + { + $obj=$this->db->fetch_object($resql); + $this->cacheprospectstatus[$obj->id]=array('id'=>$obj->id, 'code'=>$obj->code, 'label'=> $langs->trans("aaa")?$obj->label:''); + $i++; + } + return 1; + } + } diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 897fab2d676..a5b76df4230 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -3084,48 +3084,62 @@ class Societe extends CommonObject * Return status of prospect * * @param int $mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long + * @param string $label Label to use for status for added status * @return string Libelle */ - function getLibProspCommStatut($mode=0) + function getLibProspCommStatut($mode=0, $label='') { - return $this->LibProspCommStatut($this->stcomm_id,$mode); + return $this->LibProspCommStatut($this->stcomm_id, $mode, $label); } /** * Return label of a given status * - * @param int $statut Id statut - * @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto - * @return string Libelle du statut + * @param int|string $statut Id or code for prospection status + * @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto + * @param string $label Label to use for status for added status + * @return string Libelle du statut */ - function LibProspCommStatut($statut,$mode=0) + function LibProspCommStatut($statut, $mode=0, $label='') { global $langs; $langs->load('customers'); if ($mode == 2) { - if ($statut == -1) return img_action($langs->trans("StatusProspect-1"),-1).' '.$langs->trans("StatusProspect-1"); - if ($statut == 0) return img_action($langs->trans("StatusProspect0"), 0).' '.$langs->trans("StatusProspect0"); - if ($statut == 1) return img_action($langs->trans("StatusProspect1"), 1).' '.$langs->trans("StatusProspect1"); - if ($statut == 2) return img_action($langs->trans("StatusProspect2"), 2).' '.$langs->trans("StatusProspect2"); - if ($statut == 3) return img_action($langs->trans("StatusProspect3"), 3).' '.$langs->trans("StatusProspect3"); + if ($statut == '-1' || $statut == 'ST_NO') return img_action($langs->trans("StatusProspect-1"),-1).' '.$langs->trans("StatusProspect-1"); + elseif ($statut == '0' || $statut == 'ST_NEVER') return img_action($langs->trans("StatusProspect0"), 0).' '.$langs->trans("StatusProspect0"); + elseif ($statut == '1' || $statut == 'ST_TODO') return img_action($langs->trans("StatusProspect1"), 1).' '.$langs->trans("StatusProspect1"); + elseif ($statut == '2' || $statut == 'ST_PEND') return img_action($langs->trans("StatusProspect2"), 2).' '.$langs->trans("StatusProspect2"); + elseif ($statut == '3' || $statut == 'ST_DONE') return img_action($langs->trans("StatusProspect3"), 3).' '.$langs->trans("StatusProspect3"); + else + { + return img_action(($langs->trans("StatusProspect".$statut) != "StatusProspect".$statut) ? $langs->trans("StatusProspect".$statut) : $label, 0).' '.(($langs->trans("StatusProspect".$statut) != "StatusProspect".$statut) ? $langs->trans("StatusProspect".$statut) : $label); + } } if ($mode == 3) { - if ($statut == -1) return img_action($langs->trans("StatusProspect-1"),-1); - if ($statut == 0) return img_action($langs->trans("StatusProspect0"), 0); - if ($statut == 1) return img_action($langs->trans("StatusProspect1"), 1); - if ($statut == 2) return img_action($langs->trans("StatusProspect2"), 2); - if ($statut == 3) return img_action($langs->trans("StatusProspect3"), 3); + if ($statut == '-1' || $statut == 'ST_NO') return img_action($langs->trans("StatusProspect-1"),-1); + elseif ($statut == '0' || $statut == 'ST_NEVER') return img_action($langs->trans("StatusProspect0"), 0); + elseif ($statut == '1' || $statut == 'ST_TODO') return img_action($langs->trans("StatusProspect1"), 1); + elseif ($statut == '2' || $statut == 'ST_PEND') return img_action($langs->trans("StatusProspect2"), 2); + elseif ($statut == '3' || $statut == 'ST_DONE') return img_action($langs->trans("StatusProspect3"), 3); + else + { + return img_action(($langs->trans("StatusProspect".$statut) != "StatusProspect".$statut) ? $langs->trans("StatusProspect".$statut) : $label, 0); + } } if ($mode == 4) { - if ($statut == -1) return img_action($langs->trans("StatusProspect-1"),-1).' '.$langs->trans("StatusProspect-1"); - if ($statut == 0) return img_action($langs->trans("StatusProspect0"), 0).' '.$langs->trans("StatusProspect0"); - if ($statut == 1) return img_action($langs->trans("StatusProspect1"), 1).' '.$langs->trans("StatusProspect1"); - if ($statut == 2) return img_action($langs->trans("StatusProspect2"), 2).' '.$langs->trans("StatusProspect2"); - if ($statut == 3) return img_action($langs->trans("StatusProspect3"), 3).' '.$langs->trans("StatusProspect3"); + if ($statut == '-1' || $statut == 'ST_NO') return img_action($langs->trans("StatusProspect-1"),-1).' '.$langs->trans("StatusProspect-1"); + elseif ($statut == '0' || $statut == 'ST_NEVER') return img_action($langs->trans("StatusProspect0"), 0).' '.$langs->trans("StatusProspect0"); + elseif ($statut == '1' || $statut == 'ST_TODO') return img_action($langs->trans("StatusProspect1"), 1).' '.$langs->trans("StatusProspect1"); + elseif ($statut == '2' || $statut == 'ST_PEND') return img_action($langs->trans("StatusProspect2"), 2).' '.$langs->trans("StatusProspect2"); + elseif ($statut == '3' || $statut == 'ST_DONE') return img_action($langs->trans("StatusProspect3"), 3).' '.$langs->trans("StatusProspect3"); + else + { + return img_action(($langs->trans("StatusProspect".$statut) != "StatusProspect".$statut) ? $langs->trans("StatusProspect".$statut) : $label, 0).' '.(($langs->trans("StatusProspect".$statut) != "StatusProspect".$statut) ? $langs->trans("StatusProspect".$statut) : $label); + } } return "Error, mode/status not found"; @@ -3154,7 +3168,7 @@ class Societe extends CommonObject if (! $resql) { $this->db->rollback(); - $this->error=$this->db->error(); + $this->error=$this->db->lasterror(); return -1; } @@ -3232,7 +3246,7 @@ class Societe extends CommonObject $paiement = $facturestatic->getSommePaiement(); $creditnotes = $facturestatic->getSumCreditNotesUsed(); $deposits = $facturestatic->getSumDepositsUsed(); - + $outstandingBill+= $obj->total_ttc - $paiement - $creditnotes - $deposits; } return $outstandingBill; diff --git a/htdocs/theme/amarok/img/stcomm-1_grayed.png b/htdocs/theme/amarok/img/stcomm-1_grayed.png deleted file mode 100644 index 2b53ad3a2d516ae86197a8970ce898c053f72830..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325 zcmV-L0lNN)P)@>}!X_`O2IyI^hHM-H-g=F;`Vh#!zEYRkw~EI>(tuZY&*WY78~HJGYj?p_f=-v~}d6jG@l{x$@Xd(=Bu# z{YIDW*}oa~2S2=UU(prt(-{i7U(d?X`v)fg(9K@WpU}bGx8lIU0000;`_cgb00931 XZFg;8K{FHo00000NkvXXu0mjf1#O3C diff --git a/htdocs/theme/amarok/img/stcomm0.png b/htdocs/theme/amarok/img/stcomm0.png index f0b8c3f71651765b54e1ac9b4a6370292c89019e..b6c11d4569a5c96c92fb645c2479f82ecb4da690 100644 GIT binary patch delta 892 zcmV-?1B3k01d<1kBYyw^b5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2j2w-6CWR(1sg zkI9?Nk28~GUKkrpXbGVK7h;1JiUmuls3GE}w4j@8M5rhf6o0y?yNVbWrDhfXXg3wD zP(d;<#1JW(MLIN1!Zf6L%%qcM#_?rl-n_Z*-tW3-EUmxa@`H1}?{Lmx_@6m{{`;tu zG}_f=zQMV8x!LTz&3W+6)YM4@0LH%oFI@OBECd}6hxJoKLwzsUcKpdo#brxNo3HHb zbbbKf{f*$_#ecjeC0UHIr!|ee)7u+=?$Dv9GU;>#N&&jg;5gNZt*!cp0E&+hOi%yR zr<6LDNLa7icH;Q(a3<8-8-=bjNU2b(c?g9J?B8!kZr?7y3E+JIU^6p6KS88kv#ikg z;9$?;{{BSVwqwwB4FI5&0_TLawF;uqFoaOJbSYP;RDXVZ>B^P2N*WQ3CXLb`CnbqYCWchXg6DB8EEF+6UqrRq zK)v1q0DlC5gb)(l-C+z2q@E7~F{)p`{<%DQ^kl>L#fjlzJ7!rXQmJlavq`wFkJ;G* zip2{0`Vt@lI2U`LNy~9|3}a8{(&lFMmwWfzY&M&KQUJh^PIqH$>;OEkgJd!aO=D=a zI%u~801Qg0S2X}Qd-k~RdHjpz<+3Dtpj8M7*MDszlZj(sAPv*hA%q0y0yl4N2D#kQ zYP0FT_b>;$yWU)}xc%$MNdH(*PZW(t2Zo{VX(u$BK9-luw79tLtgV&44uW7hpFdYJ z9qjsCmF@|<7_ksEo#~$s%o+=H42hjwOBYy%INklQwO)JqPz z?2Oxesmu$3g>NWUt7vyRn?gO*OAfj0w992}@r`_?0$(U(WV7AgknSFG$Yldg=V+5J z^kx%Ev54tl&`4T$vwn{pa+%5Du<5N9w0hkjlh5Pr+?TATYK14TSS+Y24-pkcq1JVf%MK3@U(fQ}L(3xKxqnrp`0d@qB`>7#Wz-Z8|Lhpl zgaeCTh9IxZf?T%0zu!3@jUrRgkkj=)_%2+7BHci8c>uFBZp4;M5F>+_pBX`q*>sa_ z>+QAd=+?^=;owX;ie7#Kqoidq_ihV zwGyz{bG|R1&r=lu002M$0000~&+f-A0002_u+Ec5ucs~o0N}*Fch4hLQ(vtlNs?tr zk}Q2OldDKEa@!}zHi~Sc*f{pt9V2Z-7sbfb+(M_*X)Vmn3>7INMV4)wnrmdq(gy=4 zvLr>cvC--bT(zgs_~^Wum4AvZ>J(Yh`t7o9b6hjjH+1B>HX=oFYGI^j?5>$JJ02Q4 zkmZQB_t%lJo+KGd`a18ebsA^A`p?!6H=F}S<(o?u-dek0-@0En%O@`ZiYt=`_jY!B zo|>y191iOG*BfIsz~fgp`?cCnOO;z&n@L?-O8{Q1_PzrYmFo0AA*z4~Id~3D00000 LNkvXXu0mjf#h{)~ diff --git a/htdocs/theme/amarok/img/stcomm1_grayed.png b/htdocs/theme/amarok/img/stcomm1_grayed.png deleted file mode 100644 index 7cc52f5ee6b0917d0d74068029f656d628de97b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 415 zcmV;Q0bu@#P)=dI3pyOT8jo$wzoxxE$^|E{Zpv_609VQ&5p@{3m<-3etf@WMnqLnWGcE*Fy! zLuO#xM6FS))hb7}4a_P-C_`gLZp+wI6qODYa!h753_HC>a{692f9>ks z{>J|6t>cf4#E*U2x)y(N^TF3u3j3G zR1+jZp{-U5;?f2jy3{482u{*PuyxRm(y!r1=+v)ZSHa1l=q476OO9<+wW!pyoSA{6aehGsp{QQeZLr%o*chK6;!~rdrQkaTz<93 zk6Ex_q6Gk$zMo!y^Y!%|f7;sX006lA@kNTCYsY_&J9kL!e?`;)0000l901_w_uJaqH2;tWQg{f{V^G$@f)ay>ZhZrf9lHje`T~8MZe>v+p1UXpsW`$q zh&Z?T`tI#{q5{DCTdkL>{>P0Y0HOlCo4vL+(OG(?+WU02)!*Fs2SkOplh>cOSMEHX zU#@DYR(7{{KM%GJzkE0)*2iwHUVXaQx!s8dA*Cy-;r_S1uNOc5ey`81FTP&tWP2o} zkWwX^3u_CHb~nqpJZMj^4%?NGQV1cyaIE#}=S-dr9y&IZQb-}Cnt?-iot9bVj1^sd zA*4j;`EA*xQD%{)DNpP>mlCPxmj}j-6j?8$QW$s7wh%%J_q7yK5%tR~T(~gw!ng{Y z`=h6!rp$VgrJiFqjGU?vm~do9Ly`4Ct*>iVx)drv&6KW|L9Kq$+_9hupc0_1ZO2J7 rrr$K@D**ri7#@U%DRlqFQa9CA>ndD`yD%1U%;8>U_kdp|V_OgNg6tf6t!Q-u|Yp zCMUQ~-tuW&m%ru8B@#EP%Utv=9axvWklEYzKGITK3`mSt?j@iKcB8RalUSZvaTTffouetwJDeSqt(eFF=@BJ(= Up5mdKI;Vst0MM~f{Qv*} diff --git a/htdocs/theme/auguria/img/stcomm0.png b/htdocs/theme/auguria/img/stcomm0.png index cbe60a02d28bfe7c944b1bc0e2d778b89c23ff42..b6c11d4569a5c96c92fb645c2479f82ecb4da690 100644 GIT binary patch delta 892 zcmV-?1B3jI29gJmBYyw^b5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2j2w-6CWR(1sg zkI9?Nk28~GUKkrpXbGVK7h;1JiUmuls3GE}w4j@8M5rhf6o0y?yNVbWrDhfXXg3wD zP(d;<#1JW(MLIN1!Zf6L%%qcM#_?rl-n_Z*-tW3-EUmxa@`H1}?{Lmx_@6m{{`;tu zG}_f=zQMV8x!LTz&3W+6)YM4@0LH%oFI@OBECd}6hxJoKLwzsUcKpdo#brxNo3HHb zbbbKf{f*$_#ecjeC0UHIr!|ee)7u+=?$Dv9GU;>#N&&jg;5gNZt*!cp0E&+hOi%yR zr<6LDNLa7icH;Q(a3<8-8-=bjNU2b(c?g9J?B8!kZr?7y3E+JIU^6p6KS88kv#ikg z;9$?;{{BSVwqwwB4FI5&0_TLawF;uqFoaOJbSYP;RDXVZ>B^P2N*WQ3CXLb`CnbqYCWchXg6DB8EEF+6UqrRq zK)v1q0DlC5gb)(l-C+z2q@E7~F{)p`{<%DQ^kl>L#fjlzJ7!rXQmJlavq`wFkJ;G* zip2{0`Vt@lI2U`LNy~9|3}a8{(&lFMmwWfzY&M&KQUJh^PIqH$>;OEkgJd!aO=D=a zI%u~801Qg0S2X}Qd-k~RdHjpz<+3Dtpj8M7*MDszlZj(sAPv*hA%q0y0yl4N2D#kQ zYP0FT_b>;$yWU)}xc%$MNdH(*PZW(t2Zo{VX(u$BK9-luw79tLtgV&44uW7hpFdYJ z9qjsCmF@|<7_ksEo#~$s%o+x6?7L7fh1FJ)PW)s z1W^$`8YtrMPBdFnrn7zIS95J;Vm6#ZZCh?y&X0+To6|NG_vz-;rqfOL{dCS7jl#kn zIK1cL{Qu{Fe$VrgNEcL7lk8eUgY+SjIo^ZzE;@ZEx4QcMrGJZbq}EnN5`*z6t-W3O zW@JQXU0AThWHKEf6EThUF8Qw_K7TTS!%GVP*5(8ZL>vsDnJUqPO zbvln?et$52>#qujqi}K(g7NWHa5#>@Z2k_tz0N8@`FRT=o|`j6U!Ml@@?Q261}!b}B-C#S2KW;k5a96bsQ*L~z1|51gNraw zt2dCr41eV2cKG7mXl@?OlFJPd{B8`+=L-^T!*hVa8I5jOS#iMh^cJw$pF;%&{BIc< z%<{Mao&MoEm#dny**tJ|76zB=n0PNXz~B}atsoN3MrpLSW-|H3v((h4ls^WkwstVF zzWyU!quC65y+N>8JP6tWu_h*r2-is{ p7Iu-Vs>C}bC9j!?^1X}B{{XDKH=7-6L%je1002ovPDHLkV1l~QbPWIi diff --git a/htdocs/theme/auguria/img/stcomm0_grayed.png b/htdocs/theme/auguria/img/stcomm0_grayed.png deleted file mode 100644 index 9016db48b027bb23d07b6217818abe89b3d982d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmV;(0XP1MP)oFttJpC@u=iBrBKK+P-N+r)y7p$uum31kiU`9n@`DGes%iZWlD^%MG z*&n1Amqh3^`lE(N0bAVTD0L?&e{n^Ep}F>?-?NN;xcIHYf-WS@`e9YHsiXeX{Os^U z7Y?z5N!T!l)XQ)M3ryOkm*o#<0K2e~6i?;SQk%`Yk9EwT8-t8ySzyI9%*c5nJ)5YD8t=aib~t?rv>b4R@h~b8vde

MMa)k3;hsbtW>BjQ)RB yTxi@{r?1ABel6;t*njA!W1wY}wmA5-(H$00006P)NklHd z%}dh(0EhAK%%S^HkSSR-N|Tj{wFMy(OVp(zI-)e-`AR#XzQ7blxTFv>%2 zMlFBPq3GP7FbIT>(m}j*uo^*zK3ytm&-HVBq>@~FPMm33bZs~;AF-60S}RYVb7!x9 zn%oKCTDBYikf*GDcZb{a+P{$|M~-`R7Hb`Uxu>>!=+fKp);xJk@+>e#kb^NvlDDdF zT4VPGQX4k%_c8d;u;xd=`B{=Qki-hhYBe&B$y-1 zD{?$$m=tktvhR)dtE-|jnf#e&kto+0B}I&35=;}p`B@&xsJ?UPTOIW@5n_yX+6Xd1 zgmL<@zL3?|u-?TW_wmxq0F#U|#Umnw>8HG?szNsx2(e5OFZHCECCUSCb9T%4sF02l zCQ5>5m_%`qCeB^XZ`;>2ExV)!#+V__6IO_EoEdK5{9#*Chsq^M)rE@$2=bH+eh%aQ zy7#@MSBCzq+U09n_cK9;0LQj%tCkVf{J+q!`VJIMa*CSomIXOW5B~yH5bu#x@(m3D O0000^+<000SSjU=7xhF1sO@cu9Z zB!EUZ6}l_w&Dq#%fEJ*&VQguNzfS;2K!Xk2R*Fynkbn@f-r6Nq3xEV1`=TmB#bR>r z6F`Du?ylSD6jklwAxq(%M98Y}+uW{Xkgfgn!&U#ZgsPEDjD0sXQl0wdvWX-?14efA zPF$Eew(Xj+krt|oaHO^8#KMl5l@=*GQ}jAVvOR0JWYw0hsM4R8pH=;x2m33#&J|f0 pgqvmt4RHTa{dBOYl&cy%#002ovPDHLkV1fpsoX`LO diff --git a/htdocs/theme/auguria/img/stcomm3_grayed.png b/htdocs/theme/auguria/img/stcomm3_grayed.png deleted file mode 100644 index 81a14c1e4823bc40fd0c6f9fb94f197a7bac83d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 488 zcmVP)D+01e=_&kcHg@+e%)_h$S7Hn?zQyAa>3xuC%v!?_;1pP0?YW7r&_;gAl* z7It6L0BvSYisx?*rjz`lgbxkS86-NroudSj|1vRoF%n^wHIkU<=-3=%XzOR}cX-P8 z)lp5>DAUUb{UnHyrA?fk8(ac)@ba*gz(rvY#N{k8!bE6rImry7PL_X`8u$s&p@K&c zKYlv2NCl&_3@K-S=i}CK4<|S%{D9!`8x0#7C#{yc-S^)sCUL5O2Xy$s3Kk#strwI9 z{#yD-d}@LX_UKaM8*fqGKd=7Ged@LZz^Kb&R{ChuVUIG0E8){Z^mM4Q#ijrR8tt4p zst_vOPvzP)NG$#F1DUfuco>qBT3k zeUR7Oy<6tZ!dNbqMF0^YO_CHyTsiQhvm{EV+?VCyLxzI@KoL-(7uZVHm(*uHT-9oU zw$38UwAmw|LxduvU|ARG76Y4Je(-d!F7T+ZLL8qKE+O!*yZJ%XRYG_Z(%K|LkqzE5 zgJKmQgV1b9$>Fuzar-|3DbCY{U>y&|Hboqw8=CX<*z{33#21zcahc;FimAsV>X~Cd2eu~91Z!F7k?;6nB=Ri e^niDa0PF)~9hO)a?_`+(0000FQa9CA>ndD`yD%1U%;8>U_kdp|V_OgNg6tf6t!Q-u|Yp zCMUQ~-tuW&m%ru8B@#EP%Utv=9axvWklEYzKGITK3`mSt?j@iKcB8RalUSZvaTTffouetwJDeSqt(eFF=@BJ(= Up5mdKI;Vst0MM~f{Qv*} diff --git a/htdocs/theme/bureau2crea/img/stcomm0.png b/htdocs/theme/bureau2crea/img/stcomm0.png index d3e0d1853d3dc093473453f0d2740cf5e2cd780e..b6c11d4569a5c96c92fb645c2479f82ecb4da690 100644 GIT binary patch delta 902 zcmV;119|+M0+I)i8Gi-<001BJ|6u?C00DDSM?wIu&K&6g000JJOGiWi{{a60|De66 zlK=n!32;bRa{vGf6951U69E94oEQKA00(qQO+^Ra1qKrzADjisv;Y7D5=lfsR5;6p zQ%z`GRTw?@y*H1^o6L_hlVn~P8%$^kp#c|SgBFSfOR1kB&*A?5MBKJx&~*&}pp*jVgtfH_qJPmagiyG2DOadeetYT4mA6V7 z5sfC3k&llYIdJ0O!Tz{y#~*?LKuU!mAe75>n5KbHNW;iTc8ExgkB@(%X+qF_#;_g) z#Oieq8yhv0N_BW12hoG;?KX!}3Q`h+fG{}N6NyB+UL>NlMnoH>QavXniA*MjRLX+q zaV#tpF@HZ_M77#Lz1{)<1c8JQ65ZWl3=E{64+1f&U%&pjJbLtG!}rCB;bA*wSte4c zZe+7bxUP@c*#e5i3i|pIAObiSd!I?madr%2Pv_F+X7!hQ_uOnYn}AXPz>rRNV{GgI zJgh062U0xbJ!Vi+|A&|d2fMr8T(P+Q>&Qs|SWizBjYbECq3>xYG@Cw_m&>%cxbCd2 zmA(#wU^<^aS27;4t5q)7zjd72Gx2!D=yU{3(*WlZj#IsD#y&Yi7KiRim)*WRuEQ|Z`W7pG5ub}SaNW_+K2<+{zwSFfHa c{8!!o0AHD)k>O7*rT_o{07*qoM6N<$f|NO|k^lez delta 268 zcmV+n0rUQn2b=|BwH_f#eIQNoWfG|G)cx8PKX*aI2sStlqtV3w`|F?p? zsd#JN{{uj8f#6{v+z*BO{yY5Ns0&mOXOTNUZ$;j6Oc!)^ S80!E4002ovP6b4+LSTY_hlwNr diff --git a/htdocs/theme/bureau2crea/img/stcomm0_grayed.png b/htdocs/theme/bureau2crea/img/stcomm0_grayed.png deleted file mode 100644 index 9016db48b027bb23d07b6217818abe89b3d982d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmV;(0XP1MP)oFttJpC@u=iBrBKK+P-N+r)y7p$uum31kiU`9n@`DGes%iZWlD^%MG z*&n1Amqh3^`lE(N0bAVTD0L?&e{n^Ep}F>?-?NN;xcIHYf-WS@`e9YHsiXeX{Os^U z7Y?z5N!T!l)XQ)M3ryOkm*o#<0K2e~6i?;SQk%`Yk9EwT8-t8ySzyI9%*c5nJ)5YD8t=aib~t?rv>b4R@h~b8vde

MMa)k3;hsbtW>BjQ)RB yTxi@{r?1ABel6;t*njA!W1wY}wmA5-(H$00006P)NklHd z%}dh(0EhAK%%S^HkSSR-N|Tj{wFMy(OVp(zI-)e-`AR#XzQ7blxTFv>%2 zMlFBPq3GP7FbIT>(m}j*uo^*zK3ytm&-HVBq>@~FPMm33bZs~;AF-60S}RYVb7!x9 zn%oKCTDBYikf*GDcZb{a+P{$|M~-`R7Hb`Uxu>>!=+fKp);xJk@+>e#kb^NvlDDdF zT4VPGQX4k%_c8d;u;xd=`B{=Qki-hhYBe&B$y-1 zD{?$$m=tktvhR)dtE-|jnf#e&kto+0B}I&35=;}p`B@&xsJ?UPTOIW@5n_yX+6Xd1 zgmL<@zL3?|u-?TW_wmxq0F#U|#Umnw>8HG?szNsx2(e5OFZHCECCUSCb9T%4sF02l zCQ5>5m_%`qCeB^XZ`;>2ExV)!#+V__6IO_EoEdK5{9#*Chsq^M)rE@$2=bH+eh%aQ zy7#@MSBCzq+U09n_cK9;0LQj%tCkVf{J+q!`VJIMa*CSomIXOW5B~yH5bu#x@(m3D O0000^+<000SSjU=7xhF1sO@cu9Z zB!EUZ6}l_w&Dq#%fEJ*&VQguNzfS;2K!Xk2R*Fynkbn@f-r6Nq3xEV1`=TmB#bR>r z6F`Du?ylSD6jklwAxq(%M98Y}+uW{Xkgfgn!&U#ZgsPEDjD0sXQl0wdvWX-?14efA zPF$Eew(Xj+krt|oaHO^8#KMl5l@=*GQ}jAVvOR0JWYw0hsM4R8pH=;x2m33#&J|f0 pgqvmt4RHTa{dBOYl&cy%#002ovPDHLkV1fpsoX`LO diff --git a/htdocs/theme/bureau2crea/img/stcomm3_grayed.png b/htdocs/theme/bureau2crea/img/stcomm3_grayed.png deleted file mode 100644 index 81a14c1e4823bc40fd0c6f9fb94f197a7bac83d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 488 zcmVP)D+01e=_&kcHg@+e%)_h$S7Hn?zQyAa>3xuC%v!?_;1pP0?YW7r&_;gAl* z7It6L0BvSYisx?*rjz`lgbxkS86-NroudSj|1vRoF%n^wHIkU<=-3=%XzOR}cX-P8 z)lp5>DAUUb{UnHyrA?fk8(ac)@ba*gz(rvY#N{k8!bE6rImry7PL_X`8u$s&p@K&c zKYlv2NCl&_3@K-S=i}CK4<|S%{D9!`8x0#7C#{yc-S^)sCUL5O2Xy$s3Kk#strwI9 z{#yD-d}@LX_UKaM8*fqGKd=7Ged@LZz^Kb&R{ChuVUIG0E8){Z^mM4Q#ijrR8tt4p zst_vOPvzP)NG$#F1DUfuco>qBT3k zeUR7Oy<6tZ!dNbqMF0^YO_CHyTsiQhvm{EV+?VCyLxzI@KoL-(7uZVHm(*uHT-9oU zw$38UwAmw|LxduvU|ARG76Y4Je(-d!F7T+ZLL8qKE+O!*yZJ%XRYG_Z(%K|LkqzE5 zgJKmQgV1b9$>Fuzar-|3DbCY{U>y&|Hboqw8=CX<*z{33#21zcahc;FimAsV>X~Cd2eu~91Z!F7k?;6nB=Ri e^niDa0PF)~9hO)a?_`+(0000kB&*A?5MBKJx&~*&}pp*jVgtfH_qJPmagiyG2DOadeetYT4mA6V7 z5sfC3k&llYIdJ0O!Tz{y#~*?LKuU!mAe75>n5KbHNW;iTc8ExgkB@(%X+qF_#;_g) z#Oieq8yhv0N_BW12hoG;?KX!}3Q`h+fG{}N6NyB+UL>NlMnoH>QavXniA*MjRLX+q zaV#tpF@HZ_M77#Lz1{)<1c8JQ65ZWl3=E{64+1f&U%&pjJbLtG!}rCB;bA*wSte4c zZe+7bxUP@c*#e5i3i|pIAObiSd!I?madr%2Pv_F+X7!hQ_uOnYn}AXPz>rRNV{GgI zJgh062U0xbJ!Vi+|A&|d2fMr8T(P+Q>&Qs|SWizBjYbECq3>xYG@Cw_m&>%cxbCd2 zmA(#wU^<^aS27;4t5q)7zjd72Gx2!D=yU{3(*WlZj#IsD#y&Yi7KiRim)*WRuEQ|Z`W7pG5ub}SaNW_+K2<+{zwSFfHa c{8!!o0AHD)k>O7*rT_o{07*qoM6N<$f?%So%m4rY literal 596 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47}WxNLR`~eAT>1=$V^O3OiD_E zka2Nw2?+^6GCn>Y$N&lgNjL+@t*fhRYHDh3Zk|4U`oaYZ7A{<{Xwjm@ix;n4xpLL2 zRjYw$_3AZi)~s8%ZvFc88#Zj%v}x0h?b~fU%!6i#*Ldd zZ{E6f>oySGzJ2HRtvh$_+y$Y#KyVL;?g7!gM-Lx9dIUs|9s|*1AbR}d$&;r~o;-W@ z?D?~&FP=Yt@#4j+SFc{be*Nb4tG91nzkB=k-Me@1f#3rWzW@B`)Bpefz0B&RfB`2| z666=mVCRsVyKdd4O^+TueF{|k_pb|=`E8)=X-^l&5D7`vgB!hA3DbdEC z_VwylX`lc4CEBR%%+9J8JI)(wvaR|(oAX^=-1df585=nhHZ58d=AH5H3WKiUl&pPv zRUfZ2*xuG%-JSDx5|6{9yX8&2imiMeXTLsR%1UF{QT1BCpq1BVBY8Gi-<001BJ|6u?C00DDSM?wIu&K&6g000JJOGiWi{{a60|De66 zlK=n!32;bRa{vGf6951U69E94oEQKA00(qQO+^Ra1qKr!C+yi+761SP2T4RhR5;6p zlTT<=R}{v-``*krc{7doTChdu|ujQ2(`ObvW>S z-w)0?4F6N-&;L{}C3V!*g-&rU-mld*KIh!OcInb_1ptB92`^k24GTeC;jn(9t*z-D z(~Q4SF5B$>{ePtoR#rBC2H?D8(BGfcq$Gne)~RXi%f`m|fxUZoq*JK~lmc{}p-`wC zTVA$$0py=E7##eiNhx(WkuW|s&BS}{?df1+V?A`8K}v;c)j=>Az|Ng!DQrWgRERPcR5sbnD(3LqHNuzPn)83vAgWJJo>E*qCp&viPtVfg;-%HqYm1B50?C$^tw7Y%vvujx zy;G*_oipbc5G`GLZtdE0Ten^VqP=^s9Xoaph|ZmR4n)_kJ->JF{k?nN-@pI<{ri6) z`u{)eVEO}~`{Ziba4!kxEy;vk?XJmPkr0NcMQ^xw)I7FQa9CA>ndD`yD%1U%;8>U_kdp|V_OgNg6tf6t!Q-u|Yp zCMUQ~-tuW&m%ru8B@#EP%Utv=9axvWklEYzKGITK3`mSt?j@iKcB8RalUSZvaTTffouetwJDeSqt(eFF=@BJ(= Up5mdKI;Vst0MM~f{Qv*} diff --git a/htdocs/theme/eldy/img/stcomm0.png b/htdocs/theme/eldy/img/stcomm0.png index cbe60a02d28bfe7c944b1bc0e2d778b89c23ff42..b6c11d4569a5c96c92fb645c2479f82ecb4da690 100644 GIT binary patch delta 892 zcmV-?1B3jI29gJmBYyw^b5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2j2w-6CWR(1sg zkI9?Nk28~GUKkrpXbGVK7h;1JiUmuls3GE}w4j@8M5rhf6o0y?yNVbWrDhfXXg3wD zP(d;<#1JW(MLIN1!Zf6L%%qcM#_?rl-n_Z*-tW3-EUmxa@`H1}?{Lmx_@6m{{`;tu zG}_f=zQMV8x!LTz&3W+6)YM4@0LH%oFI@OBECd}6hxJoKLwzsUcKpdo#brxNo3HHb zbbbKf{f*$_#ecjeC0UHIr!|ee)7u+=?$Dv9GU;>#N&&jg;5gNZt*!cp0E&+hOi%yR zr<6LDNLa7icH;Q(a3<8-8-=bjNU2b(c?g9J?B8!kZr?7y3E+JIU^6p6KS88kv#ikg z;9$?;{{BSVwqwwB4FI5&0_TLawF;uqFoaOJbSYP;RDXVZ>B^P2N*WQ3CXLb`CnbqYCWchXg6DB8EEF+6UqrRq zK)v1q0DlC5gb)(l-C+z2q@E7~F{)p`{<%DQ^kl>L#fjlzJ7!rXQmJlavq`wFkJ;G* zip2{0`Vt@lI2U`LNy~9|3}a8{(&lFMmwWfzY&M&KQUJh^PIqH$>;OEkgJd!aO=D=a zI%u~801Qg0S2X}Qd-k~RdHjpz<+3Dtpj8M7*MDszlZj(sAPv*hA%q0y0yl4N2D#kQ zYP0FT_b>;$yWU)}xc%$MNdH(*PZW(t2Zo{VX(u$BK9-luw79tLtgV&44uW7hpFdYJ z9qjsCmF@|<7_ksEo#~$s%o+x6?7L7fh1FJ)PW)s z1W^$`8YtrMPBdFnrn7zIS95J;Vm6#ZZCh?y&X0+To6|NG_vz-;rqfOL{dCS7jl#kn zIK1cL{Qu{Fe$VrgNEcL7lk8eUgY+SjIo^ZzE;@ZEx4QcMrGJZbq}EnN5`*z6t-W3O zW@JQXU0AThWHKEf6EThUF8Qw_K7TTS!%GVP*5(8ZL>vsDnJUqPO zbvln?et$52>#qujqi}K(g7NWHa5#>@Z2k_tz0N8@`FRT=o|`j6U!Ml@@?Q261}!b}B-C#S2KW;k5a96bsQ*L~z1|51gNraw zt2dCr41eV2cKG7mXl@?OlFJPd{B8`+=L-^T!*hVa8I5jOS#iMh^cJw$pF;%&{BIc< z%<{Mao&MoEm#dny**tJ|76zB=n0PNXz~B}atsoN3MrpLSW-|H3v((h4ls^WkwstVF zzWyU!quC65y+N>8JP6tWu_h*r2-is{ p7Iu-Vs>C}bC9j!?^1X}B{{XDKH=7-6L%je1002ovPDHLkV1l~QbPWIi diff --git a/htdocs/theme/eldy/img/stcomm0_grayed.png b/htdocs/theme/eldy/img/stcomm0_grayed.png deleted file mode 100644 index 9016db48b027bb23d07b6217818abe89b3d982d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmV;(0XP1MP)oFttJpC@u=iBrBKK+P-N+r)y7p$uum31kiU`9n@`DGes%iZWlD^%MG z*&n1Amqh3^`lE(N0bAVTD0L?&e{n^Ep}F>?-?NN;xcIHYf-WS@`e9YHsiXeX{Os^U z7Y?z5N!T!l)XQ)M3ryOkm*o#<0K2e~6i?;SQk%`Yk9EwT8-t8ySzyI9%*c5nJ)5YD8t=aib~t?rv>b4R@h~b8vde

MMa)k3;hsbtW>BjQ)RB yTxi@{r?1ABel6;t*njA!W1wY}wmA5-(H$00006P)NklHd z%}dh(0EhAK%%S^HkSSR-N|Tj{wFMy(OVp(zI-)e-`AR#XzQ7blxTFv>%2 zMlFBPq3GP7FbIT>(m}j*uo^*zK3ytm&-HVBq>@~FPMm33bZs~;AF-60S}RYVb7!x9 zn%oKCTDBYikf*GDcZb{a+P{$|M~-`R7Hb`Uxu>>!=+fKp);xJk@+>e#kb^NvlDDdF zT4VPGQX4k%_c8d;u;xd=`B{=Qki-hhYBe&B$y-1 zD{?$$m=tktvhR)dtE-|jnf#e&kto+0B}I&35=;}p`B@&xsJ?UPTOIW@5n_yX+6Xd1 zgmL<@zL3?|u-?TW_wmxq0F#U|#Umnw>8HG?szNsx2(e5OFZHCECCUSCb9T%4sF02l zCQ5>5m_%`qCeB^XZ`;>2ExV)!#+V__6IO_EoEdK5{9#*Chsq^M)rE@$2=bH+eh%aQ zy7#@MSBCzq+U09n_cK9;0LQj%tCkVf{J+q!`VJIMa*CSomIXOW5B~yH5bu#x@(m3D O0000^+<000SSjU=7xhF1sO@cu9Z zB!EUZ6}l_w&Dq#%fEJ*&VQguNzfS;2K!Xk2R*Fynkbn@f-r6Nq3xEV1`=TmB#bR>r z6F`Du?ylSD6jklwAxq(%M98Y}+uW{Xkgfgn!&U#ZgsPEDjD0sXQl0wdvWX-?14efA zPF$Eew(Xj+krt|oaHO^8#KMl5l@=*GQ}jAVvOR0JWYw0hsM4R8pH=;x2m33#&J|f0 pgqvmt4RHTa{dBOYl&cy%#002ovPDHLkV1fpsoX`LO diff --git a/htdocs/theme/eldy/img/stcomm3_grayed.png b/htdocs/theme/eldy/img/stcomm3_grayed.png deleted file mode 100644 index 81a14c1e4823bc40fd0c6f9fb94f197a7bac83d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 488 zcmVP)D+01e=_&kcHg@+e%)_h$S7Hn?zQyAa>3xuC%v!?_;1pP0?YW7r&_;gAl* z7It6L0BvSYisx?*rjz`lgbxkS86-NroudSj|1vRoF%n^wHIkU<=-3=%XzOR}cX-P8 z)lp5>DAUUb{UnHyrA?fk8(ac)@ba*gz(rvY#N{k8!bE6rImry7PL_X`8u$s&p@K&c zKYlv2NCl&_3@K-S=i}CK4<|S%{D9!`8x0#7C#{yc-S^)sCUL5O2Xy$s3Kk#strwI9 z{#yD-d}@LX_UKaM8*fqGKd=7Ged@LZz^Kb&R{ChuVUIG0E8){Z^mM4Q#ijrR8tt4p zst_vOPvzP)NG$#F1DUfuco>qBT3k zeUR7Oy<6tZ!dNbqMF0^YO_CHyTsiQhvm{EV+?VCyLxzI@KoL-(7uZVHm(*uHT-9oU zw$38UwAmw|LxduvU|ARG76Y4Je(-d!F7T+ZLL8qKE+O!*yZJ%XRYG_Z(%K|LkqzE5 zgJKmQgV1b9$>Fuzar-|3DbCY{U>y&|Hboqw8=CX<*z{33#21zcahc;FimAsV>X~Cd2eu~91Z!F7k?;6nB=Ri e^niDa0PF)~9hO)a?_`+(0000px; font-family: ; background: #FDFDFD; - color: #444; + color: #111; border: 1px solid #C0C0C0; - /*padding: 1px 1px 1px 1px; */ margin: 0px 0px 0px 0px; } @@ -545,6 +544,10 @@ margin : 0px auto; margin-right: 8px; margin-bottom: 4px; } +.pictosubstatus { + padding-left: 2px; + padding-right: 2px; +} /* ============================================================================== */ diff --git a/htdocs/theme/md_exp/img/stcomm-1_grayed.png b/htdocs/theme/md_exp/img/stcomm-1_grayed.png deleted file mode 100644 index 5942e6c72af8bf19fd85fcf34071f869638ba036..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^0wBx*Bp9q_EZ7UAm`Z~Df*BafCZDwc@@9CtIEF}s z=bljHV^$Psedw#DJ@JH^>FQa9CA>ndD`yD%1U%;8>U_kdp|V_OgNg6tf6t!Q-u|Yp zCMUQ~-tuW&m%ru8B@#EP%Utv=9axvWklEYzKGITK3`mSt?j@iKcB8RalUSZvaTTffouetwJDeSqt(eFF=@BJ(= Up5mdKI;Vst0MM~f{Qv*} diff --git a/htdocs/theme/md_exp/img/stcomm0.png b/htdocs/theme/md_exp/img/stcomm0.png index cbe60a02d28bfe7c944b1bc0e2d778b89c23ff42..b6c11d4569a5c96c92fb645c2479f82ecb4da690 100644 GIT binary patch delta 892 zcmV-?1B3jI29gJmBYyw^b5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2j2w-6CWR(1sg zkI9?Nk28~GUKkrpXbGVK7h;1JiUmuls3GE}w4j@8M5rhf6o0y?yNVbWrDhfXXg3wD zP(d;<#1JW(MLIN1!Zf6L%%qcM#_?rl-n_Z*-tW3-EUmxa@`H1}?{Lmx_@6m{{`;tu zG}_f=zQMV8x!LTz&3W+6)YM4@0LH%oFI@OBECd}6hxJoKLwzsUcKpdo#brxNo3HHb zbbbKf{f*$_#ecjeC0UHIr!|ee)7u+=?$Dv9GU;>#N&&jg;5gNZt*!cp0E&+hOi%yR zr<6LDNLa7icH;Q(a3<8-8-=bjNU2b(c?g9J?B8!kZr?7y3E+JIU^6p6KS88kv#ikg z;9$?;{{BSVwqwwB4FI5&0_TLawF;uqFoaOJbSYP;RDXVZ>B^P2N*WQ3CXLb`CnbqYCWchXg6DB8EEF+6UqrRq zK)v1q0DlC5gb)(l-C+z2q@E7~F{)p`{<%DQ^kl>L#fjlzJ7!rXQmJlavq`wFkJ;G* zip2{0`Vt@lI2U`LNy~9|3}a8{(&lFMmwWfzY&M&KQUJh^PIqH$>;OEkgJd!aO=D=a zI%u~801Qg0S2X}Qd-k~RdHjpz<+3Dtpj8M7*MDszlZj(sAPv*hA%q0y0yl4N2D#kQ zYP0FT_b>;$yWU)}xc%$MNdH(*PZW(t2Zo{VX(u$BK9-luw79tLtgV&44uW7hpFdYJ z9qjsCmF@|<7_ksEo#~$s%o+x6?7L7fh1FJ)PW)s z1W^$`8YtrMPBdFnrn7zIS95J;Vm6#ZZCh?y&X0+To6|NG_vz-;rqfOL{dCS7jl#kn zIK1cL{Qu{Fe$VrgNEcL7lk8eUgY+SjIo^ZzE;@ZEx4QcMrGJZbq}EnN5`*z6t-W3O zW@JQXU0AThWHKEf6EThUF8Qw_K7TTS!%GVP*5(8ZL>vsDnJUqPO zbvln?et$52>#qujqi}K(g7NWHa5#>@Z2k_tz0N8@`FRT=o|`j6U!Ml@@?Q261}!b}B-C#S2KW;k5a96bsQ*L~z1|51gNraw zt2dCr41eV2cKG7mXl@?OlFJPd{B8`+=L-^T!*hVa8I5jOS#iMh^cJw$pF;%&{BIc< z%<{Mao&MoEm#dny**tJ|76zB=n0PNXz~B}atsoN3MrpLSW-|H3v((h4ls^WkwstVF zzWyU!quC65y+N>8JP6tWu_h*r2-is{ p7Iu-Vs>C}bC9j!?^1X}B{{XDKH=7-6L%je1002ovPDHLkV1l~QbPWIi diff --git a/htdocs/theme/md_exp/img/stcomm0_grayed.png b/htdocs/theme/md_exp/img/stcomm0_grayed.png deleted file mode 100644 index 9016db48b027bb23d07b6217818abe89b3d982d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 456 zcmV;(0XP1MP)oFttJpC@u=iBrBKK+P-N+r)y7p$uum31kiU`9n@`DGes%iZWlD^%MG z*&n1Amqh3^`lE(N0bAVTD0L?&e{n^Ep}F>?-?NN;xcIHYf-WS@`e9YHsiXeX{Os^U z7Y?z5N!T!l)XQ)M3ryOkm*o#<0K2e~6i?;SQk%`Yk9EwT8-t8ySzyI9%*c5nJ)5YD8t=aib~t?rv>b4R@h~b8vde

MMa)k3;hsbtW>BjQ)RB yTxi@{r?1ABel6;t*njA!W1wY}wmA5-(H$00006P)NklHd z%}dh(0EhAK%%S^HkSSR-N|Tj{wFMy(OVp(zI-)e-`AR#XzQ7blxTFv>%2 zMlFBPq3GP7FbIT>(m}j*uo^*zK3ytm&-HVBq>@~FPMm33bZs~;AF-60S}RYVb7!x9 zn%oKCTDBYikf*GDcZb{a+P{$|M~-`R7Hb`Uxu>>!=+fKp);xJk@+>e#kb^NvlDDdF zT4VPGQX4k%_c8d;u;xd=`B{=Qki-hhYBe&B$y-1 zD{?$$m=tktvhR)dtE-|jnf#e&kto+0B}I&35=;}p`B@&xsJ?UPTOIW@5n_yX+6Xd1 zgmL<@zL3?|u-?TW_wmxq0F#U|#Umnw>8HG?szNsx2(e5OFZHCECCUSCb9T%4sF02l zCQ5>5m_%`qCeB^XZ`;>2ExV)!#+V__6IO_EoEdK5{9#*Chsq^M)rE@$2=bH+eh%aQ zy7#@MSBCzq+U09n_cK9;0LQj%tCkVf{J+q!`VJIMa*CSomIXOW5B~yH5bu#x@(m3D O0000^+<000SSjU=7xhF1sO@cu9Z zB!EUZ6}l_w&Dq#%fEJ*&VQguNzfS;2K!Xk2R*Fynkbn@f-r6Nq3xEV1`=TmB#bR>r z6F`Du?ylSD6jklwAxq(%M98Y}+uW{Xkgfgn!&U#ZgsPEDjD0sXQl0wdvWX-?14efA zPF$Eew(Xj+krt|oaHO^8#KMl5l@=*GQ}jAVvOR0JWYw0hsM4R8pH=;x2m33#&J|f0 pgqvmt4RHTa{dBOYl&cy%#002ovPDHLkV1fpsoX`LO diff --git a/htdocs/theme/md_exp/img/stcomm3_grayed.png b/htdocs/theme/md_exp/img/stcomm3_grayed.png deleted file mode 100644 index 81a14c1e4823bc40fd0c6f9fb94f197a7bac83d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 488 zcmVP)D+01e=_&kcHg@+e%)_h$S7Hn?zQyAa>3xuC%v!?_;1pP0?YW7r&_;gAl* z7It6L0BvSYisx?*rjz`lgbxkS86-NroudSj|1vRoF%n^wHIkU<=-3=%XzOR}cX-P8 z)lp5>DAUUb{UnHyrA?fk8(ac)@ba*gz(rvY#N{k8!bE6rImry7PL_X`8u$s&p@K&c zKYlv2NCl&_3@K-S=i}CK4<|S%{D9!`8x0#7C#{yc-S^)sCUL5O2Xy$s3Kk#strwI9 z{#yD-d}@LX_UKaM8*fqGKd=7Ged@LZz^Kb&R{ChuVUIG0E8){Z^mM4Q#ijrR8tt4p zst_vOPvzP)NG$#F1DUfuco>qBT3k zeUR7Oy<6tZ!dNbqMF0^YO_CHyTsiQhvm{EV+?VCyLxzI@KoL-(7uZVHm(*uHT-9oU zw$38UwAmw|LxduvU|ARG76Y4Je(-d!F7T+ZLL8qKE+O!*yZJ%XRYG_Z(%K|LkqzE5 zgJKmQgV1b9$>Fuzar-|3DbCY{U>y&|Hboqw8=CX<*z{33#21zcahc;FimAsV>X~Cd2eu~91Z!F7k?;6nB=Ri e^niDa0PF)~9hO)a?_`+(0000