Fix: Pb gestion erreur sur fiche intervention
Fix: Duree totale non mise a jour
This commit is contained in:
parent
791e616244
commit
15f6585fe9
@ -18,7 +18,6 @@
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* $Id$
|
||||
* $Source$
|
||||
*/
|
||||
|
||||
/**
|
||||
@ -75,7 +74,7 @@ if ($_POST["action"] == 'add')
|
||||
{
|
||||
$fichinter = new Fichinter($db);
|
||||
|
||||
$fichinter->date = dolibarr_mktime(12, 0 , 0, $_POST["pmonth"], $_POST["pday"], $_POST["pyear"]);
|
||||
$fichinter->date = dolibarr_mktime($_POST["phour"], $_POST["pmin"] , $_POST["psec"], $_POST["pmonth"], $_POST["pday"], $_POST["pyear"]);
|
||||
$fichinter->socid = $_POST["socid"];
|
||||
$fichinter->duree = $_POST["duree"];
|
||||
$fichinter->projet_id = $_POST["projetidp"];
|
||||
@ -125,18 +124,21 @@ if ($_POST["action"] == 'update')
|
||||
*/
|
||||
if ($_REQUEST['action'] == 'builddoc') // En get ou en post
|
||||
{
|
||||
if ($_REQUEST['lang_id'])
|
||||
{
|
||||
$outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf);
|
||||
$outputlangs->setDefaultLang($_REQUEST['lang_id']);
|
||||
}
|
||||
|
||||
$result=fichinter_pdf_create($db, $_REQUEST['id'], $_REQUEST['model'], $outputlangs);
|
||||
if ($result <= 0)
|
||||
{
|
||||
dolibarr_print_error($db,$result);
|
||||
exit;
|
||||
}
|
||||
if ($_REQUEST['lang_id'])
|
||||
{
|
||||
$outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf);
|
||||
$outputlangs->setDefaultLang($_REQUEST['lang_id']);
|
||||
}
|
||||
|
||||
$fichinter = new Fichinter($db);
|
||||
$fichinter->fetch($_GET['id']);
|
||||
|
||||
$result=fichinter_create($db, $fichinter, $_REQUEST['model'], $outputlangs);
|
||||
if ($result <= 0)
|
||||
{
|
||||
dolibarr_print_error($db,$result);
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@ -164,7 +166,7 @@ if ($_REQUEST['action'] == 'confirm_delete' && $_REQUEST['confirm'] == 'yes')
|
||||
if ($_POST['action'] == 'setdate_delivery')
|
||||
{
|
||||
$fichinter = new Fichinter($db);
|
||||
$fichinter->fetch($_GET['id']);
|
||||
$fichinter->fetch($_GET['id']);
|
||||
$result=$fichinter->set_date_delivery($user,dolibarr_mktime(12, 0, 0, $_POST['liv_month'], $_POST['liv_day'], $_POST['liv_year']));
|
||||
if ($result < 0) dolibarr_print_error($db,$fichinter->error);
|
||||
}
|
||||
@ -172,7 +174,7 @@ if ($_POST['action'] == 'setdate_delivery')
|
||||
if ($_POST['action'] == 'setdescription')
|
||||
{
|
||||
$fichinter = new Fichinter($db);
|
||||
$fichinter->fetch($_GET['id']);
|
||||
$fichinter->fetch($_GET['id']);
|
||||
$result=$fichinter->set_description($user,$_POST['description']);
|
||||
if ($result < 0) dolibarr_print_error($db,$fichinter->error);
|
||||
}
|
||||
@ -185,7 +187,7 @@ if ($_POST['action'] == "addligne" && $user->rights->ficheinter->creer)
|
||||
if ($_POST['np_desc'] && ($_POST['durationhour'] || $_POST['durationmin']))
|
||||
{
|
||||
$fichinter = new Fichinter($db);
|
||||
$ret=$fichinter->fetch($_POST['fichinterid']);
|
||||
$ret=$fichinter->fetch($_POST['fichinterid']);
|
||||
|
||||
$desc=$_POST['np_desc'];
|
||||
$date_intervention = $db->idate(mktime(12, 1 , 1, $_POST["dimonth"], $_POST["diday"], $_POST["diyear"]));
|
||||
@ -203,7 +205,7 @@ if ($_POST['action'] == "addligne" && $user->rights->ficheinter->creer)
|
||||
$outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf);
|
||||
$outputlangs->setDefaultLang($_REQUEST['lang_id']);
|
||||
}
|
||||
fichinter_pdf_create($db, $fichinter->id, $fichinter->modelpdf, $outputlangs);
|
||||
fichinter_create($db, $fichinter, $fichinter->modelpdf, $outputlangs);
|
||||
}
|
||||
}
|
||||
|
||||
@ -212,25 +214,34 @@ if ($_POST['action'] == "addligne" && $user->rights->ficheinter->creer)
|
||||
*/
|
||||
if ($_POST['action'] == 'updateligne' && $user->rights->ficheinter->creer && $_POST["save"] == $langs->trans("Save"))
|
||||
{
|
||||
$fichinter = new Fichinter($db);
|
||||
if (! $fichinter->fetch($_POST['fichinterid']) > 0) dolibarr_print_error($db);
|
||||
|
||||
$fichinterline = new FichinterLigne($db);
|
||||
if ($fichinterline->fetch($_POST['ligne']) <= 0)
|
||||
{
|
||||
dolibarr_print_error($db);
|
||||
exit;
|
||||
}
|
||||
$fichinter = new Fichinter($db);
|
||||
if ($fichinter->fetch($fichinterline->fk_fichinter) <= 0)
|
||||
{
|
||||
dolibarr_print_error($db);
|
||||
exit;
|
||||
}
|
||||
$desc=$_POST['desc'];
|
||||
$date_intervention = $db->idate(mktime(12, 1 , 1, $_POST["dimonth"], $_POST["diday"], $_POST["diyear"]));
|
||||
$date_intervention = dolibarr_mktime(12, 1 , 1, $_POST["dimonth"], $_POST["diday"], $_POST["diyear"]);
|
||||
$duration = ConvertTime2Seconds($_POST['durationhour'],$_POST['durationmin']);
|
||||
|
||||
$result = $fichinter->updateline($_POST['ligne'],
|
||||
$desc,
|
||||
$date_intervention,
|
||||
$duration
|
||||
);
|
||||
$fichinterline->desc=$desc;
|
||||
$fichinterline->datei=$date_intervention;
|
||||
$fichinterline->duration=$duration;
|
||||
$result = $fichinterline->update();
|
||||
|
||||
if ($_REQUEST['lang_id'])
|
||||
{
|
||||
$outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf);
|
||||
$outputlangs->setDefaultLang($_REQUEST['lang_id']);
|
||||
}
|
||||
fichinter_pdf_create($db, $fichinter->id, $fichinter->modelpdf, $outputlangs);
|
||||
fichinter_create($db, $fichinter, $fichinter->modelpdf, $outputlangs);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
@ -246,7 +257,7 @@ if ($_GET['action'] == 'deleteline' && $user->rights->ficheinter->creer && !$con
|
||||
$outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf);
|
||||
$outputlangs->setDefaultLang($_REQUEST['lang_id']);
|
||||
}
|
||||
fichinter_pdf_create($db, $fichinter->id, $fichinter->modelpdf, $outputlangs);
|
||||
fichinter_create($db, $fichinter, $fichinter->modelpdf, $outputlangs);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -264,7 +275,7 @@ if ($_REQUEST['action'] == 'confirm_deleteline' && $_REQUEST['confirm'] == 'yes'
|
||||
$outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf);
|
||||
$outputlangs->setDefaultLang($_REQUEST['lang_id']);
|
||||
}
|
||||
fichinter_pdf_create($db, $fichinter->id, $fichinter->modelpdf, $outputlangs);
|
||||
fichinter_create($db, $fichinter, $fichinter->modelpdf, $outputlangs);
|
||||
}
|
||||
Header('Location: '.$_SERVER["PHP_SELF"].'?id='.$_GET['id']);
|
||||
exit;
|
||||
@ -284,8 +295,9 @@ if ($_GET['action'] == 'up' && $user->rights->ficheinter->creer)
|
||||
$outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf);
|
||||
$outputlangs->setDefaultLang($_REQUEST['lang_id']);
|
||||
}
|
||||
fichinter_pdf_create($db, $fichinter->id, $fichinter->modelpdf, $outputlangs);
|
||||
fichinter_create($db, $fichinter, $fichinter->modelpdf, $outputlangs);
|
||||
Header ('Location: '.$_SERVER["PHP_SELF"].'?id='.$_GET["id"].'#'.$_GET['rowid']);
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($_GET['action'] == 'down' && $user->rights->ficheinter->creer)
|
||||
@ -298,7 +310,7 @@ if ($_GET['action'] == 'down' && $user->rights->ficheinter->creer)
|
||||
$outputlangs = new Translate(DOL_DOCUMENT_ROOT ."/langs",$conf);
|
||||
$outputlangs->setDefaultLang($_REQUEST['lang_id']);
|
||||
}
|
||||
fichinter_pdf_create($db, $fichinter->id, $fichinter->modelpdf, $outputlangs);
|
||||
fichinter_create($db, $fichinter, $fichinter->modelpdf, $outputlangs);
|
||||
Header ('Location: '.$_SERVER["PHP_SELF"].'?id='.$_GET["id"].'#'.$_GET['rowid']);
|
||||
exit;
|
||||
}
|
||||
@ -579,7 +591,7 @@ elseif ($_GET["id"] > 0)
|
||||
}
|
||||
|
||||
// Durée
|
||||
print '<tr><td>'.$langs->trans("TotalDuration").'</td><td>'.$fichinter->duree.'</td></tr>';
|
||||
print '<tr><td>'.$langs->trans("TotalDuration").'</td><td>'.ConvertSecondToTime($fichinter->duree).'</td></tr>';
|
||||
|
||||
// Description
|
||||
print '<tr><td>';
|
||||
@ -658,7 +670,7 @@ elseif ($_GET["id"] > 0)
|
||||
print '<a name="'.$objp->rowid.'"></a>'; // ancre pour retourner sur la ligne
|
||||
print nl2br($objp->description);
|
||||
|
||||
print '<td width="150">'.dolibarr_print_date($objp->date_intervention,'%a %d %B %Y').'</td>';
|
||||
print '<td width="150">'.dolibarr_print_date($objp->date_intervention,'day').'</td>';
|
||||
print '<td width="150">'.ConvertSecondToTime($objp->duree).'</td>';
|
||||
|
||||
print "</td>\n";
|
||||
|
||||
@ -169,8 +169,8 @@ class Fichinter extends CommonObject
|
||||
*/
|
||||
function fetch($rowid)
|
||||
{
|
||||
$sql = "SELECT ref, description, fk_soc, fk_statut";
|
||||
$sql.= ", ".$this->db->pdate(datei)." as di, fk_projet, note_public, note_private, model_pdf";
|
||||
$sql = "SELECT ref, description, fk_soc, fk_statut,";
|
||||
$sql.= " ".$this->db->pdate(datei)." as di, duree, fk_projet, note_public, note_private, model_pdf";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."fichinter";
|
||||
$sql.= " WHERE rowid=".$rowid;
|
||||
|
||||
@ -183,12 +183,13 @@ class Fichinter extends CommonObject
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
|
||||
$this->id = $rowid;
|
||||
$this->date = $obj->di;
|
||||
$this->ref = $obj->ref;
|
||||
$this->description = $obj->description;
|
||||
$this->socid = $obj->fk_soc;
|
||||
$this->projetidp = $obj->fk_projet;
|
||||
$this->statut = $obj->fk_statut;
|
||||
$this->date = $obj->di;
|
||||
$this->duree = $obj->duree;
|
||||
$this->projetidp = $obj->fk_projet;
|
||||
$this->note_public = $obj->note_public;
|
||||
$this->note_private = $obj->note_private;
|
||||
$this->modelpdf = $obj->model_pdf;
|
||||
@ -612,8 +613,8 @@ class Fichinter extends CommonObject
|
||||
$result=$ligne->insert();
|
||||
if ($result > 0)
|
||||
{
|
||||
$this->db->commit();
|
||||
return 1;
|
||||
$this->db->commit();
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -625,50 +626,6 @@ class Fichinter extends CommonObject
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Mise à jour d'une ligne d'intervention
|
||||
* \param fichinterid Id de la ligne
|
||||
* \param desc Description
|
||||
* \param date Date d'intervention
|
||||
* \param duration Durée de l'intervention
|
||||
* \return int 0 en cas de succès
|
||||
*/
|
||||
function updateline($fichinterid, $desc, $date_intervention, $duration)
|
||||
{
|
||||
dolibarr_syslog("Fichinter::UpdateLine $fichinterid, $desc, $date_intervention, $duration");
|
||||
|
||||
if ($this->statut == 0)
|
||||
{
|
||||
$this->db->begin();
|
||||
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."fichinterdet ";
|
||||
$sql.= " SET description='".addslashes($desc)."'";
|
||||
$sql.= " , date=".$date_intervention;
|
||||
$sql.= " , duree=".$duration;
|
||||
$sql.= " WHERE rowid = '".$fichinterid."';";
|
||||
|
||||
$result=$this->db->query($sql);
|
||||
if ($result > 0)
|
||||
{
|
||||
//Todo: mise à jour du total de la durée
|
||||
//$this->update_price();
|
||||
$this->db->commit();
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error=$this->db->error();
|
||||
$this->db->rollback();
|
||||
dolibarr_syslog("Fichinter::UpdateLine Erreur sql=$sql, error=".$this->error);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_syslog("Fichinter::UpdateLigne Erreur -2 Fiche intervention en mode incompatible pour cette action");
|
||||
return -2;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Supprime une ligne d'intervention
|
||||
@ -933,26 +890,31 @@ class FichinterLigne
|
||||
*/
|
||||
function fetch($rowid)
|
||||
{
|
||||
$sql = 'SELECT ft.rowid, ft.fk_fichinter, ft.description, ft.duree, ft.rang';
|
||||
$sql.= ', '.$db->pdate('ft.date').' as date_intervention';
|
||||
$sql.= ' FROM '.MAIN_DB_PREFIX.'propaldet as pd';
|
||||
$sql = 'SELECT ft.rowid, ft.fk_fichinter, ft.description, ft.duree, ft.rang,';
|
||||
$sql.= ' '.$this->db->pdate('ft.date').' as datei';
|
||||
$sql.= ' FROM '.MAIN_DB_PREFIX.'fichinterdet as ft';
|
||||
$sql.= ' WHERE ft.rowid = '.$rowid;
|
||||
|
||||
dolibarr_syslog("FichinterLigne::fetch sql=".$sql);
|
||||
$result = $this->db->query($sql);
|
||||
if ($result)
|
||||
{
|
||||
$objp = $this->db->fetch_object($result);
|
||||
$this->rowid = $objp->rowid;
|
||||
$this->fk_fichinter = $objp->fk_fichinter;
|
||||
$this->datei = $objp->date_intervention;
|
||||
$this->desc = $objp->description;
|
||||
$this->duration = $objp->duree;
|
||||
$this->rang = $objp->rang;
|
||||
$this->rowid = $objp->rowid;
|
||||
$this->fk_fichinter = $objp->fk_fichinter;
|
||||
$this->datei = $objp->datei;
|
||||
$this->desc = $objp->description;
|
||||
$this->duration = $objp->duree;
|
||||
$this->rang = $objp->rang;
|
||||
|
||||
$this->db->free($result);
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_print_error($this->db);
|
||||
$this->error=$this->db->error().' sql='.$sql;
|
||||
dolibarr_print_error($this->db,$this->error);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -995,21 +957,29 @@ class FichinterLigne
|
||||
$sql.= ' '.$rangToUse;
|
||||
$sql.= ')';
|
||||
|
||||
dolibarr_syslog("fichinterLigne.class::insert sql=$sql");
|
||||
|
||||
dolibarr_syslog("FichinterLigne::insert sql=".$sql);
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$this->rang=$rangToUse;
|
||||
$this->db->commit();
|
||||
return 1;
|
||||
$result=$this->update_total();
|
||||
if ($result > 0)
|
||||
{
|
||||
$this->rang=$rangToUse;
|
||||
$this->db->commit();
|
||||
return $result;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->db->rollback();
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error=$this->db->error()." sql=".$sql;
|
||||
dolibarr_syslog("FichinterLigne::insert Error ".$this->error);
|
||||
dolibarr_syslog("FichinterLigne::insert Error ".$this->error);
|
||||
$this->db->rollback();
|
||||
return -1;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1025,25 +995,77 @@ class FichinterLigne
|
||||
// Mise a jour ligne en base
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."fichinterdet SET";
|
||||
$sql.= " description='".addslashes($this->desc)."'";
|
||||
$sql.= ",date=".$this->datei;
|
||||
$sql.= ",date=".$this->db->idate($this->datei);
|
||||
$sql.= ",duree=".$this->duration;
|
||||
$sql.= ",rang='".$this->rang."'";
|
||||
$sql.= " WHERE rowid = ".$this->rowid;
|
||||
|
||||
dolibarr_syslog("FichinterLigne::update sql=".$sql);
|
||||
|
||||
dolibarr_syslog("FichinterLigne::update sql=".$sql);
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$this->db->commit();
|
||||
return 1;
|
||||
$result=$this->update_total();
|
||||
if ($result > 0)
|
||||
{
|
||||
$this->db->commit();
|
||||
return $result;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->db->rollback();
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error=$this->db->error();
|
||||
dolibarr_syslog("FichinterLigne::update Error ".$this->error);
|
||||
dolibarr_syslog("FichinterLigne::update Error ".$this->error);
|
||||
$this->db->rollback();
|
||||
return -2;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
function update_total()
|
||||
{
|
||||
// \TODO
|
||||
// Mettre à jour duree total dans table llx_fichinter
|
||||
$sql = "SELECT SUM(duree) as total_duration";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."fichinterdet";
|
||||
$sql.= " WHERE fk_fichinter=".$this->fk_fichinter;
|
||||
|
||||
dolibarr_syslog("FichinterLigne::update_total sql=".$sql);
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$obj=$this->db->fetch_object($resql);
|
||||
$total_duration=0;
|
||||
if ($obj) $total_duration = $obj->total_duration;
|
||||
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."fichinter";
|
||||
$sql.= " SET duree = ".$total_duration;
|
||||
$sql.= " WHERE rowid = ".$this->fk_fichinter;
|
||||
|
||||
dolibarr_syslog("FichinterLigne::update_total sql=".$sql);
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$this->db->commit();
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error=$this->db->error();
|
||||
dolibarr_syslog("FichinterLigne::update_total Error ".$this->error);
|
||||
$this->db->rollback();
|
||||
return -2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error=$this->db->error();
|
||||
dolibarr_syslog("FichinterLigne::update Error ".$this->error);
|
||||
$this->db->rollback();
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -157,12 +157,12 @@ class ModeleNumRefFicheinter
|
||||
/**
|
||||
\brief Crée une fiche intervention sur disque en fonction du modèle de FICHEINTER_ADDON_PDF
|
||||
\param db objet base de donnée
|
||||
\param id id de la fiche à créer
|
||||
\param object Object fichinter
|
||||
\param modele force le modele à utiliser ('' par defaut)
|
||||
\param outputlangs objet lang a utiliser pour traduction
|
||||
\return int 0 si KO, 1 si OK
|
||||
*/
|
||||
function fichinter_pdf_create($db, $id, $modele='', $outputlangs='')
|
||||
function fichinter_create($db, $object, $modele='', $outputlangs='')
|
||||
{
|
||||
global $conf,$langs;
|
||||
$langs->load("ficheinter");
|
||||
@ -192,7 +192,7 @@ function fichinter_pdf_create($db, $id, $modele='', $outputlangs='')
|
||||
|
||||
$obj = new $classname($db);
|
||||
|
||||
if ($obj->write_file($id,$outputlangs) > 0)
|
||||
if ($obj->write_file($object,$outputlangs) > 0)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user