[ Index ]
 

Code source de Dolibarr 2.0.1

Accédez au Source d'autres logiciels libres

Classes | Fonctions | Variables | Constantes | Tables

title

Body

[fermer]

/htdocs/contrat/ -> fiche.php (source)

   1  <?php
   2  /* Copyright (C) 2003-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
   3   * Copyright (C) 2004-2005 Laurent Destailleur  <eldy@users.sourceforge.net>
   4   *
   5   * This program is free software; you can redistribute it and/or modify
   6   * it under the terms of the GNU General Public License as published by
   7   * the Free Software Foundation; either version 2 of the License, or
   8   * (at your option) any later version.
   9   *
  10   * This program is distributed in the hope that it will be useful,
  11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13   * GNU General Public License for more details.
  14   *
  15   * You should have received a copy of the GNU General Public License
  16   * along with this program; if not, write to the Free Software
  17   * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  18   *
  19   * $Id: fiche.php,v 1.71 2005/11/23 00:43:19 eldy Exp $
  20   * $Source: /cvsroot/dolibarr/dolibarr/htdocs/contrat/fiche.php,v $
  21   */
  22   
  23  /**
  24          \file       htdocs/contrat/fiche.php
  25          \ingroup    contrat
  26          \brief      Fiche contrat
  27          \version    $Revision: 1.71 $
  28  */
  29  
  30  require ("./pre.inc.php");
  31  if ($conf->projet->enabled)  require_once(DOL_DOCUMENT_ROOT."/project.class.php");
  32  if ($conf->propal->enabled)  require_once (DOL_DOCUMENT_ROOT."/propal.class.php");
  33  if ($conf->contrat->enabled) require_once (DOL_DOCUMENT_ROOT."/contrat/contrat.class.php");
  34  
  35  $langs->load("contracts");
  36  $langs->load("orders");
  37  $langs->load("companies");
  38  
  39  $user->getrights('contrat');
  40  
  41  if (! $user->rights->contrat->lire)
  42  accessforbidden();
  43  
  44  // Param si create
  45  $date_start='';
  46  $date_end='';
  47  if ($_POST["date_startmonth"] && $_POST["date_startday"] && $_POST["date_startyear"])
  48  {
  49      $date_start=mktime(12, 0 , 0, $_POST["date_startmonth"], $_POST["date_startday"], $_POST["date_startyear"]);
  50  }
  51  if ($_POST["date_endmonth"] && $_POST["date_endday"] && $_POST["date_endyear"])
  52  {
  53      $date_end=mktime(12, 0 , 0, $_POST["date_endmonth"], $_POST["date_endday"], $_POST["date_endyear"]);
  54  }
  55  // Param si updateligne
  56  $date_start_update='';
  57  $date_end_update='';
  58  $date_start_real_update='';
  59  $date_end_real_update='';
  60  if ($_POST["date_start_updatemonth"] && $_POST["date_start_updateday"] && $_POST["date_start_updateyear"])
  61  {
  62      $date_start_update=mktime(12, 0 , 0, $_POST["date_start_updatemonth"], $_POST["date_start_updateday"], $_POST["date_start_updateyear"]);
  63  }
  64  if ($_POST["date_end_updatemonth"] && $_POST["date_end_updateday"] && $_POST["date_end_updateyear"])
  65  {
  66      $date_end_update=mktime(12, 0 , 0, $_POST["date_end_updatemonth"], $_POST["date_end_updateday"], $_POST["date_end_updateyear"]);
  67  }
  68  if ($_POST["date_start_real_updatemonth"] && $_POST["date_start_real_updateday"] && $_POST["date_start_real_updateyear"])
  69  {
  70      $date_start_real_update=mktime(12, 0 , 0, $_POST["date_start_real_updatemonth"], $_POST["date_start_real_updateday"], $_POST["date_start_real_updateyear"]);
  71  }
  72  if ($_POST["date_end_real_updatemonth"] && $_POST["date_end_real_updateday"] && $_POST["date_end_real_updateyear"])
  73  {
  74      $date_end_real_update=mktime(12, 0 , 0, $_POST["date_end_real_updatemonth"], $_POST["date_end_real_updateday"], $_POST["date_end_real_updateyear"]);
  75  }
  76  
  77  // Sécurité accés client
  78  if ($user->societe_id > 0)
  79  {
  80      $action = '';
  81      $socidp = $user->societe_id;
  82  }
  83  
  84  
  85  /*
  86   * Actions
  87   */
  88  if ($_POST["action"] == 'add')
  89  {
  90      $datecontrat = mktime(12, 0 , 0, $_POST["remonth"], $_POST["reday"], $_POST["reyear"]);
  91  
  92      $contrat = new Contrat($db);
  93  
  94      $contrat->soc_id         = $_POST["soc_id"];
  95      $contrat->date_contrat   = $datecontrat;
  96  
  97      $contrat->commercial_suivi_id      = $_POST["commercial_suivi_id"];
  98      $contrat->commercial_signature_id  = $_POST["commercial_signature_id"];
  99  
 100      $contrat->note           = trim($_POST["note"]);
 101      $contrat->projetid       = trim($_POST["projetid"]);
 102      $contrat->remise_percent = trim($_POST["remise_percent"]);
 103      $contrat->ref            = trim($_POST["ref"]);
 104  
 105      $result = $contrat->create($user,$langs,$conf);
 106      if ($result > 0)
 107      {
 108          Header("Location: fiche.php?id=".$contrat->id);
 109          exit;
 110      }
 111      else {
 112          $mesg='<div class="error">'.$contrat->error.'</div>';
 113      }
 114  
 115      $_GET["socid"]=$_POST["soc_id"];
 116      $_GET["action"]='create';
 117      $action = '';
 118  }
 119  
 120  if ($_POST["action"] == 'classin')
 121  {
 122      $contrat = new Contrat($db);
 123      $contrat->fetch($_GET["id"]);
 124      $contrat->classin($_POST["projetid"]);
 125  }
 126  
 127  if ($_POST["action"] == 'addligne' && $user->rights->contrat->creer)
 128  {
 129      if ($_POST["pqty"] && (($_POST["pu"] && $_POST["desc"]) || $_POST["p_idprod"]))
 130      {
 131          $result = 0;
 132          $contrat = new Contrat($db);
 133          $result=$contrat->fetch($_GET["id"]);
 134          if (($_POST["p_idprod"] > 0 && $_POST["mode"]=='predefined') || ($_POST["mode"]=='libre'))
 135          {
 136              //print $_POST["desc"]." - ".$_POST["pu"]." - ".$_POST["pqty"]." - ".$_POST["tva_tx"]." - ".$_POST["p_idprod"]." - ".$_POST["premise"]; exit;
 137              $result = $contrat->addline(
 138                  $_POST["desc"],
 139                  $_POST["pu"],
 140                  $_POST["pqty"],
 141                  $_POST["tva_tx"],
 142                  $_POST["p_idprod"],
 143                  $_POST["premise"],
 144                  $date_start,
 145                  $date_end
 146                  );
 147          }
 148      
 149          if ($result >= 0)
 150          {
 151              Header("Location: fiche.php?id=".$contrat->id);
 152              exit;
 153          }
 154          else
 155          {
 156              $mesg='<div class="error">'.$contrat->error.'</div>';
 157          }
 158      }
 159  }
 160  
 161  if ($_POST["action"] == 'updateligne' && $user->rights->contrat->creer && $_POST["save"])
 162  {
 163      $contrat = new Contrat($db,"",$_GET["id"]);
 164      if ($contrat->fetch($_GET["id"]))
 165      {
 166          $result = $contrat->updateline($_POST["elrowid"],
 167              $_POST["eldesc"],
 168              $_POST["elprice"],
 169              $_POST["elqty"],
 170              $_POST["elremise_percent"],
 171              $date_start_update,
 172              $date_end_update,
 173              $_POST["eltva_tx"],
 174              $date_start_real_update,
 175              $date_end_real_update
 176              );
 177              
 178          if ($result > 0)
 179          {
 180              $db->commit();
 181          }
 182          else
 183          {
 184              dolibarr_print_error($db,"result=$result");
 185              $db->rollback();
 186          }        
 187      }
 188      else
 189      {
 190          dolibarr_print_error($db);
 191      }
 192  }
 193  
 194  if ($_POST["action"] == 'updateligne' && $user->rights->contrat->creer && $_POST["cancel"])
 195  {
 196      Header("Location: fiche.php?id=".$_GET["id"]);
 197  }
 198  
 199  if ($_GET["action"] == 'deleteline' && $user->rights->contrat->creer)
 200  {
 201      $contrat = new Contrat($db);
 202      $contrat->fetch($_GET["id"]);
 203      $result = $contrat->delete_line($_GET["lineid"]);
 204  
 205      if ($result == 0)
 206      {
 207          Header("Location: fiche.php?id=".$contrat->id);
 208      }
 209  }
 210  
 211  if ($_POST["action"] == 'confirm_valid' && $_POST["confirm"] == 'yes' && $user->rights->contrat->creer)
 212  {
 213      $contrat = new Contrat($db);
 214      $contrat->fetch($_GET["id"]);
 215      $result = $contrat->validate($user,$langs,$conf);
 216  }
 217  
 218  if ($_POST["action"] == 'confirm_close' && $_POST["confirm"] == 'yes' && $user->rights->contrat->creer)
 219  {
 220      $contrat = new Contrat($db);
 221      $contrat->fetch($_GET["id"]);
 222      $result = $contrat->cloture($user,$langs,$conf);
 223  }
 224  
 225  if ($_POST["action"] == 'confirm_delete' && $_POST["confirm"] == 'yes')
 226  {
 227      if ($user->rights->contrat->supprimer )
 228      {
 229          $contrat = new Contrat($db);
 230          $contrat->id = $_GET["id"];
 231          $contrat->delete($user,$langs,$conf);
 232          Header("Location: index.php");
 233          return;
 234      }
 235  }
 236  
 237  
 238  
 239  
 240  llxHeader('',$langs->trans("ContractCard"),"Contrat");
 241  
 242  $html = new Form($db);
 243  
 244  
 245  /*********************************************************************
 246   *
 247   * Mode creation
 248   *
 249   *********************************************************************/
 250  if ($_GET["action"] == 'create')
 251  {
 252      dolibarr_fiche_head($head, $a, $langs->trans("AddContract"));
 253  
 254      if ($mesg) print $mesg;
 255  
 256      $new_contrat = new Contrat($db);
 257  
 258      $sql = "SELECT s.nom, s.prefix_comm, s.idp ";
 259      $sql .= "FROM ".MAIN_DB_PREFIX."societe as s ";
 260      $sql .= "WHERE s.idp = ".$_GET["socid"];
 261  
 262      $resql=$db->query($sql);
 263      if ($resql)
 264      {
 265          $num = $db->num_rows($resql);
 266          if ($num)
 267          {
 268              $obj = $db->fetch_object($resql);
 269  
 270              $soc = new Societe($db);
 271              $soc->fetch($obj->idp);
 272  
 273              print '<form action="fiche.php" method="post">';
 274  
 275              print '<input type="hidden" name="action" value="add">';
 276              print '<input type="hidden" name="soc_id" value="'.$soc->id.'">'."\n";
 277              print '<input type="hidden" name="remise_percent" value="0">';
 278  
 279              print '<table class="border" width="100%">';
 280  
 281              // Ref
 282              print '<tr><td>'.$langs->trans("Ref").'</td>';
 283              print '<td><input type="text" maxlength="30" name="ref" size="20"></td></tr>';
 284              
 285              // Customer
 286              print '<tr><td>'.$langs->trans("Customer").'</td><td><a href="'.DOL_URL_ROOT.'/comm/fiche.php?socid='.$soc->id.'">'.$obj->nom.'</a></td></tr>';
 287  
 288              // Commercial suivi
 289              print '<tr><td width="20%" nowrap>'.$langs->trans("TypeContact_contrat_internal_SALESREPFOLL").'</td><td>';
 290              print '<select name="commercial_suivi_id">';
 291              print '<option value="-1">&nbsp;</option>';
 292  
 293              $sql = "SELECT rowid, name, firstname FROM ".MAIN_DB_PREFIX."user";
 294              $sql.= " ORDER BY name ";
 295              $resql=$db->query( $sql);
 296              if ($resql)
 297              {
 298                  $num = $db->num_rows($resql);
 299                  if ( $num > 0 )
 300                  {
 301                      $i = 0;
 302                      while ($i < $num)
 303                      {
 304                          $row = $db->fetch_row($resql);
 305                          print '<option value="'.$row[0].'">'.$row[1] . " " . $row[2].'</option>';
 306                          $i++;
 307                      }
 308                  }
 309                  $db->free($resql);
 310  
 311              }
 312              print '</select></td></tr>';
 313  
 314              // Commercial signature
 315              print '<tr><td width="20%" nowrap>'.$langs->trans("TypeContact_contrat_internal_SALESREPSIGN").'</td><td>';
 316              print '<select name="commercial_signature_id">';
 317              print '<option value="-1">&nbsp;</option>';
 318              $sql = "SELECT rowid, name, firstname FROM ".MAIN_DB_PREFIX."user";
 319              $sql.= " ORDER BY name";
 320              $resql=$db->query( $sql);
 321              if ($resql)
 322              {
 323                  $num = $db->num_rows($resql);
 324                  if ( $num > 0 )
 325                  {
 326                      $i = 0;
 327                      while ($i < $num)
 328                      {
 329                          $row = $db->fetch_row($resql);
 330                          print '<option value="'.$row[0].'">'.$row[1] . " " . $row[2].'</option>';
 331                          $i++;
 332                      }
 333                  }
 334                  $db->free($resql);
 335  
 336              }
 337              print '</select></td></tr>';
 338  
 339              print '<tr><td>'.$langs->trans("Date").'</td><td>';
 340              $html->select_date();
 341              print "</td></tr>";
 342  
 343              if ($conf->projet->enabled)
 344              {
 345                  print '<tr><td>'.$langs->trans("Project").'</td><td>';
 346                  $proj = new Project($db);
 347                  $html->select_array("projetid",$proj->liste_array($soc->id),0,1);
 348                  print "</td></tr>";
 349              }
 350   
 351              print '<tr><td>'.$langs->trans("Comment").'</td><td valign="top">';
 352              print '<textarea name="note" wrap="soft" cols="70" rows="3"></textarea></td></tr>';
 353  
 354              print '<tr><td colspan="2" align="center"><input type="submit" class="button" value="'.$langs->trans("Create").'"></td></tr>';
 355  
 356              print "</table>\n";
 357  
 358              print "</form>\n";
 359  
 360              if ($propalid)
 361              {
 362                  /*
 363                   * Produits
 364                   */
 365                  print '<br>';
 366                  print_titre($langs->trans("Products"));
 367  
 368                  print '<table class="noborder" width="100%">';
 369                  print '<tr class="liste_titre"><td>'.$langs->trans("Ref").'</td><td>'.$langs->trans("Product").'</td>';
 370                  print '<td align="right">'.$langs->trans("Price").'</td><td align="center">'.$langs->trans("Discount").'</td><td align="center">'.$langs->trans("Qty").'</td></tr>';
 371  
 372                  $sql = "SELECT pt.rowid, p.label as product, p.ref, pt.price, pt.qty, p.rowid as prodid, pt.remise_percent";
 373                  $sql .= " FROM ".MAIN_DB_PREFIX."propaldet as pt, ".MAIN_DB_PREFIX."product as p WHERE pt.fk_product = p.rowid AND pt.fk_propal = $propalid";
 374                  $sql .= " ORDER BY pt.rowid ASC";
 375                  $result = $db->query($sql);
 376                  if ($result)
 377                  {
 378                      $num = $db->num_rows($result);
 379                      $i = 0;
 380                      $var=True;
 381                      while ($i < $num)
 382                      {
 383                          $objp = $db->fetch_object($result);
 384                          $var=!$var;
 385                          print "<tr $bc[$var]><td>[$objp->ref]</td>\n";
 386                          print '<td>'.$objp->product.'</td>';
 387                          print "<td align=\"right\">".price($objp->price)."</td>";
 388                          print '<td align="center">'.$objp->remise_percent.'%</td>';
 389                          print "<td align=\"center\">".$objp->qty."</td></tr>\n";
 390                          $i++;
 391                      }
 392                  }
 393                  $sql = "SELECT pt.rowid, pt.description as product, pt.price, pt.qty, pt.remise_percent";
 394                  $sql.= " FROM ".MAIN_DB_PREFIX."propaldet as pt";
 395                  $sql.= " WHERE  pt.fk_propal = $propalid AND pt.fk_product = 0";
 396                  $sql.= " ORDER BY pt.rowid ASC";
 397                  $result=$db->query($sql);
 398                  if ($result)
 399                  {
 400                      $num = $db->num_rows($result);
 401                      $i = 0;
 402                      while ($i < $num)
 403                      {
 404                          $objp = $db->fetch_object($result);
 405                          $var=!$var;
 406                          print "<tr $bc[$var]><td>&nbsp;</td>\n";
 407                          print '<td>'.$objp->product.'</td>';
 408                          print '<td align="right">'.price($objp->price).'</td>';
 409                          print '<td align="center">'.$objp->remise_percent.'%</td>';
 410                          print "<td align=\"center\">".$objp->qty."</td></tr>\n";
 411                          $i++;
 412                      }
 413                  }
 414                  else
 415                  {
 416                      dolibarr_print_error($db);
 417                  }
 418  
 419                  print '</table>';
 420              }
 421          }
 422      }
 423      else
 424      {
 425          dolibarr_print_error($db);
 426      }
 427      
 428      print '</div>';
 429  }
 430  else
 431  /* *************************************************************************** */
 432  /*                                                                             */
 433  /* Mode vue et edition                                                         */
 434  /*                                                                             */
 435  /* *************************************************************************** */
 436  {
 437      $id = $_GET["id"];
 438      if ($id > 0)
 439      {
 440          $contrat = New Contrat($db);
 441          $result=$contrat->fetch($id);
 442          if ($result < 0)
 443          {
 444              dolibarr_print_error($db,$contrat->error);
 445              exit;
 446          }
 447  
 448          if ($mesg) print $mesg;
 449          
 450          $author = new User($db);
 451          $author->id = $contrat->user_author_id;
 452          $author->fetch();
 453          
 454          $commercial_signature = new User($db);
 455          $commercial_signature->id = $contrat->commercial_signature_id;
 456          $commercial_signature->fetch();
 457  
 458          $commercial_suivi = new User($db);
 459          $commercial_suivi->id = $contrat->commercial_suivi_id;
 460          $commercial_suivi->fetch();
 461  
 462          $h = 0;
 463          $head[$h][0] = DOL_URL_ROOT.'/contrat/fiche.php?id='.$contrat->id;
 464          $head[$h][1] = $langs->trans("ContractCard");
 465          $hselected = $h;
 466          $h++;
 467  
 468          $head[$h][0] = DOL_URL_ROOT.'/contrat/contact.php?id='.$contrat->id;
 469          $head[$h][1] = $langs->trans("ContractContacts");
 470          $h++;
 471          
 472          $head[$h][0] = DOL_URL_ROOT.'/contrat/info.php?id='.$contrat->id;
 473          $head[$h][1] = $langs->trans("Info");
 474          $h++;      
 475  
 476          dolibarr_fiche_head($head, $hselected, $langs->trans("Contract").': '.$contrat->id);
 477  
 478  
 479          /*
 480           * Confirmation de la suppression du contrat
 481           */
 482          if ($_GET["action"] == 'delete')
 483          {
 484              $html->form_confirm("fiche.php?id=$id",$langs->trans("DeleteAContract"),$langs->trans("ConfirmDeleteAContract"),"confirm_delete");
 485              print '<br>';
 486          }
 487  
 488          /*
 489           * Confirmation de la validation
 490           */
 491          if ($_GET["action"] == 'valid')
 492          {
 493              //$numfa = contrat_get_num($soc);
 494              $html->form_confirm("fiche.php?id=$id",$langs->trans("ValidateAContract"),$langs->trans("ConfirmValidateContract"),"confirm_valid");
 495              print '<br>';
 496          }
 497  
 498          /*
 499           * Confirmation de la fermeture
 500           */
 501          if ($_GET["action"] == 'close')
 502          {
 503              $html->form_confirm("fiche.php?id=$id",$langs->trans("CloseAContract"),$langs->trans("ConfirmCloseContract"),"confirm_close");
 504              print '<br>';
 505          }
 506  
 507          /*
 508           *   Contrat
 509           */
 510          if ($contrat->brouillon == 1 && $user->rights->contrat->creer)
 511          {
 512              print '<form action="fiche.php?id='.$id.'" method="post">';
 513              print '<input type="hidden" name="action" value="setremise">';
 514          }
 515  
 516          print '<table class="border" width="100%">';
 517  
 518          // Ref du contrat
 519          print '<tr><td width="25%">'.$langs->trans("Ref").'</td><td colspan="3">';
 520          print $contrat->ref;
 521          print "</td></tr>";
 522  
 523          // Customer
 524          print "<tr><td>".$langs->trans("Customer")."</td>";
 525          print '<td colspan="3">';
 526          print '<b><a href="'.DOL_URL_ROOT.'/comm/fiche.php?socid='.$contrat->societe->id.'">'.$contrat->societe->nom.'</a></b></td></tr>';
 527  
 528          // Statut contrat
 529          print '<tr><td>'.$langs->trans("Status").'</td><td colspan="3">';
 530          print $contrat->statuts[$contrat->statut];
 531          print "</td></tr>";
 532  
 533          // Date
 534          print '<tr><td>'.$langs->trans("Date").'</td>';
 535          print '<td colspan="3">'.dolibarr_print_date($contrat->date_contrat,"%A %d %B %Y")."</td></tr>\n";
 536  
 537          // Factures associées
 538          /*
 539          TODO
 540          */
 541  
 542          // Projet
 543          if ($conf->projet->enabled)
 544          {
 545              $langs->load("projects");
 546              print '<tr><td>';
 547              print '<table width="100%" class="nobordernopadding"><tr><td>';
 548              print $langs->trans("Project");
 549              print '</td>';
 550              if ($_GET["action"] != "classer") print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=classer&amp;id='.$id.'">'.img_edit($langs->trans("SetProject")).'</a></td>';
 551              print '</tr></table>';
 552              print '</td><td colspan="3">';
 553              if ($_GET["action"] == "classer")
 554              {
 555                  $html->form_project("fiche.php?id=$id",$contrat->fk_soc,$contrat->fk_projet,"projetid");
 556              }
 557              else
 558              {
 559                  $html->form_project("fiche.php?id=$id",$contrat->fk_soc,$contrat->fk_projet,"none");
 560              }
 561              print "</td></tr>";
 562          }
 563  
 564  /* Remplacer par fonction des contacts de contrat
 565          // Commerciaux
 566          print '<tr><td width="25%">'.$langs->trans("SalesRepresentativeFollowUp").'</td><td>'.$commercial_suivi->fullname.'</td>';
 567          print '<td width="25%">'.$langs->trans("SalesRepresentativeSignature").'</td><td>'.$commercial_signature->fullname.'</td></tr>';
 568  */
 569          print "</table>";
 570  
 571          if ($contrat->brouillon == 1 && $user->rights->contrat->creer)
 572          {
 573              print '</form>';
 574          }
 575  
 576          /*
 577           * Lignes de contrats
 578           */
 579          echo '<br><table class="noborder" width="100%">';
 580  
 581          $sql = "SELECT cd.statut, cd.label as label_det, cd.fk_product, cd.description, cd.price_ht, cd.qty, cd.rowid, cd.tva_tx, cd.remise_percent, cd.subprice,";
 582          $sql.= " ".$db->pdate("cd.date_ouverture_prevue")." as date_debut, ".$db->pdate("cd.date_ouverture")." as date_debut_reelle,";
 583          $sql.= " ".$db->pdate("cd.date_fin_validite")." as date_fin, ".$db->pdate("cd.date_cloture")." as date_fin_reelle,";
 584          $sql.= " p.ref, p.label";
 585          $sql.= " FROM ".MAIN_DB_PREFIX."contratdet as cd";
 586          $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON cd.fk_product = p.rowid";
 587          $sql.= " WHERE cd.fk_contrat = ".$id;
 588          $sql.= " ORDER BY cd .rowid";
 589  
 590          $result = $db->query($sql);
 591          if ($result)
 592          {
 593              $num = $db->num_rows($result);
 594              $i = 0; $total = 0;
 595  
 596              if ($num)
 597              {
 598                  print '<tr class="liste_titre">';
 599                  print '<td>'.$langs->trans("Service").'</td>';
 600                  print '<td width="50" align="center">'.$langs->trans("VAT").'</td>';
 601                  print '<td width="50" align="right">'.$langs->trans("PriceUHT").'</td>';
 602                  print '<td width="30" align="center">'.$langs->trans("Qty").'</td>';
 603                  print '<td width="50" align="right">'.$langs->trans("Discount").'</td>';
 604                  print '<td width="30">&nbsp;</td>';
 605                  print '<td width="30" align="center">'.$langs->trans("Status").'</td>';
 606                  print "</tr>\n";
 607              }
 608              $var=true;
 609              while ($i < $num)
 610              {
 611                  $objp = $db->fetch_object($result);
 612  
 613                  $var=!$var;
 614  
 615                  if ($_GET["action"] != 'editline' || $_GET["rowid"] != $objp->rowid)
 616                  {
 617  
 618                      print '<tr '.$bc[$var].' valign="top">';
 619                      // Libelle
 620                      if ($objp->fk_product > 0)
 621                      {
 622                          print '<td>';
 623                          print '<a href="'.DOL_URL_ROOT.'/product/fiche.php?id='.$objp->fk_product.'">';
 624                          print img_object($langs->trans("ShowService"),"service").' '.$objp->ref.'</a>';
 625                          print $objp->label?' - '.$objp->label:'';
 626                          if ($objp->description) print '<br />'.stripslashes(nl2br($objp->description));
 627                          print '</td>';
 628                      }
 629                      else
 630                      {
 631                          print "<td>".stripslashes(nl2br($objp->description))."</td>\n";
 632                      }
 633                      // TVA
 634                      print '<td align="center">'.$objp->tva_tx.'%</td>';
 635                      // Prix
 636                      print '<td align="right">'.price($objp->subprice)."</td>\n";
 637                      // Quantité
 638                      print '<td align="center">'.$objp->qty.'</td>';
 639                      // Remise
 640                      if ($objp->remise_percent > 0)
 641                      {
 642                          print '<td align="right">'.$objp->remise_percent."%</td>\n";
 643                      }
 644                      else
 645                      {
 646                          print '<td>&nbsp;</td>';
 647                      }
 648                      // Icon update et delete (statut contrat 0=brouillon,1=validé,2=fermé)
 649                      print '<td align="center" nowrap>';
 650                      if ($contrat->statut != 2  && $user->rights->contrat->creer)
 651                      {
 652                          print '<a href="fiche.php?id='.$id.'&amp;action=editline&amp;rowid='.$objp->rowid.'">';
 653                          print img_edit();
 654                          print '</a>';
 655                      }
 656                      else {
 657                          print '&nbsp;';
 658                      }
 659                      if ($contrat->statut == 0  && $user->rights->contrat->creer)
 660                      {
 661                          print '&nbsp;';
 662                          print '<a href="fiche.php?id='.$id.'&amp;action=deleteline&amp;lineid='.$objp->rowid.'">';
 663                          print img_delete();
 664                          print '</a>';
 665                      }
 666                      print '</td>';
 667          
 668                      // Statut
 669                      print '<td align="center">';
 670                      if ($contrat->statut > 0) print '<a href="'.DOL_URL_ROOT.'/contrat/ligne.php?id='.$contrat->id.'&amp;ligne='.$objp->rowid.'">';;
 671                      print img_statut($objp->statut);
 672                      if ($contrat->statut > 0) print '</a>';
 673                      print '</td>';
 674  
 675                      print "</tr>\n";
 676  
 677                      // Dates de en service prévues et effectives
 678                      
 679                      print '<tr '.$bc[$var].'>';
 680                      print '<td colspan="7">';
 681  
 682                      // Date prévues
 683                      print $langs->trans("DateStartPlanned").': ';
 684                      if ($objp->date_debut) {
 685                          print dolibarr_print_date($objp->date_debut);
 686                          // Warning si date prevu passée et pas en service
 687                          if ($objp->statut == 0 && $objp->date_debut < time() - $conf->contrat->warning_delay) { print " ".img_warning($langs->trans("Late")); }
 688                      }
 689                      else print $langs->trans("Unknown");
 690                      print ' &nbsp;-&nbsp; ';
 691                      print $langs->trans("DateEndPlanned").': ';
 692                      if ($objp->date_fin) {
 693                          print dolibarr_print_date($objp->date_fin);
 694                          if ($objp->statut == 4 && $objp->date_fin < time() - $conf->contrat->warning_delay) { print " ".img_warning($langs->trans("Late")); }
 695                      }
 696                      else print $langs->trans("Unknown");
 697  
 698                      print '<br>';
 699  
 700                      // Si pas encore activé
 701                      if (! $objp->date_debut_reelle) {
 702                          print $langs->trans("DateStartReal").': ';
 703                          if ($objp->date_debut_reelle) print dolibarr_print_date($objp->date_debut_reelle);
 704                          else print $langs->trans("ContractStatusNotRunning");
 705                      }
 706                      // Si activé et en cours
 707                      if ($objp->date_debut_reelle && ! $objp->date_fin_reelle) {
 708                          print $langs->trans("DateStartReal").': ';
 709                          print dolibarr_print_date($objp->date_debut_reelle);
 710                      }
 711                      // Si désactivé
 712                      if ($objp->date_debut_reelle && $objp->date_fin_reelle) {
 713                          print $langs->trans("DateStartReal").': ';
 714                          print dolibarr_print_date($objp->date_debut_reelle);
 715                          print ' &nbsp;-&nbsp; ';
 716                          print $langs->trans("DateEndReal").': ';
 717                          print dolibarr_print_date($objp->date_fin_reelle);
 718                      }
 719                      print '</td>';
 720                      print '</tr>';                    
 721                  }
 722  
 723                  // Ligne en mode update
 724                  else
 725                  {
 726                      print "<form action=\"fiche.php?id=$id\" method=\"post\">";
 727                      print '<input type="hidden" name="action" value="updateligne">';
 728                      print '<input type="hidden" name="elrowid" value="'.$_GET["rowid"].'">';
 729                      // Ligne carac
 730                      print "<tr $bc[$var]>";
 731                      print '<td>';
 732                      if ($objp->fk_product)
 733                      {
 734                          print '<a href="'.DOL_URL_ROOT.'/product/fiche.php?id='.$objp->fk_product.'">';
 735                          print img_object($langs->trans("ShowService"),"service").' '.$objp->ref.'</a>';
 736                          print $objp->label?' - '.$objp->label:'';
 737                          print '</br>';
 738                      }
 739                      else
 740                      {
 741                          print $objp->label?$objp->label.'<br>':'';
 742                      }
 743                      print '<textarea name="eldesc" cols="70" rows="1">'.$objp->description.'</textarea></td>';
 744                      print '<td align="right">';
 745                      print $html->select_tva("eltva_tx",$objp->tva_tx,$mysoc,$contrat->societe);
 746                      print '</td>';
 747                      print '<td align="right"><input size="6" type="text" name="elprice" value="'.price($objp->subprice).'"></td>';
 748                      print '<td align="center"><input size="3" type="text" name="elqty" value="'.$objp->qty.'"></td>';
 749                      print '<td align="right"><input size="1" type="text" name="elremise_percent" value="'.$objp->remise_percent.'">%</td>';
 750                      print '<td align="center" colspan="3" rowspan="2" valign="middle"><input type="submit" class="button" name="save" value="'.$langs->trans("Modify").'">';
 751                      print '<br><input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'">';
 752                      print '</td>';
 753                      // Ligne dates prévues
 754                      print "<tr $bc[$var]>";
 755                      print '<td colspan="5">';
 756                      print $langs->trans("DateStartPlanned").' ';
 757                      $html->select_date($objp->date_debut,"date_start_update",0,0,($objp->date_debut>0?0:1));
 758                      print ' &nbsp; '.$langs->trans("DateEndPlanned").' ';
 759                      $html->select_date($objp->date_fin,"date_end_update",0,0,($objp->date_fin>0?0:1));
 760                      if ($objp->statut >= 4)
 761                      {
 762                          print '<br>';
 763                          print $langs->trans("DateStartReal").' ';
 764                          $html->select_date($objp->date_debut_reelle,"date_start_real_update",0,0,($objp->date_debut_reelle>0?0:1));
 765                          print ' &nbsp; ';
 766                          if ($objp->statut == 5)
 767                          {
 768                              print $langs->trans("DateEndReal").' ';
 769                              $html->select_date($objp->date_fin_reelle,"date_end_real_update",0,0,($objp->date_fin_reelle>0?0:1));
 770                          }
 771                      }
 772                      print '</td>';
 773                      print '</tr>';
 774  
 775                      print "</form>\n";
 776                  }
 777                  $i++;
 778              }
 779              $db->free($result);
 780          }
 781          else
 782          {
 783              dolibarr_print_error($db);
 784          }
 785  
 786  
 787          /*
 788           * Ajouter une ligne produit/service
 789           */
 790          if ($user->rights->contrat->creer && $contrat->statut == 0)
 791          {
 792              print "<tr class=\"liste_titre\">";
 793              print '<td>'.$langs->trans("Service").'</td>';
 794              print '<td align="center">'.$langs->trans("VAT").'</td>';
 795              print '<td align="right">'.$langs->trans("PriceUHT").'</td>';
 796              print '<td align="center">'.$langs->trans("Qty").'</td>';
 797              print '<td align="right">'.$langs->trans("Discount").'</td>';
 798              print '<td>&nbsp;</td>';
 799              print '<td>&nbsp;</td>';
 800              print "</tr>\n";
 801  
 802              $var=false;
 803  
 804              // Service sur produit prédéfini
 805              print '<form action="fiche.php?id='.$id.'" method="post">';
 806              print '<input type="hidden" name="action" value="addligne">';
 807              print '<input type="hidden" name="mode" value="predefined">';
 808              print '<input type="hidden" name="id" value="'.$id.'">';
 809  
 810              print "<tr $bc[$var]>";
 811              print '<td colspan="3">';
 812              $html->select_produits('','p_idprod','',$conf->produit->limit_size);
 813              print '<br>';
 814              print '<textarea name="desc" cols="70" rows="'.ROWS_2.'"></textarea>';
 815              print '</td>';
 816  
 817              print '<td align="center"><input type="text" class="flat" size="2" name="pqty" value="1"></td>';
 818              print '<td align="right" nowrap><input type="text" class="flat" size="1" name="premise" value="0">%</td>';
 819              print '<td align="center" colspan="2" rowspan="2"><input type="submit" class="button" value="'.$langs->trans("Add").'"></td>';
 820              print '</tr>'."\n";
 821              
 822              print "<tr $bc[$var]>";
 823              print '<td colspan="8">';
 824              print $langs->trans("DateStartPlanned").' ';
 825              $html->select_date('',"date_start",0,0,1);
 826              print ' &nbsp; '.$langs->trans("DateEndPlanned").' ';
 827              $html->select_date('',"date_end",0,0,1);
 828              print '</td>';
 829              print '</tr>';
 830              
 831              print '</form>';
 832  
 833              $var=!$var;
 834              
 835              // Service libre
 836              print '<form action="fiche.php?id='.$id.'" method="post">';
 837              print '<input type="hidden" name="action" value="addligne">';
 838              print '<input type="hidden" name="mode" value="libre">';
 839              print '<input type="hidden" name="id" value="'.$id.'">';
 840  
 841              print "<tr $bc[$var]>";
 842              print '<td><textarea name="desc" cols="70" rows="'.ROWS_2.'"></textarea></td>';
 843  
 844              print '<td>';
 845              $html->select_tva("tva_tx",$conf->defaulttx,$mysoc,$contrat->societe);
 846              print '</td>';
 847              print '<td align="right"><input type="text" class="flat" size="4" name="pu" value=""></td>';
 848              print '<td align="center"><input type="text" class="flat" size="2" name="pqty" value="1"></td>';
 849              print '<td align="right" nowrap><input type="text" class="flat" size="1" name="premise" value="0">%</td>';
 850              print '<td align="center" rowspan="2" colspan="2"><input type="submit" class="button" value="'.$langs->trans("Add").'"></td>';
 851  
 852              print '</tr>'."\n";
 853  
 854              print "<tr $bc[$var]>";
 855              print '<td colspan="8">';
 856              print $langs->trans("DateStartPlanned").' ';
 857              $html->select_date('',"date_start",0,0,1);
 858              print ' &nbsp; '.$langs->trans("DateEndPlanned").' ';
 859              $html->select_date('',"date_end",0,0,1);
 860              print '</td>';
 861              print '</tr>';
 862              
 863              print '</form>';
 864          }
 865          print "</table>";
 866          /*
 867           * Fin Ajout ligne
 868           */
 869  
 870          print '</div>';
 871  
 872  
 873          /*************************************************************
 874           * Boutons Actions
 875           *************************************************************/
 876  
 877          if ($user->societe_id == 0)
 878          {
 879              print '<div class="tabsAction">';
 880  
 881              if ($contrat->statut == 0 && $num)
 882              {
 883                  print '<a class="butAction" href="fiche.php?id='.$id.'&amp;action=valid">'.$langs->trans("Validate").'</a>';
 884              }
 885  
 886              if ($contrat->statut > 0 && $user->rights->facture->creer)
 887              {
 888                  $langs->load("bills");
 889                  print '<a class="butAction" href="'.DOL_URL_ROOT.'/compta/facture.php?action=create&amp;contratid='.$contrat->id.'&amp;socidp='.$contrat->societe->id.'">'.$langs->trans("CreateBill").'</a>';
 890              }
 891  
 892              $numclos=$contrat->array_detail(5); // Tableau des lignes au statut clos
 893              if ($contrat->statut == 1 && $num == sizeof($numclos))
 894              {
 895                  print '<a class="butAction" href="fiche.php?id='.$id.'&amp;action=close">'.$langs->trans("Close").'</a>';
 896              }
 897  
 898              if ($contrat->statut == 0 && $user->rights->contrat->supprimer)
 899              {
 900                  print '<a class="butActionDelete" href="fiche.php?id='.$id.'&amp;action=delete">'.$langs->trans("Delete").'</a>';
 901              }
 902  
 903              print "</div>";
 904          }
 905  
 906      }
 907  }
 908  
 909  $db->close();
 910  
 911  llxFooter('$Date: 2005/11/23 00:43:19 $ - $Revision: 1.71 $');
 912  ?>


Généré le : Mon Nov 26 12:29:37 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics