* Copyright (C) 2004 Laurent Destailleur * * 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. * * $Id$ * $Source$ * */ require("./pre.inc.php"); require("./contrat.class.php"); require("../facture.class.php"); llxHeader(); $id = $_GET["id"]; $mesg = ''; /* * Sécurité accés client */ if ($user->societe_id > 0) { $action = ''; $socid = $user->societe_id; } if ($action == 'add') { $contrat = new Contrat($db); $id = $product->create($user); $action = ''; } if ($_POST["action"] == 'miseenservice') { $contrat = new Contrat($db); $contrat->id = $id; $contrat->fetch($id); $contrat->mise_en_service($user, mktime($_POST["date_starthour"],$_POST["date_startmin"],0,$_POST["date_startmonth"],$_POST["date_startday"],$_POST["date_startyear"]), 0, mktime($_POST["date_endhour"],$_POST["date_endmin"],0,$_POST["date_endmonth"],$_POST["date_endday"],$_POST["date_endyear"]) ); } if ($_GET["action"] == 'cloture') { $contrat = new Contrat($db); $contrat->id = $id; $contrat->cloture($user); } if ($_GET["action"] == 'annule') { $contrat = new Contrat($db); $contrat->id = $id; $contrat->annule($user); } if ($action == 'update' && $cancel <> 'Annuler') { $product = new Product($db); $product->ref = $_POST["ref"]; $product->libelle = $_POST["libelle"]; $product->price = $_POST["price"]; $product->tva_tx = $_POST["tva_tx"]; $product->description = $_POST["desc"]; $product->envente = $_POST["statut"]; $product->duration_value = $_POST["duration_value"]; $product->duration_unit = $_POST["duration_unit"]; if ( $product->update($id, $user)) { $action = ''; $mesg = 'Fiche mise à jour'; } else { $action = 'edit'; $mesg = 'Fiche non mise à jour !' . "
" . $product->mesg_error; } } $html = new Form($db); /* * Fiche création * */ if ($action == 'create') { print "
\n"; print "\n"; print ''."\n"; print '
Nouveau

'."\n"; print ''; print ""; print ''; print ''; print ''; print ''; print ""; if ($_POST["type"] == 1) { // Si contrat de type service print ''; } print ''; print '
Référence
Libellé
Prix de vente
Taux TVA'; print $html->select_tva("tva_tx"); print ' %
Description"; print '
Durée'; print 'jour '; print 'semaine '; print 'mois '; print 'année'; print '
 
'; print '
'; } else { /* * Fiche visu/édition * */ if ($id) { $contrat = new Contrat($db); $result = $contrat->fetch($id); if ( $result ) { $date_start=''; $date_end=''; print $mesg; /* * Affichage onglets */ $h = 0; $hselected=$h; $head[$h][0] = DOL_URL_ROOT.'/soc.php?socid='.$socid; $head[$h][1] = 'Fiche contrat : '.$contrat->id; $h++; dolibarr_fiche_head($head, $hselected); print ''; print ""; print ''; print ''; if ($contrat->factureid) { print ''; print ''; } else { print ''; } // Affiche statut contrat $now=mktime(); if ($contrat->enservice == 1) { if (! $contrat->date_fin_validite || $contrat->date_fin_validite >= $now) { $class = "normal"; $statut="En service"; } else { $class = "error"; $statut="En service, expiré"; } } elseif($contrat->enservice == 2) { $class = "normal"; $statut= "Cloturé"; } else { $class = "warning"; $statut= "Ce contrat n'est pas en service"; } print "\n"; if ($request == 'miseenservice') { // Si contrat lié à une ligne de facture, on recherche date debut et fin de la ligne if ($contrat->facturedetid) { $facturedet = new FactureLigne($db); $facturedet->fetch($contrat->facturedetid); $date_start=$facturedet->date_start; $date_end=$facturedet->date_end; } // Si date_start et date_end ne sont pas connues de la ligne de facture, on les // definit à une valeur par défaut en fonction de la durée définie pour le service. if (! $date_start) { $date_start=mktime(); } if (! $date_end) { if ($contrat->product->duration) { // Si duree du service connue $duree_value = substr($contrat->product->duration,0,strlen($contrat->product->duration)-1); $duree_unit = substr($contrat->product->duration,-1); $month = date("m",$date_start); $day = date("d",$date_start); $year = date("Y",$date_start); switch($duree_unit) { case "d": $day = $day + $duree_value; break; case "w": $day = $day + ($duree_value * 7); break; case "m": $month = $month + $duree_value; break; case "y": $year = $year + $duree_value; break; } $date_end = mktime(date("H",$date_start), date("i",$date_start), 0, $month, $day, $year); } } print ''; print ''; print ''; // Date de début de mise en service print ''; // Date de fin prévue de mise en service print ''; print ''; print ''; } if ($contrat->enservice > 0) { print ""; $contrat->user_service->fetch(); print ''; print '"; $contrat->user_cloture->fetch(); print ''; } print "
Service'.($contrat->product->ref).' - '.($contrat->product->label_url).'
Société'.$contrat->societe->nom_url.'FactureFactureSociété'.$contrat->societe->nom_url.'
Statut$statut
Durée standard pour ce service'; print $contrat->product->duration; print ''; print '
Date de mise en service'; print $html->select_date($date_start,'date_start',1,1); print " "; print '
Date de fin prévue'; print $html->select_date($date_end,'date_end',1,1); print " "; print '
'; print ''; print '
Mis en service".dolibarr_print_date($contrat->mise_en_service,"%d %B %Y à %H:%M"); print "par'.$contrat->user_service->fullname.'
Fin de validité'.dolibarr_print_date($contrat->date_fin_validite,"%d %B %Y à %H:%M"); } if ($contrat->enservice == 2) { print "
Cloturé".dolibarr_print_date($contrat->date_cloture,"%d %B %Y à %H:%M")."par'.$contrat->user_cloture->fullname.'
"; print '
'; print ''; } } else { print "Error"; } } /* ************************************************************************** */ /* */ /* Barre d'action */ /* */ /* ************************************************************************** */ print '
'; if (! $contrat->enservice) { if ($request != 'miseenservice') { print 'Mettre en service...'; } else { print 'Ne pas mettre en service'; } } elseif ($contrat->enservice == 1) { print 'Mettre hors service'; print 'Clôturer'; } print '
'; $db->close(); llxFooter("Dernière modification $Date$ révision $Revision$"); ?>