From 92224fa7d776f110fdfedbb81cd047e9daa554f3 Mon Sep 17 00:00:00 2001 From: liedekef Date: Fri, 5 Jan 2007 16:13:37 +0000 Subject: [PATCH] fix bug #18592. Please test, the bugreport is still open. Extensive tests already done, but will continue. --- htdocs/commande/commande.class.php | 26 ++++++++++++++++++++++++++ htdocs/expedition/expedition.class.php | 7 +++++++ 2 files changed, 33 insertions(+) diff --git a/htdocs/commande/commande.class.php b/htdocs/commande/commande.class.php index 99ce1baad8f..712cdb60a0a 100644 --- a/htdocs/commande/commande.class.php +++ b/htdocs/commande/commande.class.php @@ -313,6 +313,8 @@ class Commande extends CommonObject if ($this->db->query($sql) ) { + /* + * CODE SOUSPRODUITS if($conf->stock->enabled && $conf->global->PRODUIT_SOUSPRODUITS == 1) { require_once(DOL_DOCUMENT_ROOT."/product/stock/mouvementstock.class.php"); @@ -337,6 +339,9 @@ class Commande extends CommonObject } } + + * CODE SOUSPRODUITS + */ return 1; } else @@ -354,15 +359,26 @@ class Commande extends CommonObject { if ($user->rights->commande->valider) { + $this->db->begin(); $sql = 'UPDATE '.MAIN_DB_PREFIX.'commande SET fk_statut = -1'; $sql .= " WHERE rowid = $this->id AND fk_statut = 1 ;"; if ($this->db->query($sql) ) { + // delete all product items from reserved stock + if ($conf->stock->enabled) { + foreach($this->lignes as $ligne) { + $product = new Product($this->db); + $product->id = $ligne->fk_product; + $product->ajust_stock_commande($ligne->qty, 1); + } + } + $this->db->commit(); return 1; } else { + $this->db->rollback(); dolibarr_print_error($this->db); } } @@ -1813,6 +1829,16 @@ class Commande extends CommonObject $interface=new Interfaces($this->db); $result=$interface->run_triggers('ORDER_DELETE',$this,$user,$langs,$conf); // Fin appel triggers + + // delete all product items from reserved stock + if ($conf->stock->enabled) { + foreach($this->lignes as $ligne) { + $product = new Product($this->db); + $product->id = $ligne->fk_product; + $product->ajust_stock_commande($ligne->qty, 1); + } + } + $this->db->commit(); $this->db->commit(); return 1; diff --git a/htdocs/expedition/expedition.class.php b/htdocs/expedition/expedition.class.php index ef93477cdc8..13236efba78 100644 --- a/htdocs/expedition/expedition.class.php +++ b/htdocs/expedition/expedition.class.php @@ -355,6 +355,13 @@ class Expedition extends CommonObject dolibarr_syslog("expedition.class.php::valid ".$this->error); return -3; } + // correct the stock, since otherwise the available + // stock will decrement again, since: + // available = real stock - # commanded items for prod + $product = new Product($this->db); + $product->id = $obj->fk_product; + $product->ajust_stock_commande($obj->qty, 1); + $i++; }