diff --git a/htdocs/fichinter/fiche.php b/htdocs/fichinter/fiche.php
index d432958f076..1d369b40c20 100644
--- a/htdocs/fichinter/fiche.php
+++ b/htdocs/fichinter/fiche.php
@@ -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 '
| '.$langs->trans("TotalDuration").' | '.$fichinter->duree.' |
';
+ print '| '.$langs->trans("TotalDuration").' | '.ConvertSecondToTime($fichinter->duree).' |
';
// Description
print '| ';
@@ -658,7 +670,7 @@ elseif ($_GET["id"] > 0)
print ''; // ancre pour retourner sur la ligne
print nl2br($objp->description);
- print ' | '.dolibarr_print_date($objp->date_intervention,'%a %d %B %Y').' | ';
+ print ''.dolibarr_print_date($objp->date_intervention,'day').' | ';
print ''.ConvertSecondToTime($objp->duree).' | ';
print "\n";
diff --git a/htdocs/fichinter/fichinter.class.php b/htdocs/fichinter/fichinter.class.php
index 194c795557d..fd58a837dad 100644
--- a/htdocs/fichinter/fichinter.class.php
+++ b/htdocs/fichinter/fichinter.class.php
@@ -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;
}
}
diff --git a/htdocs/includes/modules/fichinter/modules_fichinter.php b/htdocs/includes/modules/fichinter/modules_fichinter.php
index 3f47b65b3be..5c2e43daedc 100644
--- a/htdocs/includes/modules/fichinter/modules_fichinter.php
+++ b/htdocs/includes/modules/fichinter/modules_fichinter.php
@@ -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;
}