Intgration du patch pour grer la rfrence du contrat (sur modle des commandes) plutot qu'une rfrence qui soit le rowid.

This commit is contained in:
Laurent Destailleur 2005-09-27 19:34:03 +00:00
parent 1c3426f7d2
commit d4c78e9fe7
7 changed files with 49 additions and 35 deletions

View File

@ -418,7 +418,7 @@ if ($_socid > 0)
print '<table class="noborder" width="100%">';
$sql = "SELECT s.nom, s.idp, c.rowid as id, c.rowid as ref, c.statut, ".$db->pdate("c.datec")." as dc";
$sql = "SELECT s.nom, s.idp, c.rowid as id, c.ref as ref, c.statut, ".$db->pdate("c.datec")." as dc";
$sql .= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."contrat as c";
$sql .= " WHERE c.fk_soc = s.idp ";
$sql .= " AND s.idp = $objsoc->id";
@ -442,9 +442,10 @@ if ($_socid > 0)
$objp = $db->fetch_object($resql);
$var=!$var;
print "<tr $bc[$var]>";
print '<td><a href="'.DOL_URL_ROOT.'/contrat/fiche.php?id='.$objp->id.'">'.img_object($langs->trans("ShowContract"),"contract").' '.$objp->ref."</a></td>\n";
print '<td><a href="'.DOL_URL_ROOT.'/contrat/fiche.php?id='.$objp->id.'">'.img_object($langs->trans("ShowContract"),"contract").' '
.(!isset($objp->ref) ? $objp->id : $objp->ref) ."</a></td>\n";
print '<td align="right" width="80">'.dolibarr_print_date($objp->dc)."</td>\n";
print '<td width="120">&nbsp;</td>';
print '<td width="20">&nbsp;</td>';
print '<td align="center" width="100">'.$contratstatic->LibStatut($objp->statut)."</td>\n";
print '</tr>';
$i++;

View File

