From a8af3d474ec605efb79edaeaca8ae60321f7749e Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@users.sourceforge.net>
Date: Fri, 9 Jan 2009 23:05:25 +0000
Subject: [PATCH] Can remove a supplier order

---
 ChangeLog                                   |  1 +
 htdocs/fourn/commande/fiche.php             | 11 ++++-------
 htdocs/fourn/fournisseur.commande.class.php | 21 +++++++++++----------
 3 files changed, 16 insertions(+), 17 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 712a87e0ec1..2c596f72f49 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -9,6 +9,7 @@ For users:
 - New: Sort list of languages in combo box.
 - New: EMails links are show with function dol_print_email
 - New: Add graph report on number of entities in product statistics page.
+- New: Can delete a supplier order whatever is its status.
 - Fix: Failed to go on the future view of bank transaction if there is no 
   future bank transaction already wrote.  
 - Fix: Bad ref in supplier list.
diff --git a/htdocs/fourn/commande/fiche.php b/htdocs/fourn/commande/fiche.php
index 14f6c8e176e..1724bfaab2f 100644
--- a/htdocs/fourn/commande/fiche.php
+++ b/htdocs/fourn/commande/fiche.php
@@ -1,6 +1,6 @@
 <?php
 /* Copyright (C) 2004-2006 Rodolphe Quiedeville <rodolphe@quiedeville.org>
- * Copyright (C) 2004-2008 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (C) 2004-2009 Laurent Destailleur  <eldy@users.sourceforge.net>
  * Copyright (C) 2005      Eric	Seigne          <eric.seigne@ryxeo.com>
  * Copyright (C) 2005-2008 Regis Houssin        <regis@dolibarr.fr>
  *
@@ -904,7 +904,7 @@ if ($id > 0)
 		/**
 		 * Boutons actions
 		 */
-		if ($user->societe_id == 0 && $commande->statut < 3 && $_GET['action'] <> 'editline')
+		if ($user->societe_id == 0 && $_GET['action'] != 'editline' && $_GET['action'] != 'delete')
 		{
 			print '<div	class="tabsAction">';
 
@@ -953,12 +953,9 @@ if ($id > 0)
 				}
 			}
 
-			if ($commande->statut == 0)
+			if ($user->rights->fournisseur->commande->annuler)
 			{
-				if ($user->rights->fournisseur->commande->creer)
-				{
-					print '<a class="butActionDelete" href="fiche.php?id='.$commande->id.'&amp;action=delete">'.$langs->trans("Delete").'</a>';
-				}
+				print '<a class="butActionDelete" href="fiche.php?id='.$commande->id.'&amp;action=delete">'.$langs->trans("Delete").'</a>';
 			}
 
 			print "</div>";
diff --git a/htdocs/fourn/fournisseur.commande.class.php b/htdocs/fourn/fournisseur.commande.class.php
index b8f7af024af..b01e88bba28 100644
--- a/htdocs/fourn/fournisseur.commande.class.php
+++ b/htdocs/fourn/fournisseur.commande.class.php
@@ -301,7 +301,7 @@ class CommandeFournisseur extends Commande
 			$statut = 6;
 
 			$this->db->begin();
-				
+
 			$sql = "UPDATE ".MAIN_DB_PREFIX."commande_fournisseur SET fk_statut = ".$statut;
 			$sql .= " WHERE rowid = ".$this->id." AND fk_statut = 1";
 
@@ -508,7 +508,7 @@ class CommandeFournisseur extends Commande
 		if ($user->rights->fournisseur->commande->approuver)
 		{
 			$this->db->begin();
-				
+
 			$sql = "UPDATE ".MAIN_DB_PREFIX."commande_fournisseur SET fk_statut = 2";
 			$sql .= " WHERE rowid = ".$this->id." AND fk_statut = 1 ;";
 
@@ -545,7 +545,7 @@ class CommandeFournisseur extends Commande
 				if ($error == 0)
 				{
 					$langs->load("other");
-						
+
 					$subject = $langs->trans("EMailTextOrderApproved",$this->ref);
 					$message = $langs->trans("Hello").",\n\n";
 					$message .= $langs->trans("EMailTextOrderApprovedBy",$this->ref,$user->fullname);
@@ -975,8 +975,8 @@ class CommandeFournisseur extends Commande
 	}
 
 	/**
-	 * 	\brief		Supprime la commande
-	 *
+	 * 		\brief		Delete an order
+	 *		\return		int		<0 if KO, >0 if OK
 	 */
 	function delete()
 	{
@@ -987,19 +987,20 @@ class CommandeFournisseur extends Commande
 		$this->db->begin();
 
 		$sql = "DELETE FROM ".MAIN_DB_PREFIX."commande_fournisseurdet WHERE fk_commande =". $this->id ;
+		dol_syslog("FournisseurCommande::delete sql=".$sql, LOG_DEBUG);
 		if (! $this->db->query($sql) )
 		{
 			$err++;
 		}
 
 		$sql = "DELETE FROM ".MAIN_DB_PREFIX."commande_fournisseur WHERE rowid =".$this->id;
-		$sql.= " AND fk_statut = 0;";
+		dol_syslog("FournisseurCommande::delete sql=".$sql, LOG_DEBUG);
 		if ($resql = $this->db->query($sql) )
 		{
-			if ($this->db->affected_rows($resql) <> 1)
-	  {
-	  	$err++;
-	  }
+			if ($this->db->affected_rows($resql) < 1)
+			{
+				$err++;
+			}
 		}
 		else
 		{
-- 
GitLab