From e2242a4e0253bba261a15c429c2be627685d7fac Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 9 Jul 2009 23:58:01 +0000 Subject: [PATCH] Fix: Solve pb of duplicate stock increase when using back navigation --- htdocs/facture.class.php | 10 ++++----- htdocs/fourn/fournisseur.facture.class.php | 26 +++++++++++++--------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/htdocs/facture.class.php b/htdocs/facture.class.php index 58606a30bb3..b158d024885 100644 --- a/htdocs/facture.class.php +++ b/htdocs/facture.class.php @@ -1238,14 +1238,14 @@ class Facture extends CommonObject // Protection if (! $this->brouillon) { - dol_syslog("Facture::valid no draft status", LOG_WARNING); + dol_syslog("Facture::set_valid no draft status", LOG_WARNING); return 0; } if (! $user->rights->facture->valider) { $this->error='Permission denied'; - dol_syslog("Facture::valid ".$this->error, LOG_ERR); + dol_syslog("Facture::set_valid ".$this->error, LOG_ERR); return -1; } @@ -1326,11 +1326,11 @@ class Facture extends CommonObject } $sql.= ' WHERE rowid = '.$this->id; - dol_syslog("Facture::set_valid() sql=".$sql); + dol_syslog("Facture::set_valid sql=".$sql); $resql=$this->db->query($sql); if (! $resql) { - dol_syslog("Facture::set_valid() Echec update - 10 - sql=".$sql, LOG_ERR); + dol_syslog("Facture::set_valid Echec update - 10 - sql=".$sql, LOG_ERR); dol_print_error($this->db); $error++; } @@ -1379,7 +1379,7 @@ class Facture extends CommonObject $dirdest = $conf->facture->dir_output.'/'.$snumfa; if (file_exists($dirsource)) { - dol_syslog("Facture::set_valid() rename dir ".$dirsource." into ".$dirdest); + dol_syslog("Facture::set_valid rename dir ".$dirsource." into ".$dirdest); if (@rename($dirsource, $dirdest)) { diff --git a/htdocs/fourn/fournisseur.facture.class.php b/htdocs/fourn/fournisseur.facture.class.php index 85137bac25a..a76b56793dd 100644 --- a/htdocs/fourn/fournisseur.facture.class.php +++ b/htdocs/fourn/fournisseur.facture.class.php @@ -21,20 +21,19 @@ */ /** - \file htdocs/fourn/fournisseur.facture.class.php - \ingroup fournisseur,facture - \brief Fichier de la classe des factures fournisseurs - \version $Id$ + * \file htdocs/fourn/fournisseur.facture.class.php + * \ingroup fournisseur,facture + * \brief Fichier de la classe des factures fournisseurs + * \version $Id$ */ include_once(DOL_DOCUMENT_ROOT."/facture.class.php"); /** - \class FactureFournisseur - \brief Classe permettant la gestion des factures fournisseurs + * \class FactureFournisseur + * \brief Classe permettant la gestion des factures fournisseurs */ - class FactureFournisseur extends Facture { var $id; @@ -426,14 +425,21 @@ class FactureFournisseur extends Facture /** - * \brief Set invoice status as validate - * \param user Objet utilisateur qui valide la facture - * \return int <0 si ko, >0 si ok + * \brief Set invoice status as validated + * \param user Object user + * \return int <0 if KO, =0 if nothing to do, >0 if OK */ function set_valid($user) { global $conf,$langs; + // Protection + if ($this->statut > 0) // This is to avoid to validate twice (avoid errors on logs and stock management) + { + dol_syslog("FactureFournisseur::set_valid no draft status", LOG_WARNING); + return 0; + } + $this->db->begin(); $sql = "UPDATE ".MAIN_DB_PREFIX."facture_fourn";