* Copyright (C) 2004-2008 Laurent Destailleur * Copyright (C) 2005-2007 Regis Houssin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /** \file htdocs/fichinter/fiche.php \brief Fichier fiche intervention \ingroup ficheinter \version $Id$ */ require("./pre.inc.php"); require_once(DOL_DOCUMENT_ROOT."/html.formfile.class.php"); require_once(DOL_DOCUMENT_ROOT."/fichinter/fichinter.class.php"); require_once(DOL_DOCUMENT_ROOT."/includes/modules/fichinter/modules_fichinter.php"); require_once(DOL_DOCUMENT_ROOT."/lib/fichinter.lib.php"); require_once(DOL_DOCUMENT_ROOT."/lib/date.lib.php"); if ($conf->projet->enabled) { require_once(DOL_DOCUMENT_ROOT."/lib/project.lib.php"); require_once(DOL_DOCUMENT_ROOT."/project.class.php"); } if (defined("FICHEINTER_ADDON") && is_readable(DOL_DOCUMENT_ROOT ."/includes/modules/fichinter/mod_".FICHEINTER_ADDON.".php")) { require_once(DOL_DOCUMENT_ROOT ."/includes/modules/fichinter/mod_".FICHEINTER_ADDON.".php"); } $langs->load("companies"); $langs->load("interventions"); // Get parameters $fichinterid = isset($_GET["id"])?$_GET["id"]:''; // If socid provided by ajax company selector if (! empty($_POST['socid_id'])) { $_POST['socid'] = $_POST['socid_id']; $_REQUEST['socid'] = $_REQUEST['socid_id']; } // Security check if ($user->societe_id) $socid=$user->societe_id; $result = restrictedArea($user, 'ficheinter', $fichinterid, 'fichinter'); /* * Traitements des actions */ if ($_REQUEST["action"] != 'create' && $_REQUEST["action"] != 'add' && ! $_REQUEST["id"] > 0) { Header("Location: index.php"); return; } if ($_REQUEST['action'] == 'confirm_validate' && $_REQUEST['confirm'] == 'yes') { $fichinter = new Fichinter($db); $fichinter->id = $_GET["id"]; $result=$fichinter->valid($user, $conf->fichinter->outputdir); if ($result < 0) $mesg='
'.$fichinter->error.'
'; } if ($_POST["action"] == 'add') { $fichinter = new Fichinter($db); $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"]; $fichinter->author = $user->id; $fichinter->description = $_POST["description"]; $fichinter->ref = $_POST["ref"]; $fichinter->modelpdf = $_POST["model"]; if ($fichinter->socid > 0) { $result = $fichinter->create(); if ($result > 0) { $_GET["id"]=$result; // Force raffraichissement sur fiche venant d'etre cr��e $fichinterid=$result; } else { $mesg='
'.$fichinter->error.'
'; $_GET["action"] = 'create'; } } else { $mesg='
'.$langs->trans("ErrorFieldRequired",$langs->trans("ThirdParty")).'
'; $_GET["action"] = 'create'; } } if ($_POST["action"] == 'update') { $fichinter = new Fichinter($db); $fichinter->date = $db->idate(mktime(12, 1 , 1, $_POST["remonth"], $_POST["reday"], $_POST["reyear"])); $fichinter->socid = $_POST["socid"]; $fichinter->projet_id = $_POST["projetidp"]; $fichinter->author = $user->id; $fichinter->description = $_POST["description"]; $fichinter->ref = $_POST["ref"]; $fichinter->update($_POST["id"]); $_GET["id"]=$_POST["id"]; // Force raffraichissement sur fiche venant d'etre cr��e } /* * G�n�rer ou reg�n�rer le document PDF */ if ($_REQUEST['action'] == 'builddoc') // En get ou en post { if ($_REQUEST['lang_id']) { $outputlangs = new Translate("",$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; } } /* * Classer dans un projet */ if ($_POST['action'] == 'classin') { $fichinter = new Fichinter($db); $fichinter->fetch($_GET['id']); $fichinter->set_project($user, $_POST['projetidp']); } if ($_REQUEST['action'] == 'confirm_delete' && $_REQUEST['confirm'] == 'yes') { if ($user->rights->ficheinter->supprimer) { $fichinter = new Fichinter($db); $fichinter->fetch($_GET['id']); $fichinter->delete($user); } Header('Location: index.php?leftmenu=ficheinter'); exit; } if ($_POST['action'] == 'setdate_delivery') { $fichinter = new Fichinter($db); $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); } if ($_POST['action'] == 'setdescription') { $fichinter = new Fichinter($db); $fichinter->fetch($_GET['id']); $result=$fichinter->set_description($user,$_POST['description']); if ($result < 0) dolibarr_print_error($db,$fichinter->error); } /* * Ajout d'une ligne d'intervention */ 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']); $desc=$_POST['np_desc']; $date_intervention = $db->idate(mktime(12, 1 , 1, $_POST["dimonth"], $_POST["diday"], $_POST["diyear"])); $duration = ConvertTime2Seconds($_POST['durationhour'],$_POST['durationmin']); $fichinter->addline( $_POST['fichinterid'], $desc, $date_intervention, $duration ); if ($_REQUEST['lang_id']) { $outputlangs = new Translate("",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } fichinter_create($db, $fichinter, $fichinter->modelpdf, $outputlangs); } } /* * Mise � jour d'une ligne d'intervention */ if ($_POST['action'] == 'updateligne' && $user->rights->ficheinter->creer && $_POST["save"] == $langs->trans("Save")) { $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 = dolibarr_mktime(12, 1 , 1, $_POST["dimonth"], $_POST["diday"], $_POST["diyear"]); $duration = ConvertTime2Seconds($_POST['durationhour'],$_POST['durationmin']); $fichinterline->desc=$desc; $fichinterline->datei=$date_intervention; $fichinterline->duration=$duration; $result = $fichinterline->update(); if ($_REQUEST['lang_id']) { $outputlangs = new Translate("",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } fichinter_create($db, $fichinter, $fichinter->modelpdf, $outputlangs); } /* * Supprime une ligne d'intervention SANS confirmation */ 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); if ($fichinter->fetch($fichinterline->fk_fichinter) <= 0) { dolibarr_print_error($db); exit; } if ($_REQUEST['lang_id']) { $outputlangs = new Translate("",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } fichinter_create($db, $fichinter, $fichinter->modelpdf, $outputlangs); } /* * Supprime une ligne d'intervention AVEC confirmation */ if ($_REQUEST['action'] == 'confirm_deleteline' && $_REQUEST['confirm'] == 'yes' && $conf->global->PRODUIT_CONFIRM_DELETE_LINE) { 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); if ($fichinter->fetch($fichinterline->fk_fichinter) <= 0) { dolibarr_print_error($db); exit; } if ($_REQUEST['lang_id']) { $outputlangs = new Translate("",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } fichinter_create($db, $fichinter, $fichinter->modelpdf, $outputlangs); } Header('Location: '.$_SERVER["PHP_SELF"].'?id='.$_GET['id']); exit; } /* * Ordonnancement des lignes */ if ($_GET['action'] == 'up' && $user->rights->ficheinter->creer) { $fichinter = new Fichinter($db); $fichinter->fetch($_GET['id']); $fichinter->line_up($_GET['rowid']); if ($_REQUEST['lang_id']) { $outputlangs = new Translate("",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } 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) { $fichinter = new Fichinter($db); $fichinter->fetch($_GET['id']); $fichinter->line_down($_GET['rowid']); if ($_REQUEST['lang_id']) { $outputlangs = new Translate("",$conf); $outputlangs->setDefaultLang($_REQUEST['lang_id']); } fichinter_create($db, $fichinter, $fichinter->modelpdf, $outputlangs); Header ('Location: '.$_SERVER["PHP_SELF"].'?id='.$_GET["id"].'#'.$_GET['rowid']); exit; } /* * Affichage page */ $html = new Form($db); $formfile = new FormFile($db); llxHeader(); if ($_GET["action"] == 'create') { /* * Mode creation * Creation d'une nouvelle fiche d'intervention */ if ($_GET["socid"] > 0) { $societe=new Societe($db); $societe->fetch($_GET["socid"]); } print_titre($langs->trans("AddIntervention")); if ($mesg) print $mesg.'
'; if (! $conf->global->FICHEINTER_ADDON) { dolibarr_print_error($db,$langs->trans("Error")." ".$langs->trans("Error_FICHEINTER_ADDON_NotDefined")); exit; } $ficheinter = new Fichinter($db); $result=$ficheinter->fetch($fichinterid); $obj = $conf->global->FICHEINTER_ADDON; $obj = "mod_".$obj; $modFicheinter = new $obj; $numpr = $modFicheinter->getNextValue($societe,$ficheinter); print "
"; print ''; if ($_GET["socid"]) { print ''; print ""; } else { print ""; } print ""; print ""; print ""; print "\n"; if ($conf->projet->enabled && $_GET["socid"]) { // Projet associe $langs->load("project"); print ''; } // Model print ''; print ''; print '"; print ''; print "'; print ''; print '
".$langs->trans("Company")."".$societe->getNomUrl(1)."
".$langs->trans("Company").""; $html->select_societes('','socid','',1); print "
".$langs->trans("Date").""; $html->select_date(time(),"p",'','','','fichinter'); print "
".$langs->trans("Ref")."
'.$langs->trans("Project").''; if ($_GET["socid"]) $numprojet = $societe->has_projects(); if (!$numprojet) { print ''; print ''; if ($user->rights->projet->creer) { print ''; } print '
'.$langs->trans("NoProject").''.$langs->trans("Add").'
'; } else { select_projects($societe->id,'','projetidp'); } print '
'.$langs->trans("DefaultModel").''; $model=new ModelePDFFicheinter(); $liste=$model->liste_modeles($db); $html->select_array('model',$liste,$conf->global->FICHEINTER_ADDON_PDF); print "
'.$langs->trans("Description").'"; if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_SOCIETE) { // Editeur wysiwyg require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php"); $doleditor=new DolEditor('description','',280,'dolibarr_notes','In',true); $doleditor->Create(); } else { print ''; } print '
'; print ''; print '
'; print '
'; } elseif ($_GET["id"] > 0) { /* * Affichage en mode visu */ $fichinter = new Fichinter($db); $result=$fichinter->fetch($_GET["id"]); if (! $result > 0) { dolibarr_print_error($db); exit; } $fichinter->fetch_client(); if ($mesg) print $mesg."
"; $head = fichinter_prepare_head($fichinter); dolibarr_fiche_head($head, 'card', $langs->trans("InterventionCard")); /* * Confirmation de la suppression de la fiche d'intervention */ if ($_GET['action'] == 'delete') { $html->form_confirm($_SERVER["PHP_SELF"].'?id='.$fichinter->id, $langs->trans('DeleteIntervention'), $langs->trans('ConfirmDeleteIntervention'), 'confirm_delete'); print '
'; } /* * Confirmation de la validation de la fiche d'intervention */ if ($_GET['action'] == 'validate') { $html->form_confirm($_SERVER["PHP_SELF"].'?id='.$fichinter->id, $langs->trans('ValidateIntervention'), $langs->trans('ConfirmValidateIntervention'), 'confirm_validate'); print '
'; } /* * Confirmation de la suppression d'une ligne d'intervention */ if ($_GET['action'] == 'ask_deleteline' && $conf->global->PRODUIT_CONFIRM_DELETE_LINE) { $html->form_confirm($_SERVER["PHP_SELF"].'?id='.$fichinter->id.'&ligne='.$_GET["ligne"], $langs->trans('DeleteInterventionLine'), $langs->trans('ConfirmDeleteInterventionLine'), 'confirm_deleteline'); print '
'; } print ''; // Ref print ''; // Societe print ""; // Date print ''; print ''; // Projet if ($conf->projet->enabled) { $langs->load("projects"); print ''; } else { if ($fichinter->statut == 0 && $user->rights->ficheinter->creer) { if ($_GET['action'] != 'classer' && $fichinter->brouillon) print ''; print '
'.$langs->trans("Ref").''.$fichinter->ref.'
".$langs->trans("Company")."".$fichinter->client->getNomUrl(1)."
'; print ''; if ($_GET['action'] != 'editdate_delivery' && $fichinter->brouillon) print ''; print '
'; print $langs->trans('Date'); print 'id.'">'.img_edit($langs->trans('SetDateCreate'),1).'
'; print '
'; if ($_GET['action'] == 'editdate_delivery') { print '
'; print ''; $html->select_date($fichinter->date,'liv_','','','',"editdate_delivery"); print ''; print '
'; } else { print dolibarr_print_date($fichinter->date,'%a %d %B %Y'); } print '
'; print ''; $societe=new Societe($db); $societe->fetch($fichinter->socid); $numprojet = $societe->has_projects(); if (! $numprojet) { print '
'; print $langs->trans('Project').'
'; print '
'; print $langs->trans("NoProject").'  '; if ($fichinter->brouillon) print 'id.'&action=create>'.$langs->trans('AddProject').''; print ''.img_edit($langs->trans('SetProject')).'
'; print ''; if ($_GET['action'] == 'classer') { $html->form_project($_SERVER['PHP_SELF'].'?id='.$fichinter->id, $fichinter->socid, $fichinter->projetidp, 'projetidp'); } else { $html->form_project($_SERVER['PHP_SELF'].'?id='.$fichinter->id, $fichinter->socid, $fichinter->projetidp, 'none'); } print ''; } else { if (!empty($fichinter->projetidp)) { print ''; print ''; $proj = new Project($db); $proj->fetch($fichinter->projetidp); print ''; print $proj->title; print ''; print ''; } else { print ''; print ' '; } } } print ''; } // Duration print ''.$langs->trans("TotalDuration").''.ConvertSecondToTime($fichinter->duree).''; // Description print ''; print ''; if ($_GET['action'] != 'editdescription' && $fichinter->brouillon) print ''; print '
'; print $langs->trans('Description'); print 'id.'">'.img_edit($langs->trans('SetDescription'),1).'
'; print ''; if ($_GET['action'] == 'editdescription') { print '
'; print ''; if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_SOCIETE) { // Editeur wysiwyg require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php"); $doleditor=new DolEditor('description',$fichinter->description,280,'dolibarr_notes','In',true); $doleditor->Create(); } else { print ''; } print ''; print '
'; } else { print nl2br($fichinter->description); } print ''; print ''; // Statut print ''.$langs->trans("Status").''.$fichinter->getLibStatut(4).''; print "
"; /* * Lignes d'intervention */ print ''; $sql = 'SELECT ft.rowid, ft.description, ft.fk_fichinter, ft.duree, ft.rang'; $sql.= ', '.$db->pdate('ft.date').' as date_intervention'; $sql.= ' FROM '.MAIN_DB_PREFIX.'fichinterdet as ft'; $sql.= ' WHERE ft.fk_fichinter = '.$fichinterid; $sql.= ' ORDER BY ft.rang ASC, ft.rowid'; $resql = $db->query($sql); if ($resql) { $num = $db->num_rows($resql); $i = 0; if ($num) { print ''; print ''; print ''; print ''; print ''; print "\n"; } $var=true; while ($i < $num) { $objp = $db->fetch_object($resql); $var=!$var; // Ligne en mode visu if ($_GET['action'] != 'editline' || $_GET['ligne'] != $objp->rowid) { print ''; print ''; print ''; print "\n"; // Icone d'edition et suppression if ($fichinter->statut == 0 && $user->rights->ficheinter->creer) { print ''; print ''; if ($num > 1) { print ''; } } else { print ''; } print ''; } // Ligne en mode update if ($fichinter->statut == 0 && $_GET["action"] == 'editline' && $user->rights->ficheinter->creer && $_GET["ligne"] == $objp->rowid) { print 'rowid.'" method="post">'; print ''; print ''; print ''; print ''; print ''; // Date d'intervention print ''; // Duration print ''; print ''; print '' . "\n"; print "\n"; } $i++; } $db->free($resql); } else { dolibarr_print_error($db); } /* * Ajouter une ligne */ if ($fichinter->statut == 0 && $user->rights->ficheinter->creer && $_GET["action"] <> 'editline') { print ''; print ''; print ''; print ''; print ''; print "\n"; // Ajout ligne d'intervention print ''; print ''; print ''; $var=true; print '\n"; print ''; // Date d'intervention print ''; // Dur�e print ''; print ''; print ''; print ''; } print '
'.$langs->trans('Description').''.$langs->trans('Date').''.$langs->trans('Duration').' 
'; print ''; // ancre pour retourner sur la ligne print nl2br($objp->description); print ''.dolibarr_print_date($objp->date_intervention,'day').''.ConvertSecondToTime($objp->duree).''; print 'rowid.'#'.$objp->rowid.'">'; print img_edit(); print ''; print ''; if ($conf->global->PRODUIT_CONFIRM_DELETE_LINE) { if ($conf->use_javascript_ajax && $conf->global->MAIN_CONFIRM_AJAX) { $url = $_SERVER["PHP_SELF"].'?id='.$fichinter->id.'&ligne='.$objp->rowid.'&action=confirm_deleteline&confirm=yes'; print 'trans("No").'\',\'deleteline'.$i.'\')">'; print img_delete(); } else { print 'rowid.'">'; print img_delete(); } } else { print 'rowid.'">'; print img_delete(); } print ''; if ($i > 0) { print 'rowid.'">'; print img_up(); print ''; } if ($i < $num-1) { print 'rowid.'">'; print img_down(); print ''; } print ' 
'; print ''; // ancre pour retourner sur la ligne // �diteur wysiwyg if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS) { require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php"); $doleditor=new DolEditor('desc',$objp->description,164,'dolibarr_details'); $doleditor->Create(); } else { print ''; } print ''; $html->select_date($objp->date_intervention,'di',0,0,0,"date_intervention"); print ''; $html->select_duree('duration',$objp->duree); print ''; print '
'; print ''; // ancre print $langs->trans('Description').''.$langs->trans('Date').''.$langs->trans('Duration').' 
'; // �diteur wysiwyg if ($conf->fckeditor->enabled && $conf->global->FCKEDITOR_ENABLE_DETAILS) { require_once(DOL_DOCUMENT_ROOT."/lib/doleditor.class.php"); $doleditor=new DolEditor('np_desc','',100,'dolibarr_details'); $doleditor->Create(); } else { print ''; } print ''; $html->select_date(time(),'di',0,0,0,"addinter"); print ''; $html->select_duree('duration'); print '
'; print ''; print "\n"; /** * Barre d'actions * */ print ''; print '"; print "
'; /* * Documents g�n�r�s */ $filename=sanitize_string($fichinter->ref); $filedir=$conf->fichinter->dir_output . "/".$fichinter->ref; $urlsource=$_SERVER["PHP_SELF"]."?id=".$fichinter->id; $genallowed=$user->rights->ficheinter->creer; $delallowed=$user->rights->ficheinter->supprimer; $genallowed=1; $delallowed=1; $var=true; print "
\n"; $somethingshown=$formfile->show_documents('ficheinter',$filename,$filedir,$urlsource,$genallowed,$delallowed,$ficheinter->modelpdf); print "
"; print " 
\n"; } $db->close(); llxFooter('$Date$ - $Revision$'); ?>