From 83564b2b049863a0c33acf0b1a472529178bd839 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 6 Aug 2014 02:43:50 +0200 Subject: [PATCH] Fix: Table holiday_user was not initialized anymore. --- htdocs/holiday/class/holiday.class.php | 61 ++++++++++++++++---------- htdocs/holiday/define_holiday.php | 7 ++- htdocs/holiday/fiche.php | 3 +- 3 files changed, 44 insertions(+), 27 deletions(-) diff --git a/htdocs/holiday/class/holiday.class.php b/htdocs/holiday/class/holiday.class.php index 553555c47ab..fdc43fe8106 100644 --- a/htdocs/holiday/class/holiday.class.php +++ b/htdocs/holiday/class/holiday.class.php @@ -79,7 +79,7 @@ class Holiday extends CommonObject /** - * updateSold + * updateSold. Update sold and check table of users for holidays is complete. If not complete. * * @return int Return 1 */ @@ -986,25 +986,31 @@ class Holiday extends CommonObject */ function createCPusers($single=false,$userid='') { - // Si c'est l'ensemble des utilisateurs à ajoutés - if(!$single) + // Si c'est l'ensemble des utilisateurs à ajouter + if (! $single) { dol_syslog(get_class($this).'::createCPusers'); - foreach($this->fetchUsers(false,true) as $users) { + $arrayofusers = $this->fetchUsers(false,true); + + foreach($arrayofusers as $users) + { $sql = "INSERT INTO ".MAIN_DB_PREFIX."holiday_users"; $sql.= " (fk_user, nb_holiday)"; $sql.= " VALUES ('".$users['rowid']."','0')"; - $this->db->query($sql); + $resql=$this->db->query($sql); + if (! $resql) dol_print_error($this->db); } - } else { + } + else + { $sql = "INSERT INTO ".MAIN_DB_PREFIX."holiday_users"; $sql.= " (fk_user, nb_holiday)"; $sql.= " VALUES ('".$userid."','0')"; - $this->db->query($sql); + $resql=$this->db->query($sql); + if (! $resql) dol_print_error($this->db); } - } /** @@ -1051,7 +1057,7 @@ class Holiday extends CommonObject * uniquement pour vérifier si il existe de nouveau utilisateur * * @param boolean $liste si vrai retourne une liste, si faux retourne un array - * @param boolean $type si vrai retourne pour Dolibarr si faux retourne pour CP + * @param boolean $type si vrai retourne pour Dolibarr, si faux retourne pour CP * @return string retourne un tableau de tout les utilisateurs actifs */ function fetchUsers($liste=true,$type=true) @@ -1262,49 +1268,55 @@ class Holiday extends CommonObject function verifNbUsers($userDolibarrWithoutCP,$userCP) { if (empty($userCP)) $userCP=0; - dol_syslog(get_class($this).'::verifNbUsers userDolibarr='.$userDolibarr.' userCP='.$userCP); + dol_syslog(get_class($this).'::verifNbUsers userDolibarr='.$userDolibarrWithoutCP.' userCP='.$userCP); // On vérifie les users Dolibarr sans CP if ($userDolibarrWithoutCP > 0) { - $this->updateConfCP('nbUser',$userDolibarr); + $this->db->begin(); + + $this->updateConfCP('nbUser',$userDolibarrWithoutCP); $listUsersCP = $this->fetchUsers(true,false); // On séléctionne les utilisateurs qui ne sont pas déjà dans le module $sql = "SELECT u.rowid, u.lastname, u.firstname"; $sql.= " FROM ".MAIN_DB_PREFIX."user as u"; - $sql.= " WHERE u.rowid NOT IN(".$listUsersCP.")"; - - $result = $this->db->query($sql); - - // Si pas d'erreur SQL - if($result) { + if ($listUsersCP != '') $sql.= " WHERE u.rowid NOT IN(".$listUsersCP.")"; + $resql = $this->db->query($sql); + if ($resql) + { $i = 0; $num = $this->db->num_rows($resql); - while($i < $num) { - + while($i < $num) + { $obj = $this->db->fetch_object($resql); + $uid = $obj->rowid; // On ajoute l'utilisateur - $this->createCPusers(true,$obj->rowid); + //print "Add user rowid = ".$uid." into database holiday"; + + $result = $this->createCPusers(true,$uid); $i++; } - + $this->db->commit(); } else { // Erreur SQL $this->error="Error ".$this->db->lasterror(); + $this->db->rollback(); return -1; } } else { - // Si il y a moins d'utilisateur Dolibarr que dans le module CP + $this->db->begin(); - $this->updateConfCP('nbUser',$userDolibarr); + // Si il y a moins d'utilisateur Dolibarr que dans le module CP + + $this->updateConfCP('nbUser',$userDolibarrWithoutCP); $listUsersDolibarr = $this->fetchUsers(true,true); @@ -1331,10 +1343,11 @@ class Holiday extends CommonObject $i++; } - + $this->db->commit(); } else { // Erreur SQL $this->error="Error ".$this->db->lasterror(); + $this->db->rollback(); return -1; } } diff --git a/htdocs/holiday/define_holiday.php b/htdocs/holiday/define_holiday.php index 3c5fda7afd9..62e8fc698c9 100644 --- a/htdocs/holiday/define_holiday.php +++ b/htdocs/holiday/define_holiday.php @@ -43,14 +43,17 @@ $action=GETPOST('action'); */ $form = new Form($db); +$userstatic=new User($db); +$holiday = new Holiday($db); + llxHeader(array(),$langs->trans('CPTitreMenu')); print_fiche_titre($langs->trans('MenuConfCP')); -$holiday = new Holiday($db); +$holiday->updateSold(); // Create users into table holiday if they don't exists. TODO Remove if we use field into table user. + $listUsers = $holiday->fetchUsers(false,false); -$userstatic=new User($db); // Si il y a une action de mise à jour if ($action == 'update' && isset($_POST['update_cp'])) diff --git a/htdocs/holiday/fiche.php b/htdocs/holiday/fiche.php index 0092a6e25c9..9fc3e278ac5 100644 --- a/htdocs/holiday/fiche.php +++ b/htdocs/holiday/fiche.php @@ -761,8 +761,9 @@ if (empty($id) || $action == 'add' || $action == 'request' || $action == 'create print ''; } else print $form->select_users(GETPOST('userid')?GETPOST('userid'):$user->id,'userid',0,'',0); + //var_dump($cp->getConfCP('nbHolidayDeducted')); $nb_holiday = $cp->getCPforUser($user->id) / $cp->getConfCP('nbHolidayDeducted'); - print '   '.$langs->trans('SoldeCPUser', round($nb_holiday,0)).''; + print '   '.$langs->trans('SoldeCPUser', round($nb_holiday,2)).''; print ''; print ''; print '';