diff --git a/htdocs/fourn/facture/paiementfourn.class.php b/htdocs/fourn/facture/paiementfourn.class.php index f9666be8017..c99d671a23b 100644 --- a/htdocs/fourn/facture/paiementfourn.class.php +++ b/htdocs/fourn/facture/paiementfourn.class.php @@ -1,7 +1,8 @@ - * Copyright (C) 2004-2007 Laurent Destailleur - * Copyright (C) 2005 Marc Barilley / Ocebo +/* Copyright (C) 2002-2004 Rodolphe Quiedeville + * Copyright (C) 2004-2007 Laurent Destailleur + * Copyright (C) 2005 Marc Barilley / Ocebo + * Copyright (C) 2005-2009 Regis Houssin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -42,12 +43,12 @@ class PaiementFourn var $amount; var $total; var $author; - var $paiementid; // Type de paiement. Stock� dans fk_paiement - // de llx_paiement qui est li� aux types de + var $paiementid; // Type de paiement. Stocke dans fk_paiement + // de llx_paiement qui est lie aux types de //paiement de llx_c_paiement - var $num_paiement; // Num�ro du CHQ, VIR, etc... + var $num_paiement; // Numero du CHQ, VIR, etc... var $bank_account; // Id compte bancaire du paiement - var $bank_line; // Id de la ligne d'�criture bancaire + var $bank_line; // Id de la ligne d'ecriture bancaire var $note; var $statut; //Status of payment. 0 = unvalidated; 1 = validated // fk_paiement dans llx_paiement est l'id du type de paiement (7 pour CHQ, ...) @@ -57,7 +58,7 @@ class PaiementFourn /** * \brief Constructeur de la classe - * \param DB handler acc�s base de donn�es + * \param DB handler acces base de donnees */ function PaiementFourn($DB) @@ -210,9 +211,9 @@ class PaiementFourn /** - * \brief Supprime un paiement ainsi que les lignes qu'il a g�n�r� dans comptes - * Si le paiement porte sur un �criture compte qui est rapproch�e, on refuse - * Si le paiement porte sur au moins une facture � "pay�e", on refuse + * \brief Supprime un paiement ainsi que les lignes qu'il a genere dans comptes + * Si le paiement porte sur un ecriture compte qui est rapprochee, on refuse + * Si le paiement porte sur au moins une facture a "payee", on refuse * \return int <0 si ko, >0 si ok */ function delete() @@ -221,14 +222,14 @@ class PaiementFourn $this->db->begin(); - // V�rifier si paiement porte pas sur une facture � l'�tat pay�e + // Verifier si paiement porte pas sur une facture a l'etat payee // Si c'est le cas, on refuse la suppression $billsarray=$this->getBillsArray('paye=1'); if (is_array($billsarray)) { if (sizeof($billsarray)) { - $this->error='Impossible de supprimer un paiement portant sur au moins une facture � l\'�tat pay�'; + $this->error='Impossible de supprimer un paiement portant sur au moins une facture a l\'etat paye'; $this->db->rollback(); return -1; } @@ -239,7 +240,7 @@ class PaiementFourn return -2; } - // V�rifier si paiement ne porte pas sur ecriture bancaire rapproch�e + // Verifier si paiement ne porte pas sur ecriture bancaire rapprochee // Si c'est le cas, on refuse le delete if ($bank_line_id) { @@ -247,7 +248,7 @@ class PaiementFourn $accline->fetch($bank_line_id); if ($accline->rappro) { - $this->error='Impossible de supprimer un paiement qui a g�n�r� une �criture qui a �t� rapproch�e'; + $this->error='Impossible de supprimer un paiement qui a genere une ecriture qui a ete rapprochee'; $this->db->rollback(); return -3; } @@ -269,7 +270,7 @@ class PaiementFourn return -3; } - // Supprimer l'�criture bancaire si paiement li� � �criture + // Supprimer l'ecriture bancaire si paiement lie a ecriture if ($bank_line_id) { $accline = new AccountLine($this->db); @@ -294,7 +295,7 @@ class PaiementFourn } /** - * \brief Mise a jour du lien entre le paiement et la ligne g�n�r�e dans llx_bank + * \brief Mise a jour du lien entre le paiement et la ligne generee dans llx_bank * \param id_bank Id compte bancaire */ function update_fk_bank($id_bank) @@ -413,8 +414,8 @@ class PaiementFourn } /** - * \brief Retourne le libell� du statut d'une facture (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, 5=Libell� court + Picto + * \brief Retourne le libelle du statut d'une facture (brouillon, validee, abandonnee, payee) + * \param mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto * \return string Libelle */ function getLibStatut($mode=0) @@ -423,10 +424,10 @@ class PaiementFourn } /** - * \brief Renvoi le libell� d'un statut donne + * \brief Renvoi le libelle d'un statut donne * \param status 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=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto + * \return string Libelle du statut */ function LibStatut($status,$mode=0) { @@ -485,7 +486,7 @@ class PaiementFourn $text=$this->ref; // Sometimes ref contains label if (eregi('^\((.*)\)$',$text,$reg)) { - // Label générique car entre parenthèses. On l'affiche en le traduisant + // Label g诩rique car entre parenthç²¥s. On l'affiche en le traduisant if ($reg[1]=='paiement') $reg[1]='Payment'; $text=$langs->trans($reg[1]); } @@ -505,7 +506,9 @@ class PaiementFourn { if(!empty($num) && $this->statut!=1) { - $sql = 'UPDATE '.MAIN_DB_PREFIX.'paiementfourn SET num_paiement = \''.$this->db->escape($num).'\' WHERE rowid = '.$this->id; + $sql = "UPDATE ".MAIN_DB_PREFIX."paiementfourn"; + $sql.= " SET num_paiement = '".$this->db->escape($num)."'"; + $sql.= " WHERE rowid = ".$this->id; dol_syslog("PaiementFourn::update_num sql=".$sql); $result = $this->db->query($sql); @@ -532,7 +535,10 @@ class PaiementFourn { if(!empty($date) && $this->statut!=1) { - $sql = 'UPDATE '.MAIN_DB_PREFIX.'paiementfourn SET datep = '.$this->db->idate($date).' WHERE rowid = '.$this->id; + $sql = "UPDATE ".MAIN_DB_PREFIX."paiementfourn"; + $sql.= " SET datep = ".$this->db->idate($date); + $sql.= " WHERE rowid = ".$this->id; + dol_syslog("PaiementFourn::update_date sql=".$sql); $result = $this->db->query($sql); if ($result) diff --git a/htdocs/fourn/fournisseur.commande.class.php b/htdocs/fourn/fournisseur.commande.class.php index c91b4a1bd16..0428e3ca02a 100644 --- a/htdocs/fourn/fournisseur.commande.class.php +++ b/htdocs/fourn/fournisseur.commande.class.php @@ -82,13 +82,14 @@ class CommandeFournisseur extends Commande global $conf; $sql = "SELECT c.rowid, c.ref, c.date_creation, c.fk_soc, c.fk_user_author, c.fk_statut, c.amount_ht, c.total_ht, c.total_ttc, c.tva,"; - $sql .= " ".$this->db->pdate("c.date_commande")." as date_commande, c.fk_projet as fk_project, c.remise_percent, c.source, c.fk_methode_commande,"; - $sql .= " c.note, c.note_public, c.model_pdf,"; - $sql .= " cm.libelle as methode_commande"; - $sql .= " FROM ".MAIN_DB_PREFIX."commande_fournisseur as c"; - $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_methode_commande_fournisseur as cm ON cm.rowid = c.fk_methode_commande"; - if ($ref) $sql.= " WHERE c.ref='".$ref."'"; - else $sql.= " WHERE c.rowid=".$id; + $sql.= " ".$this->db->pdate("c.date_commande")." as date_commande, c.fk_projet as fk_project, c.remise_percent, c.source, c.fk_methode_commande,"; + $sql.= " c.note, c.note_public, c.model_pdf,"; + $sql.= " cm.libelle as methode_commande"; + $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur as c"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_methode_commande_fournisseur as cm ON cm.rowid = c.fk_methode_commande"; + $sql.= " WHERE c.entity = ".$conf->entity; + if ($ref) $sql.= " AND c.ref='".$ref."'"; + else $sql.= " AND c.rowid=".$id; dol_syslog("CommandeFournisseur::fetch sql=".$sql,LOG_DEBUG); $resql = $this->db->query($sql) ; @@ -255,8 +256,8 @@ class CommandeFournisseur extends Commande } $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"; + $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) @@ -364,8 +365,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 libelle du statut d'une commande (brouillon, validee, abandonnee, payee + * \param mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long * \return string Libelle */ function getLibStatut($mode=0) @@ -374,10 +375,10 @@ class CommandeFournisseur extends Commande } /** - * \brief Renvoi le libell� d'un statut donn� + * \brief Renvoi le libelle d'un statut donne * \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=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto + * \return string Libelle du statut */ function LibStatut($statut,$mode=0) { @@ -705,8 +706,26 @@ class CommandeFournisseur extends Commande /* On positionne en mode brouillon la commande */ $this->brouillon = 1; - $sql = "INSERT INTO ".MAIN_DB_PREFIX."commande_fournisseur (ref, fk_soc, date_creation, fk_user_author, fk_statut, source, model_pdf) "; - $sql .= " VALUES ('',".$this->socid.", ".$this->db->idate(mktime()).", ".$user->id.",0,0,'".$conf->global->COMMANDE_SUPPLIER_ADDON_PDF."')"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."commande_fournisseur ("; + $sql.= "ref"; + $sql.= ", entity"; + $sql.= ", fk_soc"; + $sql.= ", date_creation"; + $sql.= ", fk_user_author"; + $sql.= ", fk_statut"; + $sql.= ", source"; + $sql.= ", model_pdf"; + $sql.= ") "; + $sql.= " VALUES ("; + $sql.= "''"; + $sql.= ", ".$conf->entity; + $sql.= ", ".$this->socid; + $sql.= ", ".$this->db->idate(mktime()); + $sql.= ", ".$user->id; + $sql.= ", 0"; + $sql.= ", 0"; + $sql.= ", '".$conf->global->COMMANDE_SUPPLIER_ADDON_PDF."'"; + $sql.= ")"; dol_syslog("CommandeFournisseur::Create sql=".$sql); if ( $this->db->query($sql) ) @@ -940,7 +959,7 @@ class CommandeFournisseur extends Commande { $error = -1; } - // Si module stock g�r� et que expedition faite depuis un entrepot + // Si module stock gere et que expedition faite depuis un entrepot if (!$error && $conf->stock->enabled && $entrepot) { $mouv = new MouvementStock($this->db); @@ -1059,8 +1078,9 @@ class CommandeFournisseur extends Commande */ function get_methodes_commande() { - $sql = "SELECT rowid, libelle FROM ".MAIN_DB_PREFIX."c_methode_commande_fournisseur"; - $sql .= " WHERE active = 1"; + $sql = "SELECT rowid, libelle"; + $sql.= " FROM ".MAIN_DB_PREFIX."c_methode_commande_fournisseur"; + $sql.= " WHERE active = 1"; if ($this->db->query($sql)) { @@ -1109,7 +1129,7 @@ class CommandeFournisseur extends Commande $sql = "UPDATE ".MAIN_DB_PREFIX."commande_fournisseur"; $sql.= " SET fk_statut = ".$statut; $sql.= " WHERE rowid = ".$this->id; - $sql.= " AND (fk_statut = 3 OR fk_statut = 4)"; + $sql.= " AND fk_statut IN (3,4)"; dol_syslog("CommandeFournisseur::Livraison sql=".$sql); $resql=$this->db->query($sql); @@ -1141,9 +1161,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 Cree la commande depuis une propale existante + \param user Utilisateur qui cree + \param propale_id id de la propale qui sert de modele */ function updateFromCommandeClient($user, $idc, $comclientid) { @@ -1219,13 +1239,16 @@ class CommandeFournisseur extends Commande */ function ReadApprobators() { + global $conf; + $this->approbs = array(); $sql = "SELECT u.name, u.firstname, u.email"; - $sql .= " FROM ".MAIN_DB_PREFIX."user as u"; - $sql .= " , ".MAIN_DB_PREFIX."user_rights as ur"; - $sql .= " WHERE u.rowid = ur.fk_user"; - $sql .= " AND ur.fk_id = 184"; + $sql.= " FROM ".MAIN_DB_PREFIX."user as u"; + $sql.= " , ".MAIN_DB_PREFIX."user_rights as ur"; + $sql.= " WHERE u.rowid = ur.fk_user"; + $sql.= " AND u.entity = ".$conf->entity; + $sql.= " AND ur.fk_id = 184"; $resql = $this->db->query($sql); if ($resql) @@ -1345,18 +1368,24 @@ 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 aleatoire + * Sert a generer une commande pour l'aperu des modeles ou demo */ function initAsSpecimen() { - global $user,$langs; + global $user,$langs,$conf; dol_syslog("CommandeFournisseur::initAsSpecimen"); - // Charge tableau des id de soci�t� socids + // Charge tableau des id de societe socids $socids = array(); - $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."societe WHERE fournisseur=1 LIMIT 10"; + + $sql = "SELECT rowid"; + $sql.= " FROM ".MAIN_DB_PREFIX."societe"; + $sql.= " WHERE fournisseur=1"; + $sql.= " AND entity = ".$conf->entity; + $sql.= " LIMIT 10"; + $resql = $this->db->query($sql); if ($resql) { @@ -1373,7 +1402,12 @@ class CommandeFournisseur extends Commande // Charge tableau des produits prodids $prodids = array(); - $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."product WHERE envente=1"; + + $sql = "SELECT rowid"; + $sql.= " FROM ".MAIN_DB_PREFIX."product"; + $sql.= " WHERE envente = 1"; + $sql.= " AND entity = ".$conf->entity; + $resql = $this->db->query($sql); if ($resql) { @@ -1387,7 +1421,7 @@ class CommandeFournisseur extends Commande } } - // Initialise param�tres + // Initialise parametres $this->id=0; $this->ref = 'SPECIMEN'; $this->specimen=1; diff --git a/htdocs/fourn/fournisseur.facture.class.php b/htdocs/fourn/fournisseur.facture.class.php index 546d95045cd..274078e147f 100644 --- a/htdocs/fourn/fournisseur.facture.class.php +++ b/htdocs/fourn/fournisseur.facture.class.php @@ -107,7 +107,7 @@ class FactureFournisseur extends Facture */ function create($user) { - global $langs; + global $langs,$conf; // Clear parameters if (empty($this->date)) $this->date=gmmktime(); @@ -122,13 +122,29 @@ class FactureFournisseur extends Facture if (! $remise) $remise = 0 ; $totalht = ($amount - $remise); - $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'facture_fourn (facnumber, libelle, fk_soc, datec, datef,'; - $sql.= ' note, note_public, fk_user_author, date_lim_reglement) '; - $sql.= " VALUES ('".addslashes($number)."','".addslashes($this->libelle)."',"; - $sql.= " ".$this->socid.", ".$this->db->idate(gmmktime()).",'".$this->db->idate($this->date)."',"; - $sql.= " '".addslashes($this->note)."',"; - $sql.= " '".addslashes($this->note_public)."',"; - $sql.= " ".$user->id.",'".$this->db->idate($this->date_echeance)."');"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."facture_fourn ("; + $sql.= "facnumber"; + $sql.= ", entity"; + $sql.= ", libelle"; + $sql.= ", fk_soc"; + $sql.= ", datec"; + $sql.= ", datef"; + $sql.= ", note"; + $sql.= ", note_public"; + $sql.= ", fk_user_author"; + $sql.= ", date_lim_reglement"; + $sql.= ")"; + $sql.= " VALUES ("; + $sql.= "'".addslashes($number)."'"; + $sql.= ", ".$conf->entity; + $sql.= ", '".addslashes($this->libelle)."'"; + $sql.= ", ".$this->socid; + $sql.= ", ".$this->db->idate(gmmktime()); + $sql.= ", '".$this->db->idate($this->date)."'"; + $sql.= ", '".addslashes($this->note)."'"; + $sql.= ", '".addslashes($this->note_public)."'"; + $sql.= ", ".$user->id.",'".$this->db->idate($this->date_echeance)."'"; + $sql.= ")"; dol_syslog("FactureFournisseur::create sql=".$sql, LOG_DEBUG); $resql=$this->db->query($sql); @@ -377,8 +393,8 @@ class FactureFournisseur extends Facture /** - * \brief Tag la facture comme pay�e compl�tement - * \param user Objet utilisateur qui modifie l'�tat + * \brief Tag la facture comme payee completement + * \param user Objet utilisateur qui modifie l'etat * \return int <0 si ko, >0 si ok */ function set_payed($user) @@ -386,6 +402,7 @@ class FactureFournisseur extends Facture $sql = 'UPDATE '.MAIN_DB_PREFIX.'facture_fourn'; $sql.= ' SET paye = 1'; $sql.= ' WHERE rowid = '.$this->id; + $resql = $this->db->query($sql); if (! $resql) { @@ -409,8 +426,8 @@ class FactureFournisseur extends Facture $this->db->begin(); $sql = "UPDATE ".MAIN_DB_PREFIX."facture_fourn"; - $sql.= " SET fk_statut = 1, fk_user_valid = ".$user->id; - $sql.= " WHERE rowid = ".$this->id; + $sql.= " SET fk_statut = 1, fk_user_valid = ".$user->id; + $sql.= " WHERE rowid = ".$this->id; dol_syslog("FactureFournisseur::set_valid sql=".$sql, LOG_DEBUG); $resql = $this->db->query($sql); @@ -660,7 +677,7 @@ class FactureFournisseur extends Facture $this->user_validation = $vuser; } $this->date_creation = $obj->datec; - //$this->date_validation = $obj->datev; \todo La date de validation n'est pas encore g�r�e + //$this->date_validation = $obj->datev; \todo La date de validation n'est pas encore geree } $this->db->free($result); } @@ -685,12 +702,10 @@ class FactureFournisseur extends Facture $this->nbtodo=$this->nbtodolate=0; $sql = 'SELECT ff.rowid, ff.date_lim_reglement as datefin'; $sql.= ' FROM '.MAIN_DB_PREFIX.'facture_fourn as ff'; - $sql.= ', '.MAIN_DB_PREFIX.'societe as s'; if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; $sql.= ' WHERE ff.paye=0'; $sql.= ' AND ff.fk_statut > 0'; - $sql.= " AND ff.fk_soc = s.rowid"; - $sql.= " AND s.entity = ".$conf->entity; + $sql.= " AND ff.entity = ".$conf->entity; if ($user->societe_id) $sql.=' AND ff.fk_soc = '.$user->societe_id; if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= " AND ff.fk_soc = sc.fk_soc AND sc.fk_user = ".$user->id; @@ -739,16 +754,22 @@ class FactureFournisseur extends Facture /** - * \brief Initialise la facture avec valeurs fictives al�atoire - * Sert � g�n�rer une facture pour l'aperu des mod�les ou demo + * \brief Initialise la facture avec valeurs fictives aleatoire + * Sert a generer une facture pour l'aperu des modeles ou demo */ function initAsSpecimen() { - global $user,$langs; + global $user,$langs,$conf; // Charge tableau des id de societe socids $socids = array(); - $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."societe WHERE fournisseur=1 LIMIT 10"; + + $sql = "SELECT rowid"; + $sql.= " FROM ".MAIN_DB_PREFIX."societe"; + $sql.= " WHERE fournisseur = 1"; + $sql.= " AND entity = ".$conf->entity; + $sql.= " LIMIT 10"; + $resql = $this->db->query($sql); if ($resql) { @@ -765,7 +786,12 @@ class FactureFournisseur extends Facture // Charge tableau des produits prodids $prodids = array(); - $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."product WHERE envente=1"; + + $sql = "SELECT rowid"; + $sql.= " FROM ".MAIN_DB_PREFIX."product"; + $sql.= " WHERE envente = 1"; + $sql.= " AND entity = ".$conf->entity; + $resql = $this->db->query($sql); if ($resql) { diff --git a/htdocs/fourn/fournisseur.product.class.php b/htdocs/fourn/fournisseur.product.class.php index f6b6210cd66..9035a79b1f8 100644 --- a/htdocs/fourn/fournisseur.product.class.php +++ b/htdocs/fourn/fournisseur.product.class.php @@ -1,6 +1,7 @@ * Copyright (C) 2006 Laurent Destailleur + * Copyright (C) 2009 Regis Houssin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -144,10 +145,13 @@ class ProductFournisseur extends Product */ function remove_product_fournisseur_price($rowid) { + global $conf; + $this->db->begin(); $sql = "DELETE FROM ".MAIN_DB_PREFIX."product_fournisseur_price"; $sql.= " WHERE rowid = ".$rowid; + dol_syslog("ProductFournisseur::remove_product_fournisseur_price sql=".$sql); $resql = $this->db->query($sql); if ($resql) @@ -157,6 +161,8 @@ class ProductFournisseur extends Product $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur as pf"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON pfp.fk_product_fournisseur = pf.rowid"; $sql.= " WHERE pfp.rowid IS NULL"; + $sql.= " AND pf.entity = ".$conf->entity; + dol_syslog("ProductFournisseur::remove_product_fournisseur_price sql=".$sql); $resql = $this->db->query($sql); if ($resql) @@ -169,6 +175,7 @@ class ProductFournisseur extends Product $sql = "DELETE FROM ".MAIN_DB_PREFIX."product_fournisseur"; $sql.= " WHERE rowid = ".$rowidpf; + dol_syslog("ProductFournisseur::remove_product_fournisseur_price sql=".$sql); $resql2 = $this->db->query($sql); if (! $resql2) @@ -331,13 +338,16 @@ class ProductFournisseur extends Product */ function UpdateBuyPriceByFournRef($id_fourn, $product_fourn_ref, $qty, $buyprice, $user, $price_base_type='HT') { + global $conf; + $result=0; // Recherche id produit pour cette ref et fournisseur $sql = "SELECT fk_product"; $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur"; - $sql.= " WHERE fk_soc ='".$id_fourn."'"; - $sql.= " AND ref_fourn='".$product_fourn_ref."'"; + $sql.= " WHERE fk_soc = '".$id_fourn."'"; + $sql.= " AND ref_fourn = '".$product_fourn_ref."'"; + $sql.= " AND entity = ".$conf->entity; if ($this->db->query($sql)) { @@ -360,10 +370,13 @@ class ProductFournisseur extends Product */ function fetch_fourn_data($fournid) { + global $conf; + $sql = "SELECT rowid, ref_fourn"; $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur "; $sql.= " WHERE fk_product = ".$this->id; $sql.= " AND fk_soc = ".$fournid; + $sql.= " AND entity = ".$conf->entity; dol_syslog("Product::fetch_fourn_data sql=".$sql); $result = $this->db->query($sql) ; @@ -391,8 +404,10 @@ class ProductFournisseur extends Product { $sql = "SELECT pfp.rowid, pfp.price, pfp.quantity, pfp.unitprice"; $sql.= ", pf.rowid as product_fourn_id, pf.fk_soc, pf.ref_fourn, pf.fk_product"; - $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp, ".MAIN_DB_PREFIX."product_fournisseur as pf"; - $sql.= " WHERE pfp.rowid = ".$rowid." AND pf.rowid = pfp.fk_product_fournisseur"; + $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; + $sql.= ", ".MAIN_DB_PREFIX."product_fournisseur as pf"; + $sql.= " WHERE pfp.rowid = ".$rowid; + $sql.= " AND pf.rowid = pfp.fk_product_fournisseur"; dol_syslog("Product::fetch_product_fournisseur_price sql=".$sql, LOG_DEBUG); $resql = $this->db->query($sql) ; diff --git a/htdocs/includes/modules/supplier_order/mod_commande_fournisseur_muguet.php b/htdocs/includes/modules/supplier_order/mod_commande_fournisseur_muguet.php index 69924db248a..e083768c515 100644 --- a/htdocs/includes/modules/supplier_order/mod_commande_fournisseur_muguet.php +++ b/htdocs/includes/modules/supplier_order/mod_commande_fournisseur_muguet.php @@ -1,6 +1,6 @@ - * Copyright (C) 2005-2006 Regis Houssin + * Copyright (C) 2005-2009 Regis Houssin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,7 +21,7 @@ /** * \file htdocs/includes/modules/supplier_order/mod_commande_fournisseur_muguet.php * \ingroup commande - * \brief Fichier contenant la classe du mod�le de num�rotation de r�f�rence de commande fournisseur Muguet + * \brief Fichier contenant la classe du modele de numerotation de reference de commande fournisseur Muguet * \version $Id$ */ @@ -29,7 +29,7 @@ require_once(DOL_DOCUMENT_ROOT ."/includes/modules/supplier_order/modules_comman /** \class mod_commande_fournisseur_muguet - \brief Classe du mod�le de num�rotation de r�f�rence de commande fournisseur Muguet + \brief Classe du modele de numerotation de reference de commande fournisseur Muguet */ class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders { @@ -63,10 +63,13 @@ class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders */ function canBeActivated() { + global $conf; + $coyymm=''; $sql = "SELECT MAX(ref)"; $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur"; + $sql.= " WHERE entity = ".$conf->entity; $resql=$db->query($sql); if ($resql) { @@ -91,15 +94,16 @@ class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders */ function getNextValue($objsoc=0,$object='') { - global $db; + global $db,$conf; // D'abord on recupere la valeur max (reponse immediate car champ indexe) $posindice=8; $sql = "SELECT MAX(0+SUBSTRING(ref,".$posindice.")) as max"; $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur"; - $sql.= " WHERE ref like '".$this->prefix."%'"; - - $resql=$db->query($sql); + $sql.= " WHERE ref like '".$this->prefix."%'"; + $sql.= " AND entity = ".$conf->entity; + + $resql=$db->query($sql); if ($resql) { $obj = $db->fetch_object($resql); @@ -116,7 +120,7 @@ class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders } - /** \brief Renvoie la r�f�rence de commande suivante non utilis�e + /** \brief Renvoie la reference de commande suivante non utilisee * \param objsoc Object third party * \param object Object * \return string Texte descripif diff --git a/htdocs/includes/modules/supplier_order/mod_commande_fournisseur_orchidee.php b/htdocs/includes/modules/supplier_order/mod_commande_fournisseur_orchidee.php index 6dd0fc51a38..7ebe1ce4208 100644 --- a/htdocs/includes/modules/supplier_order/mod_commande_fournisseur_orchidee.php +++ b/htdocs/includes/modules/supplier_order/mod_commande_fournisseur_orchidee.php @@ -1,7 +1,7 @@ * Copyright (C) 2004-2008 Laurent Destailleur - * Copyright (C) 2005-2007 Regis Houssin + * Copyright (C) 2005-2009 Regis Houssin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -31,7 +31,7 @@ require_once(DOL_DOCUMENT_ROOT ."/includes/modules/supplier_order/modules_comman /** \class mod_commande_fournisseur_orchidee - \brief Classe du modèle de numérotation de référence de commande fournisseur Orchidee + \brief Classe du modèle de numerotation de référence de commande fournisseur Orchidee */ class mod_commande_fournisseur_orchidee extends ModeleNumRefSuppliersOrders { @@ -40,7 +40,7 @@ class mod_commande_fournisseur_orchidee extends ModeleNumRefSuppliersOrders var $nom = 'Orchidee'; - /** \brief Renvoi la description du modele de numérotation + /** \brief Renvoi la description du modele de numerotation * \return string Texte descripif */ function info() @@ -78,7 +78,7 @@ class mod_commande_fournisseur_orchidee extends ModeleNumRefSuppliersOrders return $texte; } - /** \brief Renvoi un exemple de numérotation + /** \brief Renvoi un exemple de numerotation * \return string Example */ function getExample() @@ -123,8 +123,8 @@ class mod_commande_fournisseur_orchidee extends ModeleNumRefSuppliersOrders } - /** \brief Renvoie la référence de commande suivante non utilisée - * \param objsoc Objet société + /** \brief Renvoie la référence de commande suivante non utilisee + * \param objsoc Objet societe * \param commande Objet commande * \return string Texte descripif */ diff --git a/htdocs/includes/modules/supplier_order/modules_commandefournisseur.php b/htdocs/includes/modules/supplier_order/modules_commandefournisseur.php index 2ec705c7192..7f99da88684 100644 --- a/htdocs/includes/modules/supplier_order/modules_commandefournisseur.php +++ b/htdocs/includes/modules/supplier_order/modules_commandefournisseur.php @@ -2,6 +2,7 @@ /* Copyright (C) 2003-2004 Rodolphe Quiedeville * Copyright (C) 2004-2005 Laurent Destailleur * Copyright (C) 2004 Eric Seigne + * Copyright (C) 2005-2009 Regis Houssin * Copyright (C) 2006 Andre Cianfarani * * This program is free software; you can redistribute it and/or modify @@ -41,7 +42,7 @@ class ModelePDFSuppliersOrders extends FPDF var $error=''; /** - \brief Renvoi le dernier message d'erreur de cr�ation de PDF de commande + \brief Renvoi le dernier message d'erreur de creation de PDF de commande */ function pdferror() { @@ -49,15 +50,19 @@ class ModelePDFSuppliersOrders extends FPDF } /** - * \brief Renvoi la liste des mod�les actifs + * \brief Renvoi la liste des modeles actifs */ function liste_modeles($db) { + global $conf; + $type='supplier_order'; $liste=array(); - $sql ="SELECT nom as id, nom as lib"; - $sql.=" FROM ".MAIN_DB_PREFIX."document_model"; - $sql.=" WHERE type = '".$type."'"; + + $sql = "SELECT nom as id, nom as lib"; + $sql.= " FROM ".MAIN_DB_PREFIX."document_model"; + $sql.= " WHERE type = '".$type."'"; + $sql.= " AND entity = ".$conf->entity; $resql = $db->query($sql); if ($resql) @@ -85,7 +90,7 @@ class ModelePDFSuppliersOrders extends FPDF /** \class ModeleNumRefSuppliersOrders - \brief Classe m�re des mod�les de num�rotation des r�f�rences de commandes fournisseurs + \brief Classe mere des modeles de numerotation des references de commandes fournisseurs */ class ModeleNumRefSuppliersOrders @@ -100,7 +105,7 @@ class ModeleNumRefSuppliersOrders return true; } - /** \brief Renvoi la description par defaut du modele de num�rotation + /** \brief Renvoi la description par defaut du modele de numerotation * \return string Texte descripif */ function info() @@ -120,8 +125,8 @@ class ModeleNumRefSuppliersOrders return $langs->trans("NoExample"); } - /** \brief Test si les num�ros d�j� en vigueur dans la base ne provoquent pas de - * de conflits qui empechera cette num�rotation de fonctionner. + /** \brief Test si les numeros deja en vigueur dans la base ne provoquent pas de + * de conflits qui empechera cette numerotation de fonctionner. * \return boolean false si conflit, true si ok */ function canBeActivated() @@ -129,7 +134,7 @@ class ModeleNumRefSuppliersOrders return true; } - /** \brief Renvoi prochaine valeur attribu�e + /** \brief Renvoi prochaine valeur attribuee * \return string Valeur */ function getNextValue() @@ -156,9 +161,9 @@ class ModeleNumRefSuppliersOrders /** * \brief Create object on disk - * \param db objet base de donn�e + * \param db objet base de donnee * \param deliveryid id object - * \param modele force le modele � utiliser ('' to not force) + * \param modele force le modele a utiliser ('' to not force) * \param outputlangs objet lang a utiliser pour traduction * \return int 0 si KO, 1 si OK */ @@ -169,7 +174,7 @@ function supplier_order_pdf_create($db, $comid, $modele,$outputlangs) $dir = DOL_DOCUMENT_ROOT."//includes/modules/supplier_order/pdf/"; - // Positionne modele sur le nom du modele de commande fournisseur � utiliser + // Positionne modele sur le nom du modele de commande fournisseur a utiliser if (! strlen($modele)) { if (defined("COMMANDE_SUPPLIER_ADDON_PDF") && COMMANDE_SUPPLIER_ADDON_PDF) diff --git a/mysql/migration/2.6.0-2.7.0.sql b/mysql/migration/2.6.0-2.7.0.sql index 7a15cdf391a..7fb1a6338cc 100644 --- a/mysql/migration/2.6.0-2.7.0.sql +++ b/mysql/migration/2.6.0-2.7.0.sql @@ -25,6 +25,8 @@ ALTER TABLE llx_mailing ADD COLUMN entity integer DEFAULT 1 NOT NULL AFTER titre ALTER TABLE llx_categorie ADD COLUMN entity integer DEFAULT 1 NOT NULL AFTER label; ALTER TABLE llx_propal ADD COLUMN entity integer DEFAULT 1 NOT NULL AFTER ref; ALTER TABLE llx_commande ADD COLUMN entity integer DEFAULT 1 NOT NULL AFTER ref; +ALTER TABLE llx_commande_fournisseur ADD COLUMN entity integer DEFAULT 1 NOT NULL AFTER ref; +ALTER TABLE llx_product_fournisseur ADD COLUMN entity integer DEFAULT 1 NOT NULL AFTER ref_fourn; ALTER TABLE llx_rights_def DROP PRIMARY KEY; ALTER TABLE llx_user_param DROP INDEX fk_user; @@ -38,6 +40,9 @@ ALTER TABLE llx_menu DROP INDEX idx_menu_uk_menu; ALTER TABLE llx_categorie DROP INDEX uk_categorie_ref; ALTER TABLE llx_propal DROP INDEX ref; ALTER TABLE llx_commande DROP INDEX ref; +ALTER TABLE llx_commande_fournisseur DROP INDEX uk_commande_fournisseur_ref; +ALTER TABLE llx_product_fournisseur DROP INDEX fk_product; +ALTER TABLE llx_product_fournisseur DROP INDEX fk_soc; ALTER TABLE llx_rights_def ADD PRIMARY KEY (id, entity); ALTER TABLE llx_user_param ADD UNIQUE INDEX uk_user_param (fk_user,param,entity); @@ -50,4 +55,8 @@ ALTER TABLE llx_document_model ADD UNIQUE INDEX uk_document_model (nom, type, en ALTER TABLE llx_menu ADD UNIQUE INDEX idx_menu_uk_menu (menu_handler, fk_menu, url, entity); ALTER TABLE llx_categorie ADD UNIQUE INDEX uk_categorie_ref (label, type, entity); ALTER TABLE llx_propal ADD UNIQUE INDEX uk_propal_ref (ref, entity); -ALTER TABLE llx_commande ADD UNIQUE INDEX uk_commande_ref (ref, entity); \ No newline at end of file +ALTER TABLE llx_commande ADD UNIQUE INDEX uk_commande_ref (ref, entity); +ALTER TABLE llx_commande_fournisseur ADD UNIQUE INDEX uk_commande_fournisseur_ref (ref, fk_soc, entity); +ALTER TABLE llx_product_fournisseur ADD UNIQUE INDEX uk_product_fournisseur_ref (ref_fourn, fk_soc, entity); +ALTER TABLE llx_product_fournisseur ADD INDEX idx_product_fourn_fk_product (fk_product, entity); +ALTER TABLE llx_product_fournisseur ADD INDEX idx_product_fourn_fk_soc (fk_soc, entity); \ No newline at end of file diff --git a/mysql/tables/llx_commande_fournisseur.key.sql b/mysql/tables/llx_commande_fournisseur.key.sql index 8e77fc083ac..7958b56f354 100644 --- a/mysql/tables/llx_commande_fournisseur.key.sql +++ b/mysql/tables/llx_commande_fournisseur.key.sql @@ -1,5 +1,6 @@ -- ============================================================================ -- Copyright (C) 2006-2007 Laurent Destailleur +-- Copyright (C) 2009 Regis Houssin -- -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by @@ -22,7 +23,7 @@ -- Supprimme orphelins pour permettre montée de la clé -- V4 DELETE llx_commande_fournisseur FROM llx_commande_fournisseur LEFT JOIN llx_societe ON llx_commande_fournisseur.fk_soc = llx_societe.rowid WHERE llx_societe.rowid IS NULL; -ALTER TABLE llx_commande_fournisseur ADD UNIQUE INDEX uk_commande_fournisseur_ref (ref, fk_soc); +ALTER TABLE llx_commande_fournisseur ADD UNIQUE INDEX uk_commande_fournisseur_ref (ref, fk_soc, entity); ALTER TABLE llx_commande_fournisseur ADD INDEX idx_commande_fournisseur_fk_soc (fk_soc); ALTER TABLE llx_commande_fournisseur ADD CONSTRAINT fk_commande_fournisseur_fk_soc FOREIGN KEY (fk_soc) REFERENCES llx_societe (rowid); diff --git a/mysql/tables/llx_commande_fournisseur.sql b/mysql/tables/llx_commande_fournisseur.sql index 78caea5285e..422ce2fef1a 100644 --- a/mysql/tables/llx_commande_fournisseur.sql +++ b/mysql/tables/llx_commande_fournisseur.sql @@ -24,16 +24,17 @@ create table llx_commande_fournisseur rowid integer AUTO_INCREMENT PRIMARY KEY, tms timestamp, fk_soc integer NOT NULL, - fk_projet integer DEFAULT 0, -- projet auquel est rattache la commande - ref varchar(30) NOT NULL, -- order number + fk_projet integer DEFAULT 0, -- projet auquel est rattache la commande + ref varchar(30) NOT NULL, -- order number + entity integer DEFAULT 1 NOT NULL, -- multi company id - date_creation datetime, -- date de creation - date_valid datetime, -- date de validation - date_cloture datetime, -- date de cloture - date_commande date, -- date de la commande - fk_user_author integer, -- createur de la commande - fk_user_valid integer, -- valideur de la commande - fk_user_cloture integer, -- auteur cloture + date_creation datetime, -- date de creation + date_valid datetime, -- date de validation + date_cloture datetime, -- date de cloture + date_commande date, -- date de la commande + fk_user_author integer, -- createur de la commande + fk_user_valid integer, -- valideur de la commande + fk_user_cloture integer, -- auteur cloture source smallint NOT NULL, fk_statut smallint default 0, amount_ht real default 0, @@ -48,3 +49,11 @@ create table llx_commande_fournisseur fk_methode_commande integer default 0 )type=innodb; + +-- +-- List of codes for the field entity +-- +-- 1 : first company order +-- 2 : second company order +-- 3 : etc... +-- \ No newline at end of file diff --git a/mysql/tables/llx_product.key.sql b/mysql/tables/llx_product.key.sql index 3d34ef226a7..7e9a3ffc3f4 100644 --- a/mysql/tables/llx_product.key.sql +++ b/mysql/tables/llx_product.key.sql @@ -22,5 +22,6 @@ ALTER TABLE llx_product ADD UNIQUE uk_product_ref (ref, entity); + ALTER TABLE llx_product ADD INDEX idx_product_barcode (barcode); ALTER TABLE llx_product ADD INDEX idx_product_import_key (import_key); diff --git a/mysql/tables/llx_product_fournisseur.key.sql b/mysql/tables/llx_product_fournisseur.key.sql index 036736938b9..4acae941f90 100644 --- a/mysql/tables/llx_product_fournisseur.key.sql +++ b/mysql/tables/llx_product_fournisseur.key.sql @@ -1,6 +1,7 @@ -- ============================================================================ -- Copyright (C) 2002-2004 Rodolphe Quiedeville -- Copyright (C) 2004-2005 Laurent Destailleur +-- Copyright (C) 2005-2009 Regis Houssin -- -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by @@ -20,6 +21,7 @@ -- ============================================================================ -ALTER TABLE llx_product_fournisseur ADD INDEX idx_product_fourn_fk_product (fk_product); +ALTER TABLE llx_product_fournisseur ADD UNIQUE INDEX uk_product_fournisseur_ref (ref_fourn, fk_soc, entity); -ALTER TABLE llx_product_fournisseur ADD INDEX idx_product_fourn_fk_soc (fk_soc); +ALTER TABLE llx_product_fournisseur ADD INDEX idx_product_fourn_fk_product (fk_product, entity); +ALTER TABLE llx_product_fournisseur ADD INDEX idx_product_fourn_fk_soc (fk_soc, entity); diff --git a/mysql/tables/llx_product_fournisseur.sql b/mysql/tables/llx_product_fournisseur.sql index 2cdbeefe174..479d6cc3eb9 100644 --- a/mysql/tables/llx_product_fournisseur.sql +++ b/mysql/tables/llx_product_fournisseur.sql @@ -1,6 +1,7 @@ -- ============================================================================ -- Copyright (C) 2003 Rodolphe Quiedeville -- Copyright (C) 2009 Laurent Destailleur +-- Copyright (C) 2009 Regis Houssin -- -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by @@ -27,6 +28,14 @@ create table llx_product_fournisseur fk_product integer, fk_soc integer, ref_fourn varchar(30), + entity integer DEFAULT 1 NOT NULL, -- multi company id fk_user_author integer )type=innodb; +-- +-- List of codes for the field entity +-- +-- 1 : first company product +-- 2 : second company product +-- 3 : etc... +-- \ No newline at end of file