From c533227062d00b966cd4ad6b1817f4c56d20f120 Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@users.sourceforge.net>
Date: Sat, 11 Nov 2006 15:06:52 +0000
Subject: [PATCH] =?UTF-8?q?Fix:=20Corrige=20quelques=20probl=E8mes=20avec?=
 =?UTF-8?q?=20factures=20de=20remplacement?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 htdocs/compta/fiche.php  | 14 ++++++++++----
 htdocs/facture.class.php | 12 +++++++++---
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/htdocs/compta/fiche.php b/htdocs/compta/fiche.php
index b9a6ab1bc12..151bbdcabbe 100644
--- a/htdocs/compta/fiche.php
+++ b/htdocs/compta/fiche.php
@@ -242,9 +242,10 @@ if ($socid > 0)
 
         print '<table class="noborder" width="100%">';
 
-        $sql = "SELECT s.nom, s.idp, f.rowid as facid, f.facnumber, f.amount, f.total, f.total_ttc,";
-        $sql.= " ".$db->pdate("f.datef")." as df, f.paye as paye, f.fk_statut as statut";
-		$sql.= ' ,sum(pf.amount) as am';
+        $sql = 'SELECT f.rowid as facid, f.facnumber, f.type, f.amount, f.total, f.total_ttc,';
+        $sql.= ' '.$db->pdate("f.datef").' as df, f.paye as paye, f.fk_statut as statut,';
+		$sql.= ' s.nom, s.idp,';
+		$sql.= ' sum(pf.amount) as am';
         $sql.= " FROM ".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture as f";
 		$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'paiement_facture as pf ON f.rowid=pf.fk_facture';
         $sql.= " WHERE f.fk_soc = s.idp AND s.idp = ".$societe->id;
@@ -270,7 +271,12 @@ if ($socid > 0)
                 $objp = $db->fetch_object($resql);
                 $var=!$var;
                 print "<tr $bc[$var]>";
-                print "<td><a href=\"../compta/facture.php?facid=$objp->facid\">".img_object($langs->trans("ShowBill"),"bill")." ".$objp->facnumber."</a></td>\n";
+                print '<td>';
+                $facturestatic->id=$objp->facid;
+                $facturestatic->ref=$objp->facnumber;
+                $facturestatic->type=$objp->type;
+                print $facturestatic->getNomUrl(1);
+                print '</td>';
                 if ($objp->df > 0)
                 {
                     print "<td align=\"right\">".dolibarr_print_date($objp->df)."</td>\n";
diff --git a/htdocs/facture.class.php b/htdocs/facture.class.php
index c3147eaf43f..cb763e65853 100644
--- a/htdocs/facture.class.php
+++ b/htdocs/facture.class.php
@@ -1012,7 +1012,7 @@ class Facture extends CommonObject
 				}
 				
 				// Controle que facture source non deja remplacee par une autre
-				$idreplacement=$facreplaced->getIdReplacingInvoice();
+				$idreplacement=$facreplaced->getIdReplacingInvoice('validated');
 				if ($idreplacement && $idreplacement != $rowid)
 				{
 					$facreplacement=new Facture($this->db);
@@ -1791,14 +1791,20 @@ class Facture extends CommonObject
 	
 	/**
 	* 	\brief     	Renvoie l'id de la facture qui la remplace
-	*	\return		int		<0 si ko, 0 si aucune facture ne remplace, id facture sinon
+	*	\param		option		filtre sur statut ('', 'validated', ...)
+	*	\return		int			<0 si ko, 0 si aucune facture ne remplace, id facture sinon
 	*/
-	function getIdReplacingInvoice()
+	function getIdReplacingInvoice($option='')
 	{
 		$sql = 'SELECT rowid';
 		$sql.= ' FROM '.MAIN_DB_PREFIX.'facture';
 		$sql.= ' WHERE fk_facture_source = '.$this->id;
 		$sql.= ' AND type < 2';
+		if ($option == 'validated') $sql.= ' AND fk_statut = 1';
+		$sql.= ' ORDER BY fk_statut DESC';	// Au cas ou base corrompu et qu'il y a une
+											// facture de remplacement validee et une autre non
+											// on donne priorit� � la valid�e. Ne devrait pas arriver
+		
 		$resql=$this->db->query($sql);
 		if ($resql)
 		{
-- 
GitLab