Fix: correction delete ligne intervention

This commit is contained in:
Regis Houssin 2007-12-08 14:06:01 +00:00
parent 5280c7f549
commit 0080043dda
2 changed files with 99 additions and 66 deletions

View File

@ -249,9 +249,19 @@ if ($_POST['action'] == 'updateligne' && $user->rights->ficheinter->creer && $_P
*/ */
if ($_GET['action'] == 'deleteline' && $user->rights->ficheinter->creer && !$conf->global->PRODUIT_CONFIRM_DELETE_LINE) if ($_GET['action'] == 'deleteline' && $user->rights->ficheinter->creer && !$conf->global->PRODUIT_CONFIRM_DELETE_LINE)
{ {
$fichinterline = new FichinterLigne($db);
if ($fichinterline->fetch($_GET['ligne']) <= 0)
{
dolibarr_print_error($db);
exit;
}
$result=$fichinterline->delete_line();
$fichinter = new Fichinter($db); $fichinter = new Fichinter($db);
$fichinter->fetch($_GET['id']); if ($fichinter->fetch($fichinterline->fk_fichinter) <= 0)
$result=$fichinter->delete_line($_GET['ligne']); {
dolibarr_print_error($db);
exit;
}
if ($_REQUEST['lang_id']) if ($_REQUEST['lang_id'])
{ {
$outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf);
@ -267,9 +277,19 @@ if ($_REQUEST['action'] == 'confirm_deleteline' && $_REQUEST['confirm'] == 'yes'
{ {
if ($user->rights->ficheinter->creer) if ($user->rights->ficheinter->creer)
{ {
$fichinterline = new FichinterLigne($db);
if ($fichinterline->fetch($_GET['ligne']) <= 0)
{
dolibarr_print_error($db);
exit;
}
$result=$fichinterline->delete_line();
$fichinter = new Fichinter($db); $fichinter = new Fichinter($db);
$fichinter->fetch($_GET['id']); if ($fichinter->fetch($fichinterline->fk_fichinter) <= 0)
$result=$fichinter->delete_line($_GET['ligne']); {
dolibarr_print_error($db);
exit;
}
if ($_REQUEST['lang_id']) if ($_REQUEST['lang_id'])
{ {
$outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf); $outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf);

View File

@ -41,7 +41,7 @@ class Fichinter extends CommonObject
var $id; var $id;
var $socid; // Id client var $socid; // Id client
var $client; // Objet societe client (<EFBFBD> charger par fetch_client) var $client; // Objet societe client (a charger par fetch_client)
var $author; var $author;
var $ref; var $ref;
@ -57,7 +57,7 @@ class Fichinter extends CommonObject
/** /**
* \brief Constructeur de la classe * \brief Constructeur de la classe
* \param DB Handler acc<EFBFBD>s base de donn<EFBFBD>es * \param DB Handler acces base de donnees
* \param socid Id societe * \param socid Id societe
*/ */
function Fichinter($DB, $socid="") function Fichinter($DB, $socid="")
@ -69,7 +69,7 @@ class Fichinter extends CommonObject
$this->products = array(); $this->products = array();
$this->projet_id = 0; $this->projet_id = 0;
// Statut 0=brouillon, 1=valid<EFBFBD> // Statut 0=brouillon, 1=valide
$this->statuts[0]=$langs->trans("Draft"); $this->statuts[0]=$langs->trans("Draft");
$this->statuts[1]=$langs->trans("Validated"); $this->statuts[1]=$langs->trans("Validated");
$this->statuts_short[0]=$langs->trans("Draft"); $this->statuts_short[0]=$langs->trans("Draft");
@ -78,7 +78,7 @@ class Fichinter extends CommonObject
/* /*
* \brief Cr<EFBFBD>e une fiche intervention en base * \brief Cree une fiche intervention en base
* \return int <0 if KO, >0 if OK * \return int <0 if KO, >0 if OK
*/ */
function create() function create()
@ -95,7 +95,7 @@ class Fichinter extends CommonObject
$this->db->begin(); $this->db->begin();
// on v<EFBFBD>rifie si la ref n'est pas utilis<69>e // on verifie si la ref n'est pas utilisee
$soc = new Societe($this->db); $soc = new Societe($this->db);
$result=$soc->fetch($this->socid); $result=$soc->fetch($this->socid);
$this->verifyNumRef($soc); $this->verifyNumRef($soc);
@ -163,8 +163,8 @@ class Fichinter extends CommonObject
} }
/** /**
* \brief Charge en m<EFBFBD>moire la fiche intervention * \brief Charge en memoire la fiche intervention
* \param rowid Id de la fiche <EFBFBD> charger * \param rowid Id de la fiche a charger
* \return int <0 si ko, >0 si ok * \return int <0 si ko, >0 si ok
*/ */
function fetch($rowid) function fetch($rowid)
@ -240,8 +240,8 @@ class Fichinter extends CommonObject
} }
/** /**
* \brief Retourne le libell<EFBFBD> du statut de l'intervantion * \brief Retourne le libelle du statut de l'intervantion
* \return string Libell<EFBFBD> * \return string Libelle
*/ */
function getLibStatut($mode=0) function getLibStatut($mode=0)
{ {
@ -249,9 +249,9 @@ class Fichinter extends CommonObject
} }
/** /**
* \brief Renvoi le libell<EFBFBD> d'un statut donn<EFBFBD> * \brief Renvoi le libelle d'un statut donne
* \param statut id statut * \param statut id statut
* \return string Libell<EFBFBD> * \return string Libelle
*/ */
function LibStatut($statut,$mode=0) function LibStatut($statut,$mode=0)
{ {
@ -312,7 +312,7 @@ class Fichinter extends CommonObject
} }
/** /**
* \brief V<EFBFBD>rifie si la ref n'est pas d<EFBFBD>j<EFBFBD> utilis<EFBFBD>e * \brief Verifie si la ref n'est pas deja utilisee
* \param soc objet societe * \param soc objet societe
*/ */
function verifyNumRef($soc) function verifyNumRef($soc)
@ -333,8 +333,8 @@ class Fichinter extends CommonObject
/** /**
* \brief Renvoie la r<EFBFBD>f<EFBFBD>rence de fiche intervention suivante non utilis<EFBFBD>e en fonction du module * \brief Renvoie la reference de fiche intervention suivante non utilisee en fonction du module
* de num<EFBFBD>rotation actif d<EFBFBD>fini dans FICHEINTER_ADDON * de numerotation actif defini dans FICHEINTER_ADDON
* \param soc objet societe * \param soc objet societe
* \return string reference libre pour la fiche intervention * \return string reference libre pour la fiche intervention
*/ */
@ -349,7 +349,7 @@ class Fichinter extends CommonObject
{ {
$file = FICHEINTER_ADDON.".php"; $file = FICHEINTER_ADDON.".php";
// Chargement de la classe de num<EFBFBD>rotation // Chargement de la classe de numerotation
$classname = FICHEINTER_ADDON; $classname = FICHEINTER_ADDON;
require_once($dir.$file); require_once($dir.$file);
@ -376,7 +376,7 @@ class Fichinter extends CommonObject
} }
/** /**
* \brief Mets <EFBFBD> jour les commentaires publiques et priv<EFBFBD>s * \brief Mets a jour les commentaires publiques et prives
* \param note Commentaire * \param note Commentaire
* \param type Type de note * \param type Type de note
* \return int <0 si ko, >0 si ok * \return int <0 si ko, >0 si ok
@ -453,7 +453,7 @@ class Fichinter extends CommonObject
{ {
if ($user->rights->ficheinter->creer) if ($user->rights->ficheinter->creer)
{ {
//verif que le projet et la soci<EFBFBD>t<EFBFBD> concordent //verif que le projet et la societe concordent
$sql = 'SELECT p.rowid, p.title FROM '.MAIN_DB_PREFIX.'projet as p WHERE p.fk_soc ='.$this->socid.' AND p.rowid='.$project_id; $sql = 'SELECT p.rowid, p.title FROM '.MAIN_DB_PREFIX.'projet as p WHERE p.fk_soc ='.$this->socid.' AND p.rowid='.$project_id;
$sqlres = $this->db->query($sql); $sqlres = $this->db->query($sql);
if ($sqlres) if ($sqlres)
@ -490,7 +490,7 @@ class Fichinter extends CommonObject
if ( $this->db->query($sql) ) if ( $this->db->query($sql) )
{ {
// On efface le r<EFBFBD>pertoire du pdf // On efface le repertoire du pdf
$fichinterref = sanitize_string($this->ref); $fichinterref = sanitize_string($this->ref);
if ($conf->fichinter->dir_output) if ($conf->fichinter->dir_output)
{ {
@ -531,7 +531,7 @@ class Fichinter extends CommonObject
} }
/** /**
* \brief D<EFBFBD>finit une date de livraison du bon d'intervention * \brief Definit une date de livraison du bon d'intervention
* \param user Objet utilisateur qui modifie * \param user Objet utilisateur qui modifie
* \param date_creation date de livraison * \param date_creation date de livraison
* \return int <0 si ko, >0 si ok * \return int <0 si ko, >0 si ok
@ -559,7 +559,7 @@ class Fichinter extends CommonObject
} }
/** /**
* \brief D<EFBFBD>finit le label de l'intervention * \brief Definit le label de l'intervention
* \param user Objet utilisateur qui modifie * \param user Objet utilisateur qui modifie
* \param description description * \param description description
* \return int <0 si ko, >0 si ok * \return int <0 si ko, >0 si ok
@ -591,7 +591,7 @@ class Fichinter extends CommonObject
* \param fichinterid Id de la fiche d'intervention * \param fichinterid Id de la fiche d'intervention
* \param desc Description de la ligne * \param desc Description de la ligne
* \param date_intervention Date de l'intervention * \param date_intervention Date de l'intervention
* \param duration Dur<EFBFBD>e de l'intervention * \param duration Duree de l'intervention
* \return int >0 si ok, <0 si ko * \return int >0 si ok, <0 si ko
*/ */
function addline($fichinterid, $desc, $date_intervention, $duration) function addline($fichinterid, $desc, $date_intervention, $duration)
@ -626,38 +626,8 @@ class Fichinter extends CommonObject
} }
} }
/** /**
* \brief Supprime une ligne d'intervention * \brief Stocke un numero de rang pour toutes les lignes de
* \param idligne Id de la ligne detail <EFBFBD> supprimer
* \return int >0 si ok, <0 si ko
*/
function delete_line($idligne)
{
if ($this->statut == 0)
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."fichinterdet WHERE rowid = ".$idligne;
if ($this->db->query($sql) )
{
//Todo : faire un update du total de la dur<75>e
//$this->update_price();
return 1;
}
else
{
return -1;
}
}
else
{
return -2;
}
}
/**
* \brief Stocke un num<EFBFBD>ro de rang pour toutes les lignes de
* detail d'une fiche d'intervention qui n'en ont pas. * detail d'une fiche d'intervention qui n'en ont pas.
*/ */
function line_order() function line_order()
@ -781,14 +751,14 @@ class Fichinter extends CommonObject
} }
/** /**
* \brief Initialise la fiche intervention avec valeurs fictives al<EFBFBD>atoire * \brief Initialise la fiche intervention avec valeurs fictives aleatoire
* Sert <EFBFBD> g<EFBFBD>n<EFBFBD>rer une fiche intervention pour l'aperu des mod<EFBFBD>les ou demo * Sert a generer une fiche intervention pour l'aperu des modeles ou demo
*/ */
function initAsSpecimen() function initAsSpecimen()
{ {
global $user,$langs; global $user,$langs;
// Charge tableau des id de soci<EFBFBD>t<EFBFBD> socids // Charge tableau des id de societe socids
$socids = array(); $socids = array();
$sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."societe WHERE client=1 LIMIT 10"; $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."societe WHERE client=1 LIMIT 10";
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
@ -821,7 +791,7 @@ class Fichinter extends CommonObject
} }
} }
// Initialise param<EFBFBD>tres // Initialise parametres
$this->id=0; $this->id=0;
$this->ref = 'SPECIMEN'; $this->ref = 'SPECIMEN';
$this->specimen=1; $this->specimen=1;
@ -871,13 +841,13 @@ class FichinterLigne
var $fk_fichinter; var $fk_fichinter;
var $desc; // Description ligne var $desc; // Description ligne
var $datei; // Date intervention var $datei; // Date intervention
var $duration; // Dur<EFBFBD>e de l'intervention var $duration; // Duree de l'intervention
var $rang = 0; var $rang = 0;
/** /**
* \brief Constructeur d'objets ligne d'intervention * \brief Constructeur d'objets ligne d'intervention
* \param DB handler d'acc<EFBFBD>s base de donn<EFBFBD>e * \param DB handler d'acces base de donnee
*/ */
function FichinterLigne($DB) function FichinterLigne($DB)
{ {
@ -885,7 +855,7 @@ class FichinterLigne
} }
/** /**
* \brief Recup<EFBFBD>re l'objet ligne d'intervention * \brief Recupere l'objet ligne d'intervention
* \param rowid id de la ligne * \param rowid id de la ligne
*/ */
function fetch($rowid) function fetch($rowid)
@ -919,7 +889,7 @@ class FichinterLigne
} }
/** /**
* \brief Ins<EFBFBD>re l'objet ligne d'intervention en base * \brief Insere l'objet ligne d'intervention en base
* \return int <0 si ko, >0 si ok * \return int <0 si ko, >0 si ok
*/ */
function insert() function insert()
@ -930,7 +900,7 @@ class FichinterLigne
$rangToUse=$this->rang; $rangToUse=$this->rang;
if ($rangToUse == -1) if ($rangToUse == -1)
{ {
// R<EFBFBD>cup<EFBFBD>re rang max de la ligne d'intervention dans $rangmax // Recupere rang max de la ligne d'intervention dans $rangmax
$sql = 'SELECT max(rang) as max FROM '.MAIN_DB_PREFIX.'fichinterdet'; $sql = 'SELECT max(rang) as max FROM '.MAIN_DB_PREFIX.'fichinterdet';
$sql.= ' WHERE fk_fichinter ='.$this->fk_fichinter; $sql.= ' WHERE fk_fichinter ='.$this->fk_fichinter;
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
@ -1071,6 +1041,49 @@ class FichinterLigne
} }
} }
/**
* \brief Supprime une ligne d'intervention
* \return int >0 si ok, <0 si ko
*/
function delete_line()
{
if ($this->statut == 0)
{
dolibarr_syslog("FichinterLigne::delete_line lineid=".$this->rowid);
$this->db->begin();
$sql = "DELETE FROM ".MAIN_DB_PREFIX."fichinterdet WHERE rowid = ".$this->rowid;
$resql = $this->db->query($sql);
dolibarr_syslog("FichinterLigne::delete_line sql=".$sql);
if ($resql)
{
$result = $this->update_total();
if ($result > 0)
{
$this->db->commit();
return $result;
}
else
{
$this->db->rollback();
return -1;
}
}
else
{
$this->error=$this->db->error()." sql=".$sql;
dolibarr_syslog("FichinterLigne::delete_line Error ".$this->error);
$this->db->rollback();
return -1;
}
}
else
{
return -2;
}
}
} }