New: early development of multi-company module

This commit is contained in:
Regis Houssin 2009-04-30 16:11:33 +00:00
parent 2b76feb5b5
commit 41a4036874
4 changed files with 88 additions and 49 deletions

View File

@ -1,6 +1,6 @@
<?php
/* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2005-2007 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or modify
@ -65,12 +65,15 @@ class mod_livraison_jade extends ModeleNumRefDeliveryOrder
*/
function getNextValue($objsoc=0,$livraison='')
{
global $db;
global $db,$conf;
// D'abord on r<EFBFBD>cup<EFBFBD>re la valeur max (r<>ponse imm<6D>diate car champ ind<6E>x<EFBFBD>)
// D'abord on recupere la valeur max (reponse immediate car champ indexe)
$blyy='';
$sql = "SELECT MAX(ref)";
$sql.= " FROM ".MAIN_DB_PREFIX."livraison";
$sql.= " WHERE entity = ".$conf->entity;
$resql=$db->query($sql);
if ($resql)
{
@ -78,14 +81,17 @@ class mod_livraison_jade extends ModeleNumRefDeliveryOrder
if ($row) $blyy = substr($row[0],0,4);
}
// Si au moins un champ respectant le mod<EFBFBD>le a <20>t<EFBFBD> trouv<75>e
// Si au moins un champ respectant le modele a ete trouvee
if (eregi('BL[0-9][0-9]',$blyy))
{
// Recherche rapide car restreint par un like sur champ index<EFBFBD>
// Recherche rapide car restreint par un like sur champ indexe
$posindice=5;
$sql = "SELECT MAX(0+SUBSTRING(ref,$posindice))";
$sql.= " FROM ".MAIN_DB_PREFIX."livraison";
$sql.= " WHERE ref like '".$blyy."%'";
$sql.= " AND entity = ".$conf->entity;
$resql=$db->query($sql);
if ($resql)
{
@ -106,8 +112,8 @@ class mod_livraison_jade extends ModeleNumRefDeliveryOrder
}
/** \brief Renvoie la r<EFBFBD>f<EFBFBD>rence de commande suivante non utilis<EFBFBD>e
* \param objsoc Objet soci<EFBFBD>t<EFBFBD>
/** \brief Renvoie la reference de commande suivante non utilisee
* \param objsoc Objet societe
* \param livraison Objet livraison
* \return string Texte descripif
*/

View File

@ -2,7 +2,7 @@
/* Copyright (C) 2003-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2004 Eric Seigne <eric.seigne@ryxeo.com>
* Copyright (C) 2006 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2006-2009 Regis Houssin <regis@dolibarr.fr>
*
* 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
@ -34,14 +34,14 @@ require_once(DOL_DOCUMENT_ROOT.'/includes/fpdf/fpdfi/fpdi_protection.php');
/**
\class ModelePDFDeliveryOrder
\brief Classe m<EFBFBD>re des mod<EFBFBD>les de bon de livraison
\brief Classe mere des modeles de bon de livraison
*/
class ModelePDFDeliveryOrder extends FPDF
{
var $error='';
/**
\brief Renvoi le dernier message d'erreur de cr<EFBFBD>ation de PDF de bon de livraison
\brief Renvoi le dernier message d'erreur de creation de PDF de bon de livraison
*/
function pdferror()
{
@ -49,15 +49,19 @@ class ModelePDFDeliveryOrder extends FPDF
}
/**
* \brief Renvoi la liste des mod<EFBFBD>les actifs
* \brief Renvoi la liste des modeles actifs
*/
function liste_modeles($db)
{
global $conf;
$type='delivery';
$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 +89,7 @@ class ModelePDFDeliveryOrder extends FPDF
/**
\class ModeleNumRefDeliveryOrder
\brief Classe m<EFBFBD>re des mod<EFBFBD>les de num<EFBFBD>rotation des r<EFBFBD>f<EFBFBD>rences de bon de livraison
\brief Classe mere des modeles de numerotation des references de bon de livraison
*/
class ModeleNumRefDeliveryOrder
@ -100,7 +104,7 @@ class ModeleNumRefDeliveryOrder
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
*/
function info()
@ -110,7 +114,7 @@ class ModeleNumRefDeliveryOrder
return $langs->trans("NoDescription");
}
/** \brief Renvoi un exemple de num<EFBFBD>rotation
/** \brief Renvoi un exemple de numerotation
* \return string Example
*/
function getExample()
@ -120,8 +124,8 @@ class ModeleNumRefDeliveryOrder
return $langs->trans("NoExample");
}
/** \brief Test si les num<EFBFBD>ros d<EFBFBD>j<EFBFBD> en vigueur dans la base ne provoquent pas d
* de conflits qui empechera cette num<EFBFBD>rotation de fonctionner.
/** \brief Test si les numeros deja en vigueur dans la base ne provoquent pas d
* de conflits qui empechera cette numerotation de fonctionner.
* \return boolean false si conflit, true si ok
*/
function canBeActivated()
@ -129,7 +133,7 @@ class ModeleNumRefDeliveryOrder
return true;
}
/** \brief Renvoi prochaine valeur attribu<EFBFBD>e
/** \brief Renvoi prochaine valeur attribuee
* \return string Valeur
*/
function getNextValue()

View File

@ -1498,7 +1498,7 @@ function restrictedArea($user, $feature='societe', $objectid=0, $dbtablename='',
}
}
//print $sql."<br>";
print $sql."<br>";
if ($sql)
{
$resql=$db->query($sql);

View File

@ -1,6 +1,6 @@
<?php
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2005-2008 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2006-2007 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2007 Franky Van Liedekerke <franky.van.liedekerke@telenet.be>
*
@ -87,16 +87,27 @@ class Livraison extends CommonObject
$this->brouillon = 1;
$this->user = $user;
if ($this->expedition_id) $expedition_id
$this->db->begin();
$sql = "INSERT INTO ".MAIN_DB_PREFIX."livraison (ref, fk_soc, date_creation, fk_user_author,";
$sql.= " fk_adresse_livraison";
if ($this->expedition_id) $sql.= ", fk_expedition";
$sql = "INSERT INTO ".MAIN_DB_PREFIX."livraison (";
$sql.= "ref";
$sql.= ", entity";
$sql.= ", fk_soc";
$sql.= ", date_creation";
$sql.= ", fk_user_author";
$sql.= ", fk_adresse_livraison";
$sql.= ", fk_expedition";
$sql.= ")";
$sql.= " VALUES ('(PROV)', ".$this->socid.", ".$this->db->idate(mktime()).", $user->id,";
$sql.= " ".($this->adresse_livraison_id > 0?$this->adresse_livraison_id:"null");
if ($this->expedition_id) $sql.= ", $this->expedition_id";
$sql.= " VALUES (";
$sql.= "'(PROV)'";
$sql.= ", ".$conf->entity;
$sql.= ", ".$this->socid;
$sql.= ", ".$this->db->idate(mktime());
$sql.= ", ".$user->id;
$sql.= ", ".($this->adresse_livraison_id > 0 ? $this->adresse_livraison_id : "null");
$sql.= ", ".($this->expedition_id ? $this->expedition_id : "null");
$sql.= ")";
dol_syslog("Livraison::create sql=".$sql, LOG_DEBUG);
@ -107,7 +118,8 @@ class Livraison extends CommonObject
$numref="(PROV".$this->id.")";
$sql = "UPDATE ".MAIN_DB_PREFIX."livraison ";
$sql.= "SET ref='".addslashes($numref)."' WHERE rowid=".$this->id;
$sql.= "SET ref = '".addslashes($numref);
$sql.= " WHERE rowid = ".$this->id;
dol_syslog("Livraison::create sql=".$sql, LOG_DEBUG);
$resql=$this->db->query($sql);
@ -139,7 +151,7 @@ class Livraison extends CommonObject
{
$sql = "UPDATE ".MAIN_DB_PREFIX."commande";
$sql.= " SET fk_statut = 2";
$sql.= " WHERE rowid=".$this->commande_id;
$sql.= " WHERE rowid = ".$this->commande_id;
dol_syslog("Livraison::create sql=".$sql, LOG_DEBUG);
$resql=$this->db->query($sql);
@ -341,14 +353,14 @@ class Livraison extends CommonObject
$soc = new Societe($this->db);
$soc->fetch($this->socid);
// on verifie si le bon de livraison est en num<EFBFBD>rotation provisoire
// on verifie si le bon de livraison est en numerotation provisoire
$livref = substr($this->ref, 1, 4);
if ($livref == 'PROV')
{
$this->ref = $objMod->livraison_get_num($soc,$this);
}
// Tester si non dej<EFBFBD> au statut valid<69>. Si oui, on arrete afin d'<27>viter
// Tester si non deja au statut valide. Si oui, on arrete afin d'eviter
// de decrementer 2 fois le stock.
$sql = "SELECT ref FROM ".MAIN_DB_PREFIX."livraison where ref='".$this->ref."' AND fk_statut <> 0";
$resql=$this->db->query($sql);
@ -377,8 +389,10 @@ class Livraison extends CommonObject
dol_syslog("livraison.class.php::valid enregistrement des mouvements");
$sql = "SELECT cd.fk_product, ld.qty ";
$sql.= " FROM ".MAIN_DB_PREFIX."commandedet as cd, ".MAIN_DB_PREFIX."livraisondet as ld";
$sql.= " WHERE ld.fk_livraison = $this->id AND cd.rowid = ld.fk_commande_ligne";
$sql.= " FROM ".MAIN_DB_PREFIX."commandedet as cd";
$sql.= ", ".MAIN_DB_PREFIX."livraisondet as ld";
$sql.= " WHERE ld.fk_livraison = ".$this->id;
$sql.= " AND cd.rowid = ld.fk_commande_ligne";
$resql=$this->db->query($sql);
if ($resql)
@ -463,9 +477,9 @@ class Livraison extends CommonObject
return 1;
}
/** \brief Cr<EFBFBD><EFBFBD> le bon de livraison depuis une expedition existante
* \param user Utilisateur qui cr<EFBFBD>e
* \param sending_id Id de l'exp<EFBFBD>dition qui sert de mod<EFBFBD>le
/** \brief Cree le bon de livraison depuis une expedition existante
* \param user Utilisateur qui cree
* \param sending_id Id de l'expedition qui sert de modele
*/
function create_from_sending($user, $sending_id)
{
@ -523,7 +537,8 @@ class Livraison extends CommonObject
{
if ($this->statut == 0)
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."commandedet WHERE rowid = $idligne";
$sql = "DELETE FROM ".MAIN_DB_PREFIX."commandedet";
$sql.= " WHERE rowid = ".$idligne;
if ($this->db->query($sql) )
{
@ -546,10 +561,12 @@ class Livraison extends CommonObject
{
$this->db->begin();
$sql = "DELETE FROM ".MAIN_DB_PREFIX."livraisondet WHERE fk_livraison = $this->id ;";
$sql = "DELETE FROM ".MAIN_DB_PREFIX."livraisondet";
$sql.= " WHERE fk_livraison = ".$this->id;
if ( $this->db->query($sql) )
{
$sql = "DELETE FROM ".MAIN_DB_PREFIX."livraison WHERE rowid = $this->id;";
$sql = "DELETE FROM ".MAIN_DB_PREFIX."livraison";
$sql.= " WHERE rowid = ".$this->id;
if ( $this->db->query($sql) )
{
$this->db->commit();
@ -631,7 +648,8 @@ class Livraison extends CommonObject
$sql.= " p.ref, p.fk_product_type as fk_product_type, p.label as label, p.description as product_desc";
$sql.= " FROM ".MAIN_DB_PREFIX."commandedet as cd, ".MAIN_DB_PREFIX."livraisondet as ld";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on p.rowid = ld.fk_product";
$sql.= " WHERE ld.fk_origin_line = cd.rowid AND ld.fk_livraison = ".$this->id;
$sql.= " WHERE ld.fk_origin_line = cd.rowid";
$sql.= " AND ld.fk_livraison = ".$this->id;
dol_syslog("Livraison::fetch_lignes sql=".$sql);
$resql = $this->db->query($sql);
@ -670,8 +688,8 @@ class Livraison extends CommonObject
/**
* \brief Retourne le libell<EFBFBD> du statut d'une expedition
* \return string Libell<EFBFBD>
* \brief Retourne le libelle du statut d'une expedition
* \return string Libelle
*/
function getLibStatut($mode=0)
{
@ -679,10 +697,10 @@ class Livraison extends CommonObject
}
/**
* \brief Renvoi le libell<EFBFBD> d'un statut donn<EFBFBD>
* \brief Renvoi le libelle d'un statut donne
* \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
* \return string Libell<EFBFBD>
* \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 LibStatut($statut,$mode)
{
@ -714,11 +732,17 @@ class Livraison extends CommonObject
*/
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 client=1 LIMIT 10";
$sql = "SELECT rowid";
$sql.= " FROM ".MAIN_DB_PREFIX."societe";
$sql.= " WHERE client = 1";
$sql.= " AND entity = ".$conf->entity;
$sql.= " LIMIT 10";
$resql = $this->db->query($sql);
if ($resql)
{
@ -735,7 +759,12 @@ class Livraison extends CommonObject
// 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)
{