New: early development of multi-company module

This commit is contained in:
Regis Houssin 2009-04-30 09:37:55 +00:00
parent 432632a6e9
commit d4f8716a89
13 changed files with 245 additions and 124 deletions

View File

@ -2,6 +2,7 @@
/* Copyright (C) 2002-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2002-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2007 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2007 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com> * Copyright (C) 2005 Marc Barilley / Ocebo <marc@ocebo.com>
* Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr>
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@ -42,12 +43,12 @@ class PaiementFourn
var $amount; var $amount;
var $total; var $total;
var $author; var $author;
var $paiementid; // Type de paiement. Stock� dans fk_paiement var $paiementid; // Type de paiement. Stocke dans fk_paiement
// de llx_paiement qui est li� aux types de // de llx_paiement qui est lie aux types de
//paiement de llx_c_paiement //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_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 $note;
var $statut; //Status of payment. 0 = unvalidated; 1 = validated var $statut; //Status of payment. 0 = unvalidated; 1 = validated
// fk_paiement dans llx_paiement est l'id du type de paiement (7 pour CHQ, ...) // 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 * \brief Constructeur de la classe
* \param DB handler acc�s base de donn�es * \param DB handler acces base de donnees
*/ */
function PaiementFourn($DB) 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 * \brief Supprime un paiement ainsi que les lignes qu'il a genere dans comptes
* Si le paiement porte sur un �criture compte qui est rapproch�e, on refuse * Si le paiement porte sur un ecriture compte qui est rapprochee, on refuse
* Si le paiement porte sur au moins une facture � "pay�e", on refuse * Si le paiement porte sur au moins une facture a "payee", on refuse
* \return int <0 si ko, >0 si ok * \return int <0 si ko, >0 si ok
*/ */
function delete() function delete()
@ -221,14 +222,14 @@ class PaiementFourn
$this->db->begin(); $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 // Si c'est le cas, on refuse la suppression
$billsarray=$this->getBillsArray('paye=1'); $billsarray=$this->getBillsArray('paye=1');
if (is_array($billsarray)) if (is_array($billsarray))
{ {
if (sizeof($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(); $this->db->rollback();
return -1; return -1;
} }
@ -239,7 +240,7 @@ class PaiementFourn
return -2; 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 // Si c'est le cas, on refuse le delete
if ($bank_line_id) if ($bank_line_id)
{ {
@ -247,7 +248,7 @@ class PaiementFourn
$accline->fetch($bank_line_id); $accline->fetch($bank_line_id);
if ($accline->rappro) 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(); $this->db->rollback();
return -3; return -3;
} }
@ -269,7 +270,7 @@ class PaiementFourn
return -3; return -3;
} }
// Supprimer l'�criture bancaire si paiement li� � �criture // Supprimer l'ecriture bancaire si paiement lie a ecriture
if ($bank_line_id) if ($bank_line_id)
{ {
$accline = new AccountLine($this->db); $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 * \param id_bank Id compte bancaire
*/ */
function update_fk_bank($id_bank) 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) * \brief Retourne le libelle du statut d'une facture (brouillon, validee, abandonnee, payee)
* \param mode 0=libell� long, 1=libell� court, 2=Picto + Libell� court, 3=Picto, 4=Picto + Libell� long, 5=Libell� court + Picto * \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 * \return string Libelle
*/ */
function getLibStatut($mode=0) 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 status Statut
* \param mode 0=libell� long, 1=libell� court, 2=Picto + Libell� court, 3=Picto, 4=Picto + Libell� long, 5=Libell� court + Picto * \param mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto
* \return string Libell� du statut * \return string Libelle du statut
*/ */
function LibStatut($status,$mode=0) function LibStatut($status,$mode=0)
{ {
@ -485,7 +486,7 @@ class PaiementFourn
$text=$this->ref; // Sometimes ref contains label $text=$this->ref; // Sometimes ref contains label
if (eregi('^\((.*)\)$',$text,$reg)) 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'; if ($reg[1]=='paiement') $reg[1]='Payment';
$text=$langs->trans($reg[1]); $text=$langs->trans($reg[1]);
} }
@ -505,7 +506,9 @@ class PaiementFourn
{ {
if(!empty($num) && $this->statut!=1) 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); dol_syslog("PaiementFourn::update_num sql=".$sql);
$result = $this->db->query($sql); $result = $this->db->query($sql);
@ -532,7 +535,10 @@ class PaiementFourn
{ {
if(!empty($date) && $this->statut!=1) 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); dol_syslog("PaiementFourn::update_date sql=".$sql);
$result = $this->db->query($sql); $result = $this->db->query($sql);
if ($result) if ($result)

View File

@ -82,13 +82,14 @@ class CommandeFournisseur extends Commande
global $conf; 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 = "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.= " ".$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.= " c.note, c.note_public, c.model_pdf,";
$sql .= " cm.libelle as methode_commande"; $sql.= " cm.libelle as methode_commande";
$sql .= " FROM ".MAIN_DB_PREFIX."commande_fournisseur as c"; $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.= " 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."'"; $sql.= " WHERE c.entity = ".$conf->entity;
else $sql.= " WHERE c.rowid=".$id; if ($ref) $sql.= " AND c.ref='".$ref."'";
else $sql.= " AND c.rowid=".$id;
dol_syslog("CommandeFournisseur::fetch sql=".$sql,LOG_DEBUG); dol_syslog("CommandeFournisseur::fetch sql=".$sql,LOG_DEBUG);
$resql = $this->db->query($sql) ; $resql = $this->db->query($sql) ;
@ -255,8 +256,8 @@ class CommandeFournisseur extends Commande
} }
$sql = 'UPDATE '.MAIN_DB_PREFIX."commande_fournisseur"; $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.= " 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.= " WHERE rowid = ".$this->id." AND fk_statut = 0";
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
if ($resql) if ($resql)
@ -364,8 +365,8 @@ class CommandeFournisseur extends Commande
/** /**
* \brief Retourne le libell<EFBFBD> du statut d'une commande (brouillon, valid<EFBFBD>e, abandonn<EFBFBD>e, pay<EFBFBD>e * \brief Retourne le libelle du statut d'une commande (brouillon, validee, abandonnee, payee
* \param mode 0=libell<EFBFBD> long, 1=libell<EFBFBD> court, 2=Picto + Libell<EFBFBD> court, 3=Picto, 4=Picto + Libell<EFBFBD> long * \param mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long
* \return string Libelle * \return string Libelle
*/ */
function getLibStatut($mode=0) function getLibStatut($mode=0)
@ -374,10 +375,10 @@ class CommandeFournisseur extends Commande
} }
/** /**
* \brief Renvoi le libell<EFBFBD> d'un statut donn<EFBFBD> * \brief Renvoi le libelle d'un statut donne
* \param statut Id statut * \param statut Id statut
* \param mode 0=libell<EFBFBD> long, 1=libell<EFBFBD> court, 2=Picto + Libell<EFBFBD> court, 3=Picto, 4=Picto + Libell<EFBFBD> long, 5=Libell<EFBFBD> court + Picto * \param mode 0=libelle long, 1=libelle court, 2=Picto + Libelle court, 3=Picto, 4=Picto + Libelle long, 5=Libelle court + Picto
* \return string Libell<EFBFBD> du statut * \return string Libelle du statut
*/ */
function LibStatut($statut,$mode=0) function LibStatut($statut,$mode=0)
{ {
@ -705,8 +706,26 @@ class CommandeFournisseur extends Commande
/* On positionne en mode brouillon la commande */ /* On positionne en mode brouillon la commande */
$this->brouillon = 1; $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 = "INSERT INTO ".MAIN_DB_PREFIX."commande_fournisseur (";
$sql .= " VALUES ('',".$this->socid.", ".$this->db->idate(mktime()).", ".$user->id.",0,0,'".$conf->global->COMMANDE_SUPPLIER_ADDON_PDF."')"; $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); dol_syslog("CommandeFournisseur::Create sql=".$sql);
if ( $this->db->query($sql) ) if ( $this->db->query($sql) )
@ -940,7 +959,7 @@ class CommandeFournisseur extends Commande
{ {
$error = -1; $error = -1;
} }
// Si module stock g<EFBFBD>r<EFBFBD> et que expedition faite depuis un entrepot // Si module stock gere et que expedition faite depuis un entrepot
if (!$error && $conf->stock->enabled && $entrepot) if (!$error && $conf->stock->enabled && $entrepot)
{ {
$mouv = new MouvementStock($this->db); $mouv = new MouvementStock($this->db);
@ -1059,8 +1078,9 @@ class CommandeFournisseur extends Commande
*/ */
function get_methodes_commande() function get_methodes_commande()
{ {
$sql = "SELECT rowid, libelle FROM ".MAIN_DB_PREFIX."c_methode_commande_fournisseur"; $sql = "SELECT rowid, libelle";
$sql .= " WHERE active = 1"; $sql.= " FROM ".MAIN_DB_PREFIX."c_methode_commande_fournisseur";
$sql.= " WHERE active = 1";
if ($this->db->query($sql)) if ($this->db->query($sql))
{ {
@ -1109,7 +1129,7 @@ class CommandeFournisseur extends Commande
$sql = "UPDATE ".MAIN_DB_PREFIX."commande_fournisseur"; $sql = "UPDATE ".MAIN_DB_PREFIX."commande_fournisseur";
$sql.= " SET fk_statut = ".$statut; $sql.= " SET fk_statut = ".$statut;
$sql.= " WHERE rowid = ".$this->id; $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); dol_syslog("CommandeFournisseur::Livraison sql=".$sql);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
@ -1141,9 +1161,9 @@ class CommandeFournisseur extends Commande
return $result ; return $result ;
} }
/** \brief Cr<EFBFBD><EFBFBD> la commande depuis une propale existante /** \brief Cree la commande depuis une propale existante
\param user Utilisateur qui cr<EFBFBD>e \param user Utilisateur qui cree
\param propale_id id de la propale qui sert de mod<EFBFBD>le \param propale_id id de la propale qui sert de modele
*/ */
function updateFromCommandeClient($user, $idc, $comclientid) function updateFromCommandeClient($user, $idc, $comclientid)
{ {
@ -1219,13 +1239,16 @@ class CommandeFournisseur extends Commande
*/ */
function ReadApprobators() function ReadApprobators()
{ {
global $conf;
$this->approbs = array(); $this->approbs = array();
$sql = "SELECT u.name, u.firstname, u.email"; $sql = "SELECT u.name, u.firstname, u.email";
$sql .= " FROM ".MAIN_DB_PREFIX."user as u"; $sql.= " FROM ".MAIN_DB_PREFIX."user as u";
$sql .= " , ".MAIN_DB_PREFIX."user_rights as ur"; $sql.= " , ".MAIN_DB_PREFIX."user_rights as ur";
$sql .= " WHERE u.rowid = ur.fk_user"; $sql.= " WHERE u.rowid = ur.fk_user";
$sql .= " AND ur.fk_id = 184"; $sql.= " AND u.entity = ".$conf->entity;
$sql.= " AND ur.fk_id = 184";
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) if ($resql)
@ -1345,18 +1368,24 @@ class CommandeFournisseur extends Commande
/** /**
* \brief Initialise la commande avec valeurs fictives al<EFBFBD>atoire * \brief Initialise la commande avec valeurs fictives aleatoire
* Sert <EFBFBD> g<EFBFBD>n<EFBFBD>rer une commande pour l'aperu des mod<EFBFBD>les ou demo * Sert a generer une commande pour l'aperu des modeles ou demo
*/ */
function initAsSpecimen() function initAsSpecimen()
{ {
global $user,$langs; global $user,$langs,$conf;
dol_syslog("CommandeFournisseur::initAsSpecimen"); dol_syslog("CommandeFournisseur::initAsSpecimen");
// Charge tableau des id de soci<EFBFBD>t<EFBFBD> socids // Charge tableau des id de societe socids
$socids = array(); $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); $resql = $this->db->query($sql);
if ($resql) if ($resql)
{ {
@ -1373,7 +1402,12 @@ class CommandeFournisseur extends Commande
// Charge tableau des produits prodids // Charge tableau des produits prodids
$prodids = array(); $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); $resql = $this->db->query($sql);
if ($resql) if ($resql)
{ {
@ -1387,7 +1421,7 @@ class CommandeFournisseur extends Commande
} }
} }
// Initialise param<EFBFBD>tres // Initialise parametres
$this->id=0; $this->id=0;
$this->ref = 'SPECIMEN'; $this->ref = 'SPECIMEN';
$this->specimen=1; $this->specimen=1;

View File

@ -107,7 +107,7 @@ class FactureFournisseur extends Facture
*/ */
function create($user) function create($user)
{ {
global $langs; global $langs,$conf;
// Clear parameters // Clear parameters
if (empty($this->date)) $this->date=gmmktime(); if (empty($this->date)) $this->date=gmmktime();
@ -122,13 +122,29 @@ class FactureFournisseur extends Facture
if (! $remise) $remise = 0 ; if (! $remise) $remise = 0 ;
$totalht = ($amount - $remise); $totalht = ($amount - $remise);
$sql = 'INSERT INTO '.MAIN_DB_PREFIX.'facture_fourn (facnumber, libelle, fk_soc, datec, datef,'; $sql = "INSERT INTO ".MAIN_DB_PREFIX."facture_fourn (";
$sql.= ' note, note_public, fk_user_author, date_lim_reglement) '; $sql.= "facnumber";
$sql.= " VALUES ('".addslashes($number)."','".addslashes($this->libelle)."',"; $sql.= ", entity";
$sql.= " ".$this->socid.", ".$this->db->idate(gmmktime()).",'".$this->db->idate($this->date)."',"; $sql.= ", libelle";
$sql.= " '".addslashes($this->note)."',"; $sql.= ", fk_soc";
$sql.= " '".addslashes($this->note_public)."',"; $sql.= ", datec";
$sql.= " ".$user->id.",'".$this->db->idate($this->date_echeance)."');"; $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); dol_syslog("FactureFournisseur::create sql=".$sql, LOG_DEBUG);
$resql=$this->db->query($sql); $resql=$this->db->query($sql);
@ -377,8 +393,8 @@ class FactureFournisseur extends Facture
/** /**
* \brief Tag la facture comme pay<EFBFBD>e compl<EFBFBD>tement * \brief Tag la facture comme payee completement
* \param user Objet utilisateur qui modifie l'<EFBFBD>tat * \param user Objet utilisateur qui modifie l'etat
* \return int <0 si ko, >0 si ok * \return int <0 si ko, >0 si ok
*/ */
function set_payed($user) function set_payed($user)
@ -386,6 +402,7 @@ class FactureFournisseur extends Facture
$sql = 'UPDATE '.MAIN_DB_PREFIX.'facture_fourn'; $sql = 'UPDATE '.MAIN_DB_PREFIX.'facture_fourn';
$sql.= ' SET paye = 1'; $sql.= ' SET paye = 1';
$sql.= ' WHERE rowid = '.$this->id; $sql.= ' WHERE rowid = '.$this->id;
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if (! $resql) if (! $resql)
{ {
@ -660,7 +677,7 @@ class FactureFournisseur extends Facture
$this->user_validation = $vuser; $this->user_validation = $vuser;
} }
$this->date_creation = $obj->datec; $this->date_creation = $obj->datec;
//$this->date_validation = $obj->datev; \todo La date de validation n'est pas encore g<EFBFBD>r<EFBFBD>e //$this->date_validation = $obj->datev; \todo La date de validation n'est pas encore geree
} }
$this->db->free($result); $this->db->free($result);
} }
@ -685,12 +702,10 @@ class FactureFournisseur extends Facture
$this->nbtodo=$this->nbtodolate=0; $this->nbtodo=$this->nbtodolate=0;
$sql = 'SELECT ff.rowid, ff.date_lim_reglement as datefin'; $sql = 'SELECT ff.rowid, ff.date_lim_reglement as datefin';
$sql.= ' FROM '.MAIN_DB_PREFIX.'facture_fourn as ff'; $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"; if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
$sql.= ' WHERE ff.paye=0'; $sql.= ' WHERE ff.paye=0';
$sql.= ' AND ff.fk_statut > 0'; $sql.= ' AND ff.fk_statut > 0';
$sql.= " AND ff.fk_soc = s.rowid"; $sql.= " AND ff.entity = ".$conf->entity;
$sql.= " AND s.entity = ".$conf->entity;
if ($user->societe_id) $sql.=' AND ff.fk_soc = '.$user->societe_id; 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; 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<EFBFBD>atoire * \brief Initialise la facture avec valeurs fictives aleatoire
* Sert <EFBFBD> g<EFBFBD>n<EFBFBD>rer une facture pour l'aperu des mod<EFBFBD>les ou demo * Sert a generer une facture pour l'aperu des modeles ou demo
*/ */
function initAsSpecimen() function initAsSpecimen()
{ {
global $user,$langs; global $user,$langs,$conf;
// Charge tableau des id de societe socids // Charge tableau des id de societe socids
$socids = array(); $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); $resql = $this->db->query($sql);
if ($resql) if ($resql)
{ {
@ -765,7 +786,12 @@ class FactureFournisseur extends Facture
// Charge tableau des produits prodids // Charge tableau des produits prodids
$prodids = array(); $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); $resql = $this->db->query($sql);
if ($resql) if ($resql)
{ {

View File

@ -1,6 +1,7 @@
<?php <?php
/* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2006 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2006 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2009 Regis Houssin <regis@dolibarr.fr>
* *
* This program is free software; you can redistribute it and/or modify * 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 * 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) function remove_product_fournisseur_price($rowid)
{ {
global $conf;
$this->db->begin(); $this->db->begin();
$sql = "DELETE FROM ".MAIN_DB_PREFIX."product_fournisseur_price"; $sql = "DELETE FROM ".MAIN_DB_PREFIX."product_fournisseur_price";
$sql.= " WHERE rowid = ".$rowid; $sql.= " WHERE rowid = ".$rowid;
dol_syslog("ProductFournisseur::remove_product_fournisseur_price sql=".$sql); dol_syslog("ProductFournisseur::remove_product_fournisseur_price sql=".$sql);
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) if ($resql)
@ -157,6 +161,8 @@ class ProductFournisseur extends Product
$sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur as pf"; $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.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON pfp.fk_product_fournisseur = pf.rowid";
$sql.= " WHERE pfp.rowid IS NULL"; $sql.= " WHERE pfp.rowid IS NULL";
$sql.= " AND pf.entity = ".$conf->entity;
dol_syslog("ProductFournisseur::remove_product_fournisseur_price sql=".$sql); dol_syslog("ProductFournisseur::remove_product_fournisseur_price sql=".$sql);
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) if ($resql)
@ -169,6 +175,7 @@ class ProductFournisseur extends Product
$sql = "DELETE FROM ".MAIN_DB_PREFIX."product_fournisseur"; $sql = "DELETE FROM ".MAIN_DB_PREFIX."product_fournisseur";
$sql.= " WHERE rowid = ".$rowidpf; $sql.= " WHERE rowid = ".$rowidpf;
dol_syslog("ProductFournisseur::remove_product_fournisseur_price sql=".$sql); dol_syslog("ProductFournisseur::remove_product_fournisseur_price sql=".$sql);
$resql2 = $this->db->query($sql); $resql2 = $this->db->query($sql);
if (! $resql2) if (! $resql2)
@ -331,13 +338,16 @@ class ProductFournisseur extends Product
*/ */
function UpdateBuyPriceByFournRef($id_fourn, $product_fourn_ref, $qty, $buyprice, $user, $price_base_type='HT') function UpdateBuyPriceByFournRef($id_fourn, $product_fourn_ref, $qty, $buyprice, $user, $price_base_type='HT')
{ {
global $conf;
$result=0; $result=0;
// Recherche id produit pour cette ref et fournisseur // Recherche id produit pour cette ref et fournisseur
$sql = "SELECT fk_product"; $sql = "SELECT fk_product";
$sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur"; $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur";
$sql.= " WHERE fk_soc ='".$id_fourn."'"; $sql.= " WHERE fk_soc = '".$id_fourn."'";
$sql.= " AND ref_fourn='".$product_fourn_ref."'"; $sql.= " AND ref_fourn = '".$product_fourn_ref."'";
$sql.= " AND entity = ".$conf->entity;
if ($this->db->query($sql)) if ($this->db->query($sql))
{ {
@ -360,10 +370,13 @@ class ProductFournisseur extends Product
*/ */
function fetch_fourn_data($fournid) function fetch_fourn_data($fournid)
{ {
global $conf;
$sql = "SELECT rowid, ref_fourn"; $sql = "SELECT rowid, ref_fourn";
$sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur "; $sql.= " FROM ".MAIN_DB_PREFIX."product_fournisseur ";
$sql.= " WHERE fk_product = ".$this->id; $sql.= " WHERE fk_product = ".$this->id;
$sql.= " AND fk_soc = ".$fournid; $sql.= " AND fk_soc = ".$fournid;
$sql.= " AND entity = ".$conf->entity;
dol_syslog("Product::fetch_fourn_data sql=".$sql); dol_syslog("Product::fetch_fourn_data sql=".$sql);
$result = $this->db->query($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 = "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.= ", 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.= " FROM ".MAIN_DB_PREFIX."product_fournisseur_price as pfp";
$sql.= " WHERE pfp.rowid = ".$rowid." AND pf.rowid = pfp.fk_product_fournisseur"; $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); dol_syslog("Product::fetch_product_fournisseur_price sql=".$sql, LOG_DEBUG);
$resql = $this->db->query($sql) ; $resql = $this->db->query($sql) ;

View File

@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2005-2008 Laurent Destailleur <eldy@users.sourceforge.net> /* Copyright (C) 2005-2008 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2006 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr>
* *
* This program is free software; you can redistribute it and/or modify * 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 * 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 * \file htdocs/includes/modules/supplier_order/mod_commande_fournisseur_muguet.php
* \ingroup commande * \ingroup commande
* \brief Fichier contenant la classe du mod<EFBFBD>le de num<EFBFBD>rotation de r<EFBFBD>f<EFBFBD>rence de commande fournisseur Muguet * \brief Fichier contenant la classe du modele de numerotation de reference de commande fournisseur Muguet
* \version $Id$ * \version $Id$
*/ */
@ -29,7 +29,7 @@ require_once(DOL_DOCUMENT_ROOT ."/includes/modules/supplier_order/modules_comman
/** \class mod_commande_fournisseur_muguet /** \class mod_commande_fournisseur_muguet
\brief Classe du mod<EFBFBD>le de num<EFBFBD>rotation de r<EFBFBD>f<EFBFBD>rence de commande fournisseur Muguet \brief Classe du modele de numerotation de reference de commande fournisseur Muguet
*/ */
class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders
{ {
@ -63,10 +63,13 @@ class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders
*/ */
function canBeActivated() function canBeActivated()
{ {
global $conf;
$coyymm=''; $coyymm='';
$sql = "SELECT MAX(ref)"; $sql = "SELECT MAX(ref)";
$sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur"; $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur";
$sql.= " WHERE entity = ".$conf->entity;
$resql=$db->query($sql); $resql=$db->query($sql);
if ($resql) if ($resql)
{ {
@ -91,13 +94,14 @@ class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders
*/ */
function getNextValue($objsoc=0,$object='') function getNextValue($objsoc=0,$object='')
{ {
global $db; global $db,$conf;
// D'abord on recupere la valeur max (reponse immediate car champ indexe) // D'abord on recupere la valeur max (reponse immediate car champ indexe)
$posindice=8; $posindice=8;
$sql = "SELECT MAX(0+SUBSTRING(ref,".$posindice.")) as max"; $sql = "SELECT MAX(0+SUBSTRING(ref,".$posindice.")) as max";
$sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur"; $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur";
$sql.= " WHERE ref like '".$this->prefix."%'"; $sql.= " WHERE ref like '".$this->prefix."%'";
$sql.= " AND entity = ".$conf->entity;
$resql=$db->query($sql); $resql=$db->query($sql);
if ($resql) if ($resql)
@ -116,7 +120,7 @@ class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders
} }
/** \brief Renvoie la r<EFBFBD>f<EFBFBD>rence de commande suivante non utilis<EFBFBD>e /** \brief Renvoie la reference de commande suivante non utilisee
* \param objsoc Object third party * \param objsoc Object third party
* \param object Object * \param object Object
* \return string Texte descripif * \return string Texte descripif

View File

@ -1,7 +1,7 @@
<?php <?php
/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2007 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr>
* *
* This program is free software; you can redistribute it and/or modify * 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 * 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 \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 class mod_commande_fournisseur_orchidee extends ModeleNumRefSuppliersOrders
{ {
@ -40,7 +40,7 @@ class mod_commande_fournisseur_orchidee extends ModeleNumRefSuppliersOrders
var $nom = 'Orchidee'; var $nom = 'Orchidee';
/** \brief Renvoi la description du modele de numérotation /** \brief Renvoi la description du modele de numerotation
* \return string Texte descripif * \return string Texte descripif
*/ */
function info() function info()
@ -78,7 +78,7 @@ class mod_commande_fournisseur_orchidee extends ModeleNumRefSuppliersOrders
return $texte; return $texte;
} }
/** \brief Renvoi un exemple de numérotation /** \brief Renvoi un exemple de numerotation
* \return string Example * \return string Example
*/ */
function getExample() 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 /** \brief Renvoie la référence de commande suivante non utilisee
* \param objsoc Objet société * \param objsoc Objet societe
* \param commande Objet commande * \param commande Objet commande
* \return string Texte descripif * \return string Texte descripif
*/ */

View File

@ -2,6 +2,7 @@
/* Copyright (C) 2003-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2005 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2005 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com> * Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com>
* Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr> * Copyright (C) 2006 Andre Cianfarani <acianfa@free.fr>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -41,7 +42,7 @@ class ModelePDFSuppliersOrders extends FPDF
var $error=''; var $error='';
/** /**
\brief Renvoi le dernier message d'erreur de cr<EFBFBD>ation de PDF de commande \brief Renvoi le dernier message d'erreur de creation de PDF de commande
*/ */
function pdferror() function pdferror()
{ {
@ -49,15 +50,19 @@ class ModelePDFSuppliersOrders extends FPDF
} }
/** /**
* \brief Renvoi la liste des mod<EFBFBD>les actifs * \brief Renvoi la liste des modeles actifs
*/ */
function liste_modeles($db) function liste_modeles($db)
{ {
global $conf;
$type='supplier_order'; $type='supplier_order';
$liste=array(); $liste=array();
$sql ="SELECT nom as id, nom as lib";
$sql.=" FROM ".MAIN_DB_PREFIX."document_model"; $sql = "SELECT nom as id, nom as lib";
$sql.=" WHERE type = '".$type."'"; $sql.= " FROM ".MAIN_DB_PREFIX."document_model";
$sql.= " WHERE type = '".$type."'";
$sql.= " AND entity = ".$conf->entity;
$resql = $db->query($sql); $resql = $db->query($sql);
if ($resql) if ($resql)
@ -85,7 +90,7 @@ class ModelePDFSuppliersOrders extends FPDF
/** /**
\class ModeleNumRefSuppliersOrders \class ModeleNumRefSuppliersOrders
\brief Classe m<EFBFBD>re des mod<EFBFBD>les de num<EFBFBD>rotation des r<EFBFBD>f<EFBFBD>rences de commandes fournisseurs \brief Classe mere des modeles de numerotation des references de commandes fournisseurs
*/ */
class ModeleNumRefSuppliersOrders class ModeleNumRefSuppliersOrders
@ -100,7 +105,7 @@ class ModeleNumRefSuppliersOrders
return true; return true;
} }
/** \brief Renvoi la description par defaut du modele de num<EFBFBD>rotation /** \brief Renvoi la description par defaut du modele de numerotation
* \return string Texte descripif * \return string Texte descripif
*/ */
function info() function info()
@ -120,8 +125,8 @@ class ModeleNumRefSuppliersOrders
return $langs->trans("NoExample"); return $langs->trans("NoExample");
} }
/** \brief Test si les num<EFBFBD>ros d<EFBFBD>j<EFBFBD> en vigueur dans la base ne provoquent pas de /** \brief Test si les numeros deja en vigueur dans la base ne provoquent pas de
* de conflits qui empechera cette num<EFBFBD>rotation de fonctionner. * de conflits qui empechera cette numerotation de fonctionner.
* \return boolean false si conflit, true si ok * \return boolean false si conflit, true si ok
*/ */
function canBeActivated() function canBeActivated()
@ -129,7 +134,7 @@ class ModeleNumRefSuppliersOrders
return true; return true;
} }
/** \brief Renvoi prochaine valeur attribu<EFBFBD>e /** \brief Renvoi prochaine valeur attribuee
* \return string Valeur * \return string Valeur
*/ */
function getNextValue() function getNextValue()
@ -156,9 +161,9 @@ class ModeleNumRefSuppliersOrders
/** /**
* \brief Create object on disk * \brief Create object on disk
* \param db objet base de donn<EFBFBD>e * \param db objet base de donnee
* \param deliveryid id object * \param deliveryid id object
* \param modele force le modele <EFBFBD> utiliser ('' to not force) * \param modele force le modele a utiliser ('' to not force)
* \param outputlangs objet lang a utiliser pour traduction * \param outputlangs objet lang a utiliser pour traduction
* \return int 0 si KO, 1 si OK * \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/"; $dir = DOL_DOCUMENT_ROOT."//includes/modules/supplier_order/pdf/";
// Positionne modele sur le nom du modele de commande fournisseur <EFBFBD> utiliser // Positionne modele sur le nom du modele de commande fournisseur a utiliser
if (! strlen($modele)) if (! strlen($modele))
{ {
if (defined("COMMANDE_SUPPLIER_ADDON_PDF") && COMMANDE_SUPPLIER_ADDON_PDF) if (defined("COMMANDE_SUPPLIER_ADDON_PDF") && COMMANDE_SUPPLIER_ADDON_PDF)

View File

@ -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_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_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 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_rights_def DROP PRIMARY KEY;
ALTER TABLE llx_user_param DROP INDEX fk_user; 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_categorie DROP INDEX uk_categorie_ref;
ALTER TABLE llx_propal DROP INDEX ref; ALTER TABLE llx_propal DROP INDEX ref;
ALTER TABLE llx_commande 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_rights_def ADD PRIMARY KEY (id, entity);
ALTER TABLE llx_user_param ADD UNIQUE INDEX uk_user_param (fk_user,param,entity); ALTER TABLE llx_user_param ADD UNIQUE INDEX uk_user_param (fk_user,param,entity);
@ -51,3 +56,7 @@ ALTER TABLE llx_menu ADD UNIQUE INDEX idx_menu_uk_menu (menu_handler, fk_menu, u
ALTER TABLE llx_categorie ADD UNIQUE INDEX uk_categorie_ref (label, type, 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_propal ADD UNIQUE INDEX uk_propal_ref (ref, entity);
ALTER TABLE llx_commande ADD UNIQUE INDEX uk_commande_ref (ref, entity); 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);

View File

@ -1,5 +1,6 @@
-- ============================================================================ -- ============================================================================
-- Copyright (C) 2006-2007 Laurent Destailleur <eldy@users.sourceforge.net> -- Copyright (C) 2006-2007 Laurent Destailleur <eldy@users.sourceforge.net>
-- Copyright (C) 2009 Regis Houssin <regis@dolibarr.fr>
-- --
-- This program is free software; you can redistribute it and/or modify -- 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 -- 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é -- 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; -- 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 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); ALTER TABLE llx_commande_fournisseur ADD CONSTRAINT fk_commande_fournisseur_fk_soc FOREIGN KEY (fk_soc) REFERENCES llx_societe (rowid);

View File

@ -26,6 +26,7 @@ create table llx_commande_fournisseur
fk_soc integer NOT NULL, fk_soc integer NOT NULL,
fk_projet integer DEFAULT 0, -- projet auquel est rattache la commande fk_projet integer DEFAULT 0, -- projet auquel est rattache la commande
ref varchar(30) NOT NULL, -- order number ref varchar(30) NOT NULL, -- order number
entity integer DEFAULT 1 NOT NULL, -- multi company id
date_creation datetime, -- date de creation date_creation datetime, -- date de creation
date_valid datetime, -- date de validation date_valid datetime, -- date de validation
@ -48,3 +49,11 @@ create table llx_commande_fournisseur
fk_methode_commande integer default 0 fk_methode_commande integer default 0
)type=innodb; )type=innodb;
--
-- List of codes for the field entity
--
-- 1 : first company order
-- 2 : second company order
-- 3 : etc...
--

View File

@ -22,5 +22,6 @@
ALTER TABLE llx_product ADD UNIQUE uk_product_ref (ref, entity); 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_barcode (barcode);
ALTER TABLE llx_product ADD INDEX idx_product_import_key (import_key); ALTER TABLE llx_product ADD INDEX idx_product_import_key (import_key);

View File

@ -1,6 +1,7 @@
-- ============================================================================ -- ============================================================================
-- Copyright (C) 2002-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> -- Copyright (C) 2002-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
-- Copyright (C) 2004-2005 Laurent Destailleur <eldy@users.sourceforge.net> -- Copyright (C) 2004-2005 Laurent Destailleur <eldy@users.sourceforge.net>
-- Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr>
-- --
-- This program is free software; you can redistribute it and/or modify -- 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 -- 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);

View File

@ -1,6 +1,7 @@
-- ============================================================================ -- ============================================================================
-- Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> -- Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
-- Copyright (C) 2009 Laurent Destailleur <eldy@users.sourceforge.net> -- Copyright (C) 2009 Laurent Destailleur <eldy@users.sourceforge.net>
-- Copyright (C) 2009 Regis Houssin <regis@dolibarr.fr>
-- --
-- This program is free software; you can redistribute it and/or modify -- 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 -- 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_product integer,
fk_soc integer, fk_soc integer,
ref_fourn varchar(30), ref_fourn varchar(30),
entity integer DEFAULT 1 NOT NULL, -- multi company id
fk_user_author integer fk_user_author integer
)type=innodb; )type=innodb;
--
-- List of codes for the field entity
--
-- 1 : first company product
-- 2 : second company product
-- 3 : etc...
--