@ -50,7 +50,6 @@ class Contrat
var $date_creation;
var $date_validation;
var $date_cloture;
var $commercial_signature_id;
var $commercial_suivi_id;
@ -225,7 +224,7 @@ class Contrat
*/
function fetch($id)
{
$sql = "SELECT rowid, statut, fk_soc, ".$this->db->pdate("mise_en_service")." as datemise,";
$sql = "SELECT rowid, statut, ref, fk_soc, ".$this->db->pdate("mise_en_service")." as datemise,";
$sql.= " fk_user_mise_en_service, ".$this->db->pdate("date_contrat")." as datecontrat,";
$sql.= " fk_user_author,";
$sql.= " fk_projet,";
@ -241,7 +240,7 @@ class Contrat
if ($result)
{
$this->id = $result["rowid"];
$this->ref = $result["rowid"];
$this->ref = (!isset($result["ref"])) ? $result["rowid"] : $result["ref"];
$this->statut = $result["statut"];
$this->factureid = $result["fk_facture"];
$this->facturedetid = $result["fk_facturedet"];
@ -422,11 +421,12 @@ class Contrat
// Insère contrat
$sql = "INSERT INTO ".MAIN_DB_PREFIX."contrat (datec, fk_soc, fk_user_author, date_contrat";
// $sql.= ", fk_commercial_signature, fk_commercial_suivi";
$sql.= ")";
$sql.= " , ref)";
$sql.= " VALUES (now(),".$this->soc_id.",".$user->id;
$sql.= ",".$this->db->idate($this->date_contrat);
// $sql.= ",".($this->commercial_signature_id>=0?$this->commercial_signature_id:"null");
// $sql.= ",".($this->commercial_suivi_id>=0?$this->commercial_suivi_id:"null");
$sql .= ", " . (strlen($this->ref)<=0 ? "null" : "'".$this->ref."'");
$sql.= ")";
$resql=$this->db->query($sql);
if ($resql)
@ -811,7 +811,7 @@ class Contrat
*/
function info($id)
{
$sql = "SELECT c.rowid, ".$this->db->pdate("datec")." as datec, ".$this->db->pdate("date_cloture")." as date_cloture,";
$sql = "SELECT c.rowid, c.ref, ".$this->db->pdate("datec")." as datec, ".$this->db->pdate("date_cloture")." as date_cloture,";
$sql.= $this->db->pdate("c.tms")." as date_modification,";
$sql.= " fk_user_author, fk_user_cloture";
$sql.= " FROM ".MAIN_DB_PREFIX."contrat as c";
@ -837,7 +837,7 @@ class Contrat
$cuser->fetch();
$this->user_cloture = $cuser;
}
$this->ref = $obj->ref;
$this->date_creation = $obj->datec;
$this->date_modification = $obj->date_modification;
$this->date_cloture = $obj->date_cloture;
@ -870,11 +870,11 @@ class Contrat
$resql=$this->db->query($sql);
if ($resql)
{
$num=$this->db->num_rows($result);
$num=$this->db->num_rows($resql);
$i=0;
while ($i < $num)
{
$obj = $this->db->fetch_object($result);
$obj = $this->db->fetch_object($resql);
$tab[$i]=$obj->rowid;
$i++;
}
@ -957,7 +957,8 @@ class Contrat
$sql.="SELECT rowid from ".MAIN_DB_PREFIX."c_type_contact";
$sql.=" WHERE element='contrat' AND source='internal'";
$sql.=" AND code='".$type_contact."'";
if ( $this->db->query($sql) )
$resql = $this->db->query($sql);
if ( $resql )
{
$obj = $this->db->fetch_object($resql);
if ($obj) $type_contact=$obj->rowid;
@ -1003,7 +1004,7 @@ class Contrat
/**
*
* \brief Misea jour du contact associé au contrat
* \param rowid La reference du lien contant contact.
* \param rowid La reference du lien contrat-contact
* \param statut Le nouveau statut
* \param nature Description du contact
* \return int <0 si erreur, >0 si ok
@ -1123,7 +1124,7 @@ class Contrat
$resql=$this->db->query($sql);
if ($resql)
{
$obj = $this->db->fetch_object($result);
$obj = $this->db->fetch_object($resql);
return $obj;
}
else
@ -1156,11 +1157,11 @@ class Contrat
$resql=$this->db->query($sql);
if ($resql)
{
$num=$this->db->num_rows($result);
$num=$this->db->num_rows($resql);
$i=0;
while ($i < $num)
{
$obj = $this->db->fetch_object($result);
$obj = $this->db->fetch_object($resql);
$transkey="TypeContact_".$element."_".$source."_".$obj->code;
$libelle_type=($langs->trans($transkey)!=$transkey ? $langs->trans($transkey) : $obj->libelle);

View File

@ -97,9 +97,10 @@ if ($_POST["action"] == 'add')
$contrat->commercial_suivi_id = $_POST["commercial_suivi_id"];
$contrat->commercial_signature_id = $_POST["commercial_signature_id"];
$contrat->note = $_POST["note"];
$contrat->projetid = $_POST["projetid"];
$contrat->remise_percent = $_POST["remise_percent"];
$contrat->note = trim($_POST["note"]);
$contrat->projetid = trim($_POST["projetid"]);
$contrat->remise_percent = trim($_POST["remise_percent"]);
$contrat->ref = trim($_POST["ref"]);
$result = $contrat->create($user,$langs,$conf);
if ($result > 0)
@ -278,10 +279,15 @@ if ($_GET["action"] == 'create')
print '<table class="border" width="100%">';
// Ref
print '<tr><td>'.$langs->trans("Ref").':</td>';
print '<td><input type="text" maxlength="30" name="ref" size="20"></td></tr>';
// Customer
print '<tr><td>'.$langs->trans("Customer").':</td><td><a href="'.DOL_URL_ROOT.'/comm/fiche.php?socid='.$soc->id.'">'.$obj->nom.'</a></td></tr>';
// Commercial suivi
print '<tr><td width="20%" nowrap>'.$langs->trans("SalesRepresentativeFollowUp").'</td><td>';
print '<tr><td width="20%" nowrap>'.$langs->trans("TypeContact_contrat_internal_SALESREPFOLL").'</td><td>';
print '<select name="commercial_suivi_id">';
print '<option value="-1">&nbsp;</option>';
@ -307,7 +313,7 @@ if ($_GET["action"] == 'create')
print '</select></td></tr>';
// Commercial signature
print '<tr><td width="20%" nowrap>'.$langs->trans("SalesRepresentativeSignature").'</td><td>';
print '<tr><td width="20%" nowrap>'.$langs->trans("TypeContact_contrat_internal_SALESREPSIGN").'</td><td>';
print '<select name="commercial_signature_id">';
print '<option value="-1">&nbsp;</option>';
$sql = "SELECT rowid, name, firstname FROM ".MAIN_DB_PREFIX."user";
@ -508,7 +514,7 @@ else
print '<table class="border" width="100%">';
// Reference du contrat
// Ref du contrat
print '<tr><td width="25%">'.$langs->trans("Ref").'</td><td colspan="3">';
print $contrat->ref;
print "</td></tr>";

View File

@ -98,7 +98,7 @@ $sql.= ' sum('.$db->ifsql("cd.statut=0",1,0).') as nb_initial,';
$sql.= ' sum('.$db->ifsql("cd.statut=4 AND cd.date_fin_validite > sysdate()",1,0).') as nb_running,';
$sql.= ' sum('.$db->ifsql("cd.statut=4 AND (cd.date_fin_validite IS NULL OR cd.date_fin_validite <= sysdate())",1,0).') as nb_late,';
$sql.= ' sum('.$db->ifsql("cd.statut=5",1,0).') as nb_closed,';
$sql.= " c.rowid as cid, c.datec, c.statut, s.nom, s.idp as sidp";
$sql.= " c.rowid as cid, c.ref, c.datec, c.statut, s.nom, s.idp as sidp";
$sql.= " FROM ".MAIN_DB_PREFIX."contrat as c, ".MAIN_DB_PREFIX."societe as s";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."contratdet as cd ON c.rowid = cd.fk_contrat";
$sql.= " WHERE c.fk_soc = s.idp ";
@ -133,7 +133,8 @@ if ($result)
print "<tr $bc[$var]>";
print "<td><a href=\"fiche.php?id=$obj->cid\">";
print img_object($langs->trans("ShowContract"),"contract").' '.$obj->cid.'</a>';
print img_object($langs->trans("ShowContract"),"contract").' '
. (isset($obj->ref) ? $obj->ref : $obj->cid).'</a>';
if ($obj->nb_late) print img_warning($langs->trans("Late"));
print '</td>';
print '<td><a href="../comm/fiche.php?socid='.$obj->sidp.'">'.img_object($langs->trans("ShowCompany"),"company").' '.$obj->nom.'</a></td>';
@ -159,7 +160,7 @@ print '<br>';
// Not activated services
$sql = "SELECT cd.rowid as cid, cd.statut, cd.label, cd.description as note, cd.fk_contrat, c.fk_soc, s.nom";
$sql = "SELECT cd.rowid as cid, c.ref, cd.statut, cd.label, cd.description as note, cd.fk_contrat, c.fk_soc, s.nom";
$sql.= " FROM ".MAIN_DB_PREFIX."contratdet as cd, ".MAIN_DB_PREFIX."contrat as c, ".MAIN_DB_PREFIX."societe as s";
$sql.= " WHERE c.statut=1 AND cd.statut = 0";
$sql.= " AND cd.fk_contrat = c.rowid AND c.fk_soc = s.idp";
@ -183,7 +184,8 @@ if ( $db->query($sql) )
$var=!$var;
print "<tr $bc[$var]>";
print '<td width="50"><a href="'.DOL_URL_ROOT.'/contrat/fiche.php?id='.$obj->fk_contrat.'">'.img_object($langs->trans("ShowContract"),"contract").' '.$obj->fk_contrat.'</a></td>';
print '<td width="50"><a href="'.DOL_URL_ROOT.'/contrat/fiche.php?id='.$obj->fk_contrat.'">'.img_object($langs->trans("ShowContract"),"contract").' '
.(isset($obj->ref) ? $obj->ref : $obj->fk_contrat).'</a></td>';
print '<td><a href="'.DOL_URL_ROOT.'/contrat/fiche.php?id='.$obj->fk_contrat.'">'.img_object($langs->trans("ShowService"),"service");
if ($obj->label) print ' '.dolibarr_trunc($obj->label,20).'</a></td>';
else print '</a> '.dolibarr_trunc($obj->note,20).'</td>';
@ -207,7 +209,7 @@ print '<br>';
// Last modified services
$max=5;
$sql = "SELECT cd.rowid as cid, cd.statut, cd.label, cd.description as note, cd.fk_contrat, c.fk_soc, s.nom";
$sql = "SELECT cd.rowid as cid, c.ref, cd.statut, cd.label, cd.description as note, cd.fk_contrat, c.fk_soc, s.nom";
$sql.= " FROM ".MAIN_DB_PREFIX."contratdet as cd, ".MAIN_DB_PREFIX."contrat as c, ".MAIN_DB_PREFIX."societe as s";
$sql.= " WHERE cd.fk_contrat = c.rowid AND c.fk_soc = s.idp";
if ($socidp > 0) $sql.= " AND s.idp = ".$socidp;
@ -229,8 +231,9 @@ if ( $db->query($sql) )
$obj = $db->fetch_object();
$var=!$var;
print "<tr $bc[$var]>";
print '<td width="50" nowrap><a href="'.DOL_URL_ROOT.'/contrat/fiche.php?id='.$obj->fk_contrat.'">'.img_object($langs->trans("ShowContract"),"contract").' '.$obj->fk_contrat.'</a>';
// width="50" nowrap
print '<td><a href="'.DOL_URL_ROOT.'/contrat/fiche.php?id='.$obj->fk_contrat.'">'.img_object($langs->trans("ShowContract"),"contract").' '
.(isset($obj->ref) ? $obj->ref : $obj->fk_contrat).'</a>';
if ($obj->nb_late) print img_warning($langs->trans("Late"));
print '</td>';
print '<td><a href="'.DOL_URL_ROOT.'/contrat/fiche.php?id='.$obj->fk_contrat.'">'.img_object($langs->trans("ShowService"),"service");

View File

@ -67,7 +67,7 @@ $sql.= ' sum('.$db->ifsql("cd.statut=0",1,0).') as nb_initial,';
$sql.= ' sum('.$db->ifsql("cd.statut=4 AND cd.date_fin_validite > sysdate()",1,0).') as nb_running,';
$sql.= ' sum('.$db->ifsql("cd.statut=4 AND (cd.date_fin_validite IS NULL OR cd.date_fin_validite <= sysdate())",1,0).') as nb_late,';
$sql.= ' sum('.$db->ifsql("cd.statut=5",1,0).') as nb_closed,';
$sql.= " c.rowid as cid, c.datec, c.statut, s.nom, s.idp as sidp";
$sql.= " c.rowid as cid, c.ref, c.datec, c.statut, s.nom, s.idp as sidp";
$sql.= " FROM ".MAIN_DB_PREFIX."contrat as c, ".MAIN_DB_PREFIX."societe as s";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."contratdet as cd ON c.rowid = cd.fk_contrat";
$sql.= " WHERE c.fk_soc = s.idp ";
@ -125,7 +125,8 @@ if ($resql)
$var=!$var;
print "<tr $bc[$var]>";
print "<td nowrap><a href=\"fiche.php?id=$obj->cid\">";
print img_object($langs->trans("ShowContract"),"contract").' '.$obj->cid.'</a>';
print img_object($langs->trans("ShowContract"),"contract").' '
. (isset($obj->ref) ? $obj->ref : $obj->cid) .'</a>';
if ($obj->nb_late) print img_warning($langs->trans("Late"));
print '</td>';
print '<td><a href="../comm/fiche.php?socid='.$obj->sidp.'">'.img_object($langs->trans("ShowCompany"),"company").' '.$obj->nom.'</a></td>';

View File

@ -370,6 +370,8 @@ alter table llx_contrat add fk_projet integer after fk_soc;
alter table llx_contrat add fk_commercial_signature integer NOT NULL after fk_projet;
alter table llx_contrat add fk_commercial_suivi integer NOT NULL after fk_commercial_signature;
alter table llx_contrat add facture smallint(6) default 0;
alter table llx_contrat add ref varchar(30) after rowid;
alter table llx_facturedet add date_start date;
alter table llx_facturedet add date_end date;

View File

@ -1,6 +1,6 @@
-- ============================================================================
-- Copyright (C) 2002-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
-- Copyright (C) 2004 Laurent Destailleur <eldy@users.sourceforge.net>
-- Copyright (C) 2004-2005 Laurent Destailleur <eldy@users.sourceforge.net>
--
-- 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
@ -24,18 +24,18 @@
create table llx_contrat
(
rowid integer AUTO_INCREMENT PRIMARY KEY,
ref varchar(30), -- reference de contrat
tms timestamp,
datec datetime, -- date de creation de l'enregistrement
date_contrat datetime,
statut smallint DEFAULT 0,
mise_en_service datetime,
fin_validite datetime,
date_cloture datetime,
fk_soc integer NOT NULL,
fk_projet integer,
fk_commercial_signature integer NOT NULL,
fk_commercial_suivi integer NOT NULL,
fk_commercial_signature integer NOT NULL, -- obsolete
fk_commercial_suivi integer NOT NULL, -- obsolete
fk_user_author integer NOT NULL default 0,
fk_user_mise_en_service integer,
fk_user_cloture integer