Menu

Conflit de ressource : ne marche pas.......

Help
Anonymous
2017-07-31
2017-07-31
  • Anonymous

    Anonymous - 2017-07-31

    Bonjour,
    j'utilise Soplanning v1.39. J'ai remarqué une erreur lors de la gestion des conflits de ressources affectées à une ou plusieurs personnes : malgré l'exclusivité d'une ressource, le gestion du conflit renvoie toujours la ressource libre.
    J'ai fini par trouver la cause : les requetes SQL dans la fonction 'checkConflitRessource' sont erronées.
    J'ai corrigé comme ceci :

    function checkConflitRessource($ressource,$date_debut,$date_fin,$user_id,$periode_id) {
    ......
    ......
                $sql = "SELECT *, planning_user.nom AS nom_user";
                $sql .= " FROM planning_periode ";
                $sql .= " INNER JOIN planning_user ON planning_periode.user_id = planning_user.user_id ";
    /*          $sql .= " WHERE (date_debut <= '" . $date_debut . "'    AND date_fin >= '" . $date_fin . "')";
                $sql .= " AND planning_periode.user_id = '" . $user_id . "' and planning_periode.ressource_id = '".$ressource."'";      
    */          $sql .= " WHERE ((date_fin IS NOT NULL AND date_debut <= '" . $date_debut . "' AND date_fin >= '" . $date_fin . "')";
                $sql .= " OR (date_fin IS NULL AND date_debut = '" . $date_debut . "'))";
                $sql .= " AND planning_periode.ressource_id = '".$ressource."'";        
              }else
              {
                $sql = "SELECT *, planning_user.nom AS nom_user";
                $sql .= " FROM planning_periode ";
                $sql .= " INNER JOIN planning_user ON planning_periode.user_id = planning_user.user_id ";
    /*          $sql .= " WHERE ((date_debut >= '" . $date_debut . "'   AND date_debut <= '" . $date_fin . "')";
                $sql .= "   OR (date_fin IS NOT NULL AND date_fin >= '" . $date_debut . "' AND date_fin <= '" . $date_fin . "'))";
                $sql .= " AND planning_periode.user_id = '" . $user_id . "' and planning_periode.ressource_id = '".$ressource."'";
    */          $sql .= " WHERE ((date_fin IS NOT NULL AND date_debut >= '" . $date_debut . "' AND date_fin <= '" . $date_fin . "')";
                $sql .= " OR (date_fin IS NOT NULL AND date_debut <= '" . $date_debut . "' AND date_fin >= '" . $date_fin . "')";
                $sql .= " OR (date_fin IS NOT NULL AND date_debut <= '" . $date_debut . "' AND date_fin >= '" . $date_fin . "')";
                $sql .= " OR (date_fin IS NOT NULL AND '" . $date_debut . "' >= date_debut AND '" . $date_debut . "' <= '" . $date_fin . "')";          
                $sql .= " OR (date_fin IS NOT NULL AND '" . $date_fin . "' >= date_debut AND '" . $date_fin . "' <= '" . $date_fin . "')";                      
                $sql .= " OR (date_fin IS NULL AND date_debut >= '" . $date_debut . "' AND date_debut <= '" . $date_fin . "'))";        
                $sql .= " AND planning_periode.ressource_id = '".$ressource."'";
    ......
    ......
    

    notez bien les morceaux de codes en commentaires !

     
  • bluespirit79

    bluespirit79 - 2017-07-31

    Bonjour,
    Merci pour le retour et la correction...
    Je revérifie le code et réintègre la modification sur la prochaine version.

     

Anonymous
Anonymous

Add attachments
Cancel