From d298438e666c69efce802e6d8e06fce6797627ba Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 24 Oct 2008 21:36:12 +0000 Subject: [PATCH] Maxi debug of stock management. --- htdocs/admin/produit.php | 1 + htdocs/commande/commande.class.php | 48 ++-- htdocs/fourn/fournisseur.commande.class.php | 232 ++++++++++-------- htdocs/product/stock/mouvementstock.class.php | 30 +-- mysql/data/data.sql | 12 +- 5 files changed, 181 insertions(+), 142 deletions(-) diff --git a/htdocs/admin/produit.php b/htdocs/admin/produit.php index 18173bea586..66246c4641c 100644 --- a/htdocs/admin/produit.php +++ b/htdocs/admin/produit.php @@ -35,6 +35,7 @@ $langs->load("admin"); $langs->load("propal"); $langs->load("products"); +// Security check if (!$user->admin) accessforbidden(); diff --git a/htdocs/commande/commande.class.php b/htdocs/commande/commande.class.php index 7d8ce57d6c2..7f24d369d43 100644 --- a/htdocs/commande/commande.class.php +++ b/htdocs/commande/commande.class.php @@ -197,13 +197,15 @@ class Commande extends CommonObject /** - * \brief Valide la commande - * \param user Utilisateur qui valide - * \return int <=0 si ko, >0 si ok + * \brief Validate order + * \param user Utilisateur qui valide + * \return int <=0 si ko, >0 si ok */ function valid($user) { global $conf,$langs; + + $error=0; // Protection if ($this->statut == 1) @@ -228,8 +230,7 @@ class Commande extends CommonObject $result=$soc->set_as_client(); // check if temporary number - $comref = substr($this->ref, 1, 4); - if ($comref == 'PROV') + if (eregi('^\(PROV', $this->ref)) { $num = $this->getNextNumRef($soc); } @@ -245,7 +246,7 @@ class Commande extends CommonObject if ($resql) { // On efface le repertoire de pdf provisoire - if ($comref == 'PROV') + if (eregi('^\(PROV', $this->ref)) { $comref = sanitize_string($this->ref); if ($conf->commande->dir_output) @@ -276,7 +277,7 @@ class Commande extends CommonObject } // If stock is incremented on validate order, we must increment it - if($conf->stock->enabled && $conf->global->STOCK_CALCULATE_ON_VALIDATE_ORDER == 1) + if ($result >= 0 && $conf->stock->enabled && $conf->global->STOCK_CALCULATE_ON_VALIDATE_ORDER == 1) { require_once(DOL_DOCUMENT_ROOT."/product/stock/mouvementstock.class.php"); @@ -286,23 +287,36 @@ class Commande extends CommonObject // We decrement stock of product (and sub-products) $entrepot_id = "1"; //Todo: ajouter possibilite de choisir l'entrepot $result=$mouvP->livraison($user, $this->lignes[$i]->fk_product, $entrepot_id, $this->lignes[$i]->qty); + if ($result < 0) { $error++; } } } - // Appel des triggers - include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php"); - $interface=new Interfaces($this->db); - $result=$interface->run_triggers('ORDER_VALIDATE',$this,$user,$langs,$conf); - if ($result < 0) { $error++; $this->errors=$interface->errors; } - // Fin appel triggers - - $this->db->commit(); - return $this->id; + if ($error == 0) + { + // Appel des triggers + include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php"); + $interface=new Interfaces($this->db); + $result=$interface->run_triggers('ORDER_VALIDATE',$this,$user,$langs,$conf); + if ($result < 0) { $error++; $this->errors=$interface->errors; } + // Fin appel triggers + } + + if ($error == 0) + { + $this->db->commit(); + return 1; + } + else + { + $this->db->rollback(); + $this->error=$this->db->lasterror(); + return -1; + } } else { $this->db->rollback(); - $this->error=$this->db->error(); + $this->error=$this->db->lasterror(); return -1; } } diff --git a/htdocs/fourn/fournisseur.commande.class.php b/htdocs/fourn/fournisseur.commande.class.php index a4ba6285f7b..24cd43e1e1f 100644 --- a/htdocs/fourn/fournisseur.commande.class.php +++ b/htdocs/fourn/fournisseur.commande.class.php @@ -47,9 +47,9 @@ class CommandeFournisseur extends Commande var $id ; var $brouillon; - + /** \brief Constructeur - * \param DB Handler d'accès aux bases de données + * \param DB Handler d'acc�s aux bases de donn�es */ function CommandeFournisseur($DB) { @@ -90,7 +90,7 @@ class CommandeFournisseur extends Commande if ($resql) { $obj = $this->db->fetch_object($resql); - + $this->id = $obj->rowid; $this->ref = $obj->ref; $this->socid = $obj->fk_soc; @@ -100,12 +100,12 @@ class CommandeFournisseur extends Commande $this->total_ht = $obj->total_ht; $this->total_tva = $obj->tva; $this->total_ttc = $obj->total_ttc; - $this->date_commande = $obj->date_commande; // date à laquelle la commande a été transmise + $this->date_commande = $obj->date_commande; // date � laquelle la commande a �t� transmise $this->date = $obj->date_creation; $this->remise_percent = $obj->remise_percent; $this->methode_commande_id = $obj->fk_methode_commande; $this->methode_commande = $obj->methode_commande; - + $this->source = $obj->source; $this->facturee = $obj->facture; $this->fk_project = $obj->fk_project; @@ -113,14 +113,14 @@ class CommandeFournisseur extends Commande $this->note = $obj->note; $this->note_public = $obj->note_public; $this->modelpdf = $obj->model_pdf; - + $this->db->free(); - + if ($this->statut == 0) $this->brouillon = 1; // Now load lines $this->lignes = array(); - + $sql = "SELECT l.rowid, l.ref as ref_fourn, l.fk_product, l.label, l.description, l.qty,"; $sql.= " l.tva_tx, l.remise_percent, l.subprice,"; $sql.= " l.total_ht, l.total_tva, l.total_ttc,"; @@ -130,7 +130,7 @@ class CommandeFournisseur extends Commande $sql.= " WHERE l.fk_commande = ".$this->id; $sql.= " ORDER BY l.rowid"; //print $sql; - + dolibarr_syslog("CommandeFournisseur::fetch sql=".$sql,LOG_DEBUG); $result = $this->db->query($sql); if ($result) @@ -141,9 +141,9 @@ class CommandeFournisseur extends Commande while ($i < $num) { $objp = $this->db->fetch_object($result); - + $ligne = new CommandeFournisseurLigne($this->db); - + $ligne->id = $objp->rowid; $ligne->desc = $objp->description; // Description ligne $ligne->qty = $objp->qty; @@ -153,14 +153,14 @@ class CommandeFournisseur extends Commande $ligne->total_ht = $objp->total_ht; $ligne->total_tva = $objp->total_tva; $ligne->total_ttc = $objp->total_ttc; - + $ligne->fk_product = $objp->product_id; // Id du produit $ligne->libelle = $objp->label; // Label produit $ligne->product_desc = $objp->description; // Description produit $ligne->ref = $objp->ref; // Reference $ligne->ref_fourn = $objp->ref_fourn; // Reference supplier - + $this->lignes[$i] = $ligne; //dolibarr_syslog("1 ".$ligne->desc); //dolibarr_syslog("2 ".$ligne->product_desc); @@ -186,7 +186,7 @@ class CommandeFournisseur extends Commande } /** - * \brief Insère ligne de log + * \brief Ins�re ligne de log * \param user Utilisateur qui modifie la commande * \param statut Statut de la commande * \param datelog Date de modification @@ -206,6 +206,7 @@ class CommandeFournisseur extends Commande return -1; } } + /** * \brief Valide la commande * \param user Utilisateur qui valide @@ -214,56 +215,83 @@ class CommandeFournisseur extends Commande { global $langs,$conf; - dolibarr_syslog("CommandeFournisseur.class::Valid"); + $error=0; + + dolibarr_syslog("CommandeFournisseur::Valid"); $result = 0; if ($user->rights->fournisseur->commande->valider) { $this->db->begin(); - + // Definition du nom de module de numerotation de commande $soc = new Societe($this->db); $soc->fetch($this->fourn_id); - $num=$this->getNextNumRef($soc); - // on vérifie si la commande est en numérotation provisoire - $comref = substr($this->ref, 1, 4); - if ($comref == 'PROV') - { - $num = $this->getNextNumRef($soc); - } - else - { - $num = $this->ref; - } + // Check if object has a temporary ref + if (eregi('^\(PROV', $this->ref)) + { + $num = $this->getNextNumRef($soc); + } + else + { + $num = $this->ref; + } - $sql = 'UPDATE '.MAIN_DB_PREFIX."commande_fournisseur SET ref='$num', fk_statut = 1, date_valid=".$this->db->idate(mktime()).", fk_user_valid=$user->id"; - $sql .= " WHERE rowid = $this->id AND fk_statut = 0"; + $sql = 'UPDATE '.MAIN_DB_PREFIX."commande_fournisseur"; + $sql.= " SET ref='$num', fk_statut = 1, date_valid=".$this->db->idate(mktime()).", fk_user_valid=$user->id"; + $sql.= " WHERE rowid = $this->id AND fk_statut = 0"; - $resql=$this->db->query($sql); - if ($resql) - { - $result = 1; - $this->log($user, 1, time()); // Statut 1 - $this->ref = $num; + $resql=$this->db->query($sql); + if ($resql) + { + $result = 1; + $this->log($user, 1, time()); // Statut 1 + $this->ref = $num; - // Appel des triggers - include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php"); - $interface=new Interfaces($this->db); - $result=$interface->run_triggers('ORDER_SUPPLIER_VALIDATE',$this,$user,$langs,$conf); - if ($result < 0) { $error++; $this->errors=$interface->errors; } - // Fin appel triggers + // If stock is incremented on validate order, we must increment it + if ($result >= 0 && $conf->stock->enabled && $conf->global->STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER == 1) + { + require_once(DOL_DOCUMENT_ROOT."/product/stock/mouvementstock.class.php"); + + for ($i = 0 ; $i < sizeof($this->lignes) ; $i++) + { + $mouvP = new MouvementStock($this->db); + // We decrement stock of product (and sub-products) + $entrepot_id = "1"; //Todo: ajouter possibilite de choisir l'entrepot + $result=$mouvP->reception($user, $this->lignes[$i]->fk_product, $entrepot_id, $this->lignes[$i]->qty); + if ($result < 0) { $error++; } + } + } - dolibarr_syslog("CommandeFournisseur::valid Success"); - $this->db->commit(); - return 1; - } - else - { - $this->error=$this->db->error(); - dolibarr_syslog("CommandeFournisseur::valid ".$this->error); - $this->db->rollback(); - return -1; - } + if ($error == 0) + { + // Appel des triggers + include_once(DOL_DOCUMENT_ROOT . "/interfaces.class.php"); + $interface=new Interfaces($this->db); + $result=$interface->run_triggers('ORDER_SUPPLIER_VALIDATE',$this,$user,$langs,$conf); + if ($result < 0) { $error++; $this->errors=$interface->errors; } + // Fin appel triggers + } + + if ($error == 0) + { + $this->db->commit(); + return 1; + } + else + { + $this->db->rollback(); + $this->error=$this->db->lasterror(); + return -1; + } + } + else + { + $this->error=$this->db->lasterror(); + dolibarr_syslog("CommandeFournisseur::valid ".$this->error); + $this->db->rollback(); + return -1; + } } else { @@ -276,7 +304,7 @@ class CommandeFournisseur extends Commande /** * \brief Annule la commande * \param user Utilisateur qui demande annulation - * \remarks L'annulation se fait après la validation + * \remarks L'annulation se fait apr�s la validation */ function Cancel($user) { @@ -320,8 +348,8 @@ class CommandeFournisseur extends Commande /** - * \brief Retourne le libellé du statut d'une commande (brouillon, validée, abandonnée, payée) - * \param mode 0=libellé long, 1=libellé court, 2=Picto + Libellé court, 3=Picto, 4=Picto + Libellé long + * \brief Retourne le libell� du statut d'une commande (brouillon, valid�e, abandonn�e, pay�e + * \param mode 0=libell� long, 1=libell� court, 2=Picto + Libell� court, 3=Picto, 4=Picto + Libell� long * \return string Libelle */ function getLibStatut($mode=0) @@ -330,10 +358,10 @@ class CommandeFournisseur extends Commande } /** - * \brief Renvoi le libellé d'un statut donné + * \brief Renvoi le libell� d'un statut donn� * \param statut Id statut - * \param mode 0=libellé long, 1=libellé court, 2=Picto + Libellé court, 3=Picto, 4=Picto + Libellé long, 5=Libellé court + Picto - * \return string Libellé du statut + * \param mode 0=libell� long, 1=libell� court, 2=Picto + Libell� court, 3=Picto, 4=Picto + Libell� long, 5=Libell� court + Picto + * \return string Libell� du statut */ function LibStatut($statut,$mode=0) { @@ -414,8 +442,8 @@ class CommandeFournisseur extends Commande /** - * \brief Renvoie la référence de commande suivante non utilisée en fonction du module - * de numérotation actif défini dans COMMANDE_SUPPLIER_ADDON + * \brief Renvoie la r�f�rence de commande suivante non utilis�e en fonction du modul + * de num�rotation actif d�fini dans COMMANDE_SUPPLIER_ADDON * \param soc objet societe * \return string reference libre pour la facture */ @@ -431,7 +459,7 @@ class CommandeFournisseur extends Commande if (defined('COMMANDE_SUPPLIER_ADDON') && COMMANDE_SUPPLIER_ADDON) { $file = COMMANDE_SUPPLIER_ADDON.'.php'; - + if (is_readable($dir.'/'.$file)) { // Definition du nom de module de numerotation de commande fournisseur @@ -494,9 +522,9 @@ class CommandeFournisseur extends Commande if ($result < 0) { $error++; $this->errors=$interface->errors; } // Fin appel triggers - $subject = "Votre commande ".$this->ref." a été approuvée"; + $subject = "Votre commande ".$this->ref." a �t� approuv�e"; $message = "Bonjour,\n\n"; - $message .= "Votre commande ".$this->ref." a été approuvée, par $user->fullname"; + $message .= "Votre commande ".$this->ref." a �t� approuv�e, par $user->fullname"; $message .= "\n\nCordialement,\n\n"; $this->_NotifyCreator($user, $subject, $message); @@ -530,14 +558,14 @@ class CommandeFournisseur extends Commande { $sql = "UPDATE ".MAIN_DB_PREFIX."commande_fournisseur SET fk_statut = 9"; $sql .= " WHERE rowid = ".$this->id; - + if ($this->db->query($sql) ) { $result = 0; $this->log($user, 9, time()); - $subject = "Votre commande ".$this->ref." a été refusée"; - $message = "Votre commande ".$this->ref." a été refusée, par $user->fullname"; + $subject = "Votre commande ".$this->ref." a �t� refus�e"; + $message = "Votre commande ".$this->ref." a �t� refus�e, par $user->fullname"; $this->_NotifyCreator($user, $subject, $message); } @@ -590,7 +618,7 @@ class CommandeFournisseur extends Commande { $sql = "UPDATE ".MAIN_DB_PREFIX."commande_fournisseur SET fk_statut = 3, fk_methode_commande=".$methode.",date_commande=".$this->db->idate("$date"); $sql .= " WHERE rowid = ".$this->id." AND fk_statut = 2 ;"; - + if ($this->db->query($sql) ) { $result = 0; @@ -610,8 +638,8 @@ class CommandeFournisseur extends Commande } /** - * \brief Créé la commande au statut brouillon - * \param user Utilisateur qui crée + * \brief Cr�� la commande au statut brouillon + * \param user Utilisateur qui cr�e * \return int <0 si ko, >0 si ok */ function create($user) @@ -631,7 +659,7 @@ class CommandeFournisseur extends Commande if ( $this->db->query($sql) ) { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."commande_fournisseur"); - + $sql = "UPDATE ".MAIN_DB_PREFIX."commande_fournisseur"; $sql.= " SET ref='(PROV".$this->id.")'"; $sql.= " WHERE rowid=".$this->id; @@ -672,7 +700,7 @@ class CommandeFournisseur extends Commande * \brief Ajoute une ligne de commande * \param desc Description * \param pu Prix unitaire - * \param qty Quantité + * \param qty Quantit� * \param txtva Taux tva * \param fk_product Id produit * \param remise_percent Remise @@ -713,7 +741,7 @@ class CommandeFournisseur extends Commande if ($this->statut == 0) { $this->db->begin(); - + if ($fk_product > 0) { $prod = new Product($this->db, $fk_product); @@ -728,7 +756,7 @@ class CommandeFournisseur extends Commande } if ($result == 0 || $result == -1) { - $this->error="Aucun tarif trouvé pour cette quantité. Quantité saisie insuffisante ?"; + $this->error="Aucun tarif trouv� pour cette quantit�. Quantit� saisie insuffisante ?"; $this->db->rollback(); dolibarr_syslog("FournisseurCommande::addline result=".$result." - ".$this->error, LOG_DEBUG); return -1; @@ -747,7 +775,7 @@ class CommandeFournisseur extends Commande return -1; } } - + // Calcul du total TTC et de la TVA pour la ligne a partir de // qty, pu, remise_percent et txtva // TRES IMPORTANT: C'est au moment de l'insertion ligne qu'on doit stocker @@ -758,7 +786,7 @@ class CommandeFournisseur extends Commande $total_ttc = $tabprice[2]; $subprice = price2num($pu,'MU'); - + // \TODO A virer // Anciens indicateurs: $price, $remise (a ne plus utiliser) $remise = 0; @@ -766,7 +794,7 @@ class CommandeFournisseur extends Commande { $remise = round(($pu * $remise_percent / 100), 2); } - + $sql = "INSERT INTO ".MAIN_DB_PREFIX."commande_fournisseurdet"; $sql.= " (fk_commande,label, description,"; $sql.= " fk_product,"; @@ -848,7 +876,7 @@ class CommandeFournisseur extends Commande { $error = -1; } - // Si module stock géré et que expedition faite depuis un entrepot + // Si module stock g�r� et que expedition faite depuis un entrepot if (!$error && $conf->stock->enabled && $entrepot) { /* @@ -1026,7 +1054,7 @@ class CommandeFournisseur extends Commande { $result = 0; $result=$this->log($user, $statut, $date); - + $this->db->commit(); } else @@ -1050,9 +1078,9 @@ class CommandeFournisseur extends Commande return $result ; } - /** \brief Créé la commande depuis une propale existante - \param user Utilisateur qui crée - \param propale_id id de la propale qui sert de modèle + /** \brief Cr�� la commande depuis une propale existante + \param user Utilisateur qui cr�e + \param propale_id id de la propale qui sert de mod�le */ function updateFromCommandeClient($user, $idc, $comclientid) { @@ -1071,7 +1099,7 @@ class CommandeFournisseur extends Commande $libelle = $prod->libelle; $ref = $prod->ref; } - + $sql = "INSERT INTO ".MAIN_DB_PREFIX."commande_fournisseurdet"; $sql .= " (fk_commande,label,description,fk_product, price, qty, tva_tx, remise_percent, subprice, remise, ref)"; $sql .= " VALUES (".$idc.", '" . addslashes($libelle) . "','" . addslashes($comclient->lignes[$i]->desc) . "'"; @@ -1208,11 +1236,11 @@ class CommandeFournisseur extends Commande /** - * \brief Mets à jour une ligne de commande + * \brief Mets � jour une ligne de commande * \param rowid Id de la ligne de facture * \param desc Description de la ligne * \param pu Prix unitaire - * \param qty Quantité + * \param qty Quantit� * \param remise_percent Pourcentage de remise de la ligne * \param tva_tx Taux TVA * \param info_bits Miscellanous informations @@ -1226,8 +1254,8 @@ class CommandeFournisseur extends Commande if ($this->brouillon) { $this->db->begin(); - - // Nettoyage paramètres + + // Nettoyage param�tres $remise_percent=price2num($remise_percent); $qty=price2num($qty); if (! $qty) $qty=1; @@ -1274,18 +1302,18 @@ class CommandeFournisseur extends Commande $result = $this->db->query( $sql); if ($result > 0) { - // Mise a jour info denormalisees au niveau facture - $this->update_price(); - - $this->db->commit(); - return $result; + // Mise a jour info denormalisees au niveau facture + $this->update_price(); + + $this->db->commit(); + return $result; } else { - $this->error=$this->db->error(); - dolibarr_syslog("CommandeFournisseur::updateline ".$this->error); - $this->db->rollback(); - return -1; + $this->error=$this->db->error(); + dolibarr_syslog("CommandeFournisseur::updateline ".$this->error); + $this->db->rollback(); + return -1; } } else @@ -1298,8 +1326,8 @@ class CommandeFournisseur extends Commande /** - * \brief Initialise la commande avec valeurs fictives aléatoire - * Sert à générer une commande pour l'aperu des modèles ou demo + * \brief Initialise la commande avec valeurs fictives al�atoire + * Sert � g�n�rer une commande pour l'aperu des mod�les ou demo */ function initAsSpecimen() { @@ -1307,7 +1335,7 @@ class CommandeFournisseur extends Commande dolibarr_syslog("CommandeFournisseur::initAsSpecimen"); - // Charge tableau des id de société socids + // Charge tableau des id de soci�t� socids $socids = array(); $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."societe WHERE fournisseur=1 LIMIT 10"; $resql = $this->db->query($sql); @@ -1340,7 +1368,7 @@ class CommandeFournisseur extends Commande } } - // Initialise paramètres + // Initialise param�tres $this->id=0; $this->ref = 'SPECIMEN'; $this->specimen=1; @@ -1396,7 +1424,7 @@ class CommandeFournisseurLigne extends CommandeLigne var $product_desc; // Description produit // From llx_product_fournisseur - var $ref_fourn; // Référence fournisseur + var $ref_fourn; // R�f�rence fournisseur function CommandeFournisseurLigne($DB) { @@ -1433,11 +1461,11 @@ class CommandeFournisseurLigne extends CommandeLigne $this->total_ht = $objp->total_ht; $this->total_tva = $objp->total_tva; $this->total_ttc = $objp->total_ttc; - + $this->ref = $objp->product_ref; $this->product_libelle = $objp->product_libelle; $this->product_desc = $objp->product_desc; - + $this->db->free($result); } else diff --git a/htdocs/product/stock/mouvementstock.class.php b/htdocs/product/stock/mouvementstock.class.php index 4a3b70f0b1e..e49046ed2ed 100644 --- a/htdocs/product/stock/mouvementstock.class.php +++ b/htdocs/product/stock/mouvementstock.class.php @@ -15,24 +15,20 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * $Id$ - * $Source$ */ /** - \file htdocs/product/stock/mouvementstock.class.php - \ingroup stock - \brief Fichier de la classe de gestion des mouvements de stocks - \version $Revision$ + * \file htdocs/product/stock/mouvementstock.class.php + * \ingroup stock + * \brief Fichier de la classe de gestion des mouvements de stocks + * \version $Revision$ */ /** - \class MouvementStock - \brief Classe permettant la gestion des mouvements de stocks + * \class MouvementStock + * \brief Classe permettant la gestion des mouvements de stocks */ - class MouvementStock { @@ -51,7 +47,7 @@ class MouvementStock global $conf; $error = 0; - dolibarr_syslog("MouvementStock::_Create $user->id, $fk_product, $entrepot_id, $qty, $type, $price"); + dolibarr_syslog("MouvementStock::_Create $user->id, $fk_product, $entrepot_id, qty=$qty, type=$type, $price"); $this->db->begin(); @@ -71,7 +67,7 @@ class MouvementStock } else { - dolibarr_syslog("MouvementStock::_Create echec insert ".$this->error); + dolibarr_syslog("MouvementStock::_Create ".$this->error); $error = -1; } @@ -116,7 +112,7 @@ class MouvementStock } else { - dolibarr_syslog("MouvementStock::_Create echec update ".$this->error); + dolibarr_syslog("MouvementStock::_Create ".$this->error, LOG_ERR); $error = -3; } } @@ -147,8 +143,8 @@ class MouvementStock else { $this->db->rollback(); - $this->error=$this->db->error() . " - $sql"; - dolibarr_syslog("MouvementStock::_Create ERROR : ".$this->error); + $this->error=$this->db->error(); + dolibarr_syslog("MouvementStock::_Create ".$this->error); return -2; } } @@ -183,14 +179,14 @@ class MouvementStock } else { - dolibarr_syslog("MouvementStock::_createSubProduct echec update ".$this->error, LOG_ERROR); + dolibarr_syslog("MouvementStock::_createSubProduct ".$this->error, LOG_ERROR); $error = -2; } // Create movement for each subproduct foreach($pids as $key => $value) { - $this->_create($user, $pids[$key], $entrepot_id, $pqtys[$key], $type, $price); + $this->_create($user, $pids[$key], $entrepot_id, ($qty * $pqtys[$key]), $type, $price); } return $error; diff --git a/mysql/data/data.sql b/mysql/data/data.sql index 57397265ba6..4d78320a1d0 100644 --- a/mysql/data/data.sql +++ b/mysql/data/data.sql @@ -676,7 +676,7 @@ insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'51','Soci insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'52','Société en nom collectif'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'53','Société en commandite'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'54','Société à responsabilité limitée (SARL)'); -insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'55','Société anonyme à conseil d\'administration'); +insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'55','Société anonyme à conseil d administration'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'56','Société anonyme à directoire'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'57','Société par actions simplifiée'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'58','Entreprise Unipersonnelle à Responsabilité Limitée (EURL)'); @@ -684,18 +684,18 @@ insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'58','Entre insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'61','Caisse d\'épargne et de prévoyance'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'62','Groupement d\'intérêt économique (GIE)'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'63','Société coopérative agricole'); -insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'64','Société non commerciale d\'assurances'); +insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'64','Société non commerciale d assurances'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'65','Société civile'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'69','Autres personnes de droit privé inscrites au RCS'); -insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'71','Administration de l\'état'); +insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'71','Administration de l état'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'72','Collectivité territoriale'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'73','Établissement public administratif'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'74','Autre personne morale de droit public administratif'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'81','Organisme gérant régime de protection social à adhésion obligatoire'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'82','Organisme mutualiste'); -insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'83','Comité d\'entreprise'); +insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'83','Comité d entreprise'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'84','Organisme professionnel'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'85','Organisme de retraite à adhésion non obligatoire'); @@ -714,8 +714,8 @@ insert into llx_c_forme_juridique (fk_pays, code, libelle) values (2, '205', 'SC insert into llx_c_forme_juridique (fk_pays, code, libelle) values (2, '206', 'SCS - Société en commandite simple'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (2, '207', 'SCA - Société en commandite par action'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (2, '208', 'SNC - Société en nom collectif'); -insert into llx_c_forme_juridique (fk_pays, code, libelle) values (2, '209', 'GIE - Groupement d\'intérêt économique'); -insert into llx_c_forme_juridique (fk_pays, code, libelle) values (2, '210', 'GEIE - Groupement européen d\'intérêt économique'); +insert into llx_c_forme_juridique (fk_pays, code, libelle) values (2, '209', 'GIE - Groupement d intérêt économique'); +insert into llx_c_forme_juridique (fk_pays, code, libelle) values (2, '210', 'GEIE - Groupement européen d intérêt économique'); -- Pour la Suisse insert into llx_c_forme_juridique (fk_pays, code, libelle) values (6, '600', 'Raison Individuelle');