From 0c7c2f1240fa49c16577abf59f2847ccbe7514ec Mon Sep 17 00:00:00 2001
From: Rodolphe Quiedeville <rodolphe@quiedeville.org>
Date: Wed, 19 Jan 2005 13:58:14 +0000
Subject: [PATCH] =?UTF-8?q?Modif=20fonction=20set=5Fcredite=20update=20le?=
 =?UTF-8?q?=20statut=20des=20lignes=20de=20prelevement=20et=20ens=E8re=20l?=
 =?UTF-8?q?e=20tout=20dans=20une=20transaction=20SQL?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 htdocs/bon-prelevement.class.php | 91 ++++++++++++++++++++++++--------
 1 file changed, 70 insertions(+), 21 deletions(-)

diff --git a/htdocs/bon-prelevement.class.php b/htdocs/bon-prelevement.class.php
index dad4c122a2c..b5cc0661eca 100644
--- a/htdocs/bon-prelevement.class.php
+++ b/htdocs/bon-prelevement.class.php
@@ -103,34 +103,83 @@ class BonPrelevement
    */
   function set_credite()
   {
-    $sql = " UPDATE ".MAIN_DB_PREFIX."prelevement ";
-    $sql .= " SET credite = 1";
-    $sql .= " WHERE rowid=".$this->id;
-      
-    $result=$this->db->query($sql);
-    if ($result)
+    $error == 0;
+
+    if ($this->db->query("BEGIN"))
       {
-	/**
-	 *
-	 *
+
+
+	$sql = " UPDATE ".MAIN_DB_PREFIX."prelevement ";
+	$sql .= " SET credite = 1";
+	$sql .= " WHERE rowid=".$this->id;
+      
+	$result=$this->db->query($sql);
+	if (! $result)
+	  {
+	    dolibarr_syslog("bon-prelevment::set_credite Erreur 1");
+	    $error++;
+	  }
+
+	if ($error == 0)
+	  {
+	    /**
+	     *
+	     *
+	     *
+	     */
+	    $facs = array();
+	    $facs = $this->_get_list_factures();
+	    
+	    for ($i = 0 ; $i < sizeof($facs) ; $i++)
+	      {	    
+		$fac = new Facture($this->db);
+		
+		/* Tag la facture comme impay�e */
+		dolibarr_syslog("RejetPrelevement::Create set_payed fac ".$facs[$i]);
+		$fac->set_payed($facs[$i]);
+	      }
+	  }
+
+	if ($error == 0)
+	  {
+	    /*
+	     * Change le statut des lignes de factures
+	     */
+
+	    $sql = " UPDATE ".MAIN_DB_PREFIX."prelevement_facture ";
+	    $sql .= " SET statut = 1";
+	    $sql .= " WHERE fk_prelevement=".$this->id;
+	    
+	    $result=$this->db->query($sql);
+	    if (!$result)
+	      {
+		dolibarr_syslog("bon-prelevment::set_credite Erreur 3");
+		$error++;
+	      }
+	  }
+
+	/*
+	 * Fin de la proc�dure
 	 *
 	 */
-	$facs = array();
-	$facs = $this->_get_list_factures();
-	
-	for ($i = 0 ; $i < sizeof($facs) ; $i++)
-	  {	    
-	    $fac = new Facture($this->db);
-
-	    /* Tag la facture comme impay�e */
-	    dolibarr_syslog("RejetPrelevement::Create set_payed fac ".$facs[$i]);
-	    $fac->set_payed($facs[$i]);
+	if ($error == 0)
+	  {
+	    $this->db->query("COMMIT");
+	    return 0;
 	  }
+	else
+	  {
+	    $this->db->query("ROLLBACK");
+	    dolibarr_syslog("bon-prelevment::set_credite ROLLBACK ");
+	    return -1;
+	  }
+	
+	
       }
     else
       {
-	dolibarr_syslog("bon-prelevment::Fetch Erreur ");
-	dolibarr_syslog($sql);
+	
+	dolibarr_syslog("bon-prelevment::set_credite Ouverture transaction SQL impossible ");
 	return -2;
       }
   }
-- 
GitLab