New: early development of multi-company module
This commit is contained in:
parent
8a1d511da4
commit
e89044da42
@ -21,7 +21,7 @@
|
||||
/**
|
||||
\file htdocs/includes/modules/propale/mod_propale_marbre.php
|
||||
\ingroup propale
|
||||
\brief Fichier contenant la classe du mod<EFBFBD>le de num<EFBFBD>rotation de r<EFBFBD>f<EFBFBD>rence de propale Marbre
|
||||
\brief Fichier contenant la classe du modele de numerotation de reference de propale Marbre
|
||||
\version $Id$
|
||||
*/
|
||||
|
||||
@ -29,7 +29,7 @@ require_once(DOL_DOCUMENT_ROOT ."/includes/modules/propale/modules_propale.php")
|
||||
|
||||
|
||||
/** \class mod_propale_marbre
|
||||
\brief Classe du mod<EFBFBD>le de num<EFBFBD>rotation de r<EFBFBD>f<EFBFBD>rence de propale Marbre
|
||||
\brief Classe du modele de numerotation de reference de propale Marbre
|
||||
*/
|
||||
|
||||
class mod_propale_marbre extends ModeleNumRefPropales
|
||||
@ -65,10 +65,14 @@ class mod_propale_marbre extends ModeleNumRefPropales
|
||||
*/
|
||||
function canBeActivated()
|
||||
{
|
||||
global $conf;
|
||||
|
||||
$pryymm='';
|
||||
|
||||
$sql = "SELECT MAX(ref)";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."propal";
|
||||
$sql.= " WHERE entity = ".$conf->entity;
|
||||
|
||||
$resql=$db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
@ -81,7 +85,7 @@ class mod_propale_marbre extends ModeleNumRefPropales
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error='Une propal commeneant par $pryymm existe en base et est incompatible avec cette numerotation. Supprimer la ou renommer la pour activer ce module.';
|
||||
$this->error='Une propal commencant par $pryymm existe en base et est incompatible avec cette numerotation. Supprimer la ou renommer la pour activer ce module.';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -93,13 +97,14 @@ class mod_propale_marbre extends ModeleNumRefPropales
|
||||
*/
|
||||
function getNextValue($objsoc,$propal)
|
||||
{
|
||||
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."propal";
|
||||
$sql.= " WHERE ref like '".$this->prefix."%'";
|
||||
$sql.= " AND entity = ".$conf->entity;
|
||||
|
||||
$resql=$db->query($sql);
|
||||
if ($resql)
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
<?php
|
||||
/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2007 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2007 Regis Houssin <regis@dolibarr.fr>
|
||||
* Copyright (C) 2008 Raphael Bertrand (Resultic) <raphael.bertrand@resultic.fr>
|
||||
/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2007 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2007 Regis Houssin <regis@dolibarr.fr>
|
||||
* Copyright (C) 2008 Raphael Bertrand (Resultic) <raphael.bertrand@resultic.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
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
<?php
|
||||
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2008 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
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
@ -53,31 +54,34 @@ class ModelePDFPropales extends FPDF
|
||||
*/
|
||||
function liste_modeles($db)
|
||||
{
|
||||
$type='propal';
|
||||
$liste=array();
|
||||
$sql ="SELECT nom as id, nom as lib";
|
||||
$sql.=" FROM ".MAIN_DB_PREFIX."document_model";
|
||||
$sql.=" WHERE type = '".$type."'";
|
||||
global $conf;
|
||||
|
||||
$type='propal';
|
||||
$liste=array();
|
||||
$sql = "SELECT nom as id, nom as lib";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."document_model";
|
||||
$sql.= " WHERE type = '".$type."'";
|
||||
$sql.= " AND entity = ".$cont->entity;
|
||||
|
||||
dol_syslog("modules_propale::liste_modeles sql=".$sql, LOG_DEBUG);
|
||||
$resql = $db->query($sql);
|
||||
if ($resql)
|
||||
dol_syslog("modules_propale::liste_modeles sql=".$sql, LOG_DEBUG);
|
||||
$resql = $db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$num = $db->num_rows($resql);
|
||||
$i = 0;
|
||||
while ($i < $num)
|
||||
{
|
||||
$num = $db->num_rows($resql);
|
||||
$i = 0;
|
||||
while ($i < $num)
|
||||
{
|
||||
$row = $db->fetch_row($resql);
|
||||
$liste[$row[0]]=$row[1];
|
||||
$i++;
|
||||
}
|
||||
$row = $db->fetch_row($resql);
|
||||
$liste[$row[0]]=$row[1];
|
||||
$i++;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error=$db->error();
|
||||
return -1;
|
||||
}
|
||||
return $liste;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error=$db->error();
|
||||
return -1;
|
||||
}
|
||||
return $liste;
|
||||
}
|
||||
}
|
||||
|
||||
@ -184,12 +188,12 @@ function propale_pdf_create($db, $id, $modele, $outputlangs)
|
||||
// Si model pas encore bon
|
||||
if (! $modelisok)
|
||||
{
|
||||
$liste=array();
|
||||
$liste=array();
|
||||
$model=new ModelePDFPropales();
|
||||
$liste=$model->liste_modeles($db);
|
||||
$modele=key($liste); // Renvoie premiere valeur de clé trouvé dans le tableau
|
||||
$file = "pdf_propale_".$modele.".modules.php";
|
||||
if (file_exists($dir.$file)) $modelisok=1;
|
||||
$modele=key($liste); // Renvoie premiere valeur de clé trouvé dans le tableau
|
||||
$file = "pdf_propale_".$modele.".modules.php";
|
||||
if (file_exists($dir.$file)) $modelisok=1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -290,6 +290,8 @@ function array2table($data,$tableMarkup=1,$tableoptions='',$troptions='',$tdopti
|
||||
*/
|
||||
function get_next_value($db,$mask,$table,$field,$where='',$valueforccc='',$date='')
|
||||
{
|
||||
global $conf;
|
||||
|
||||
// Clean parameters
|
||||
if ($date == '') $date=mktime(); // We use local year and month of PHP server to search numbers
|
||||
// but we should use local year and month of user
|
||||
@ -394,6 +396,7 @@ function get_next_value($db,$mask,$table,$field,$where='',$valueforccc='',$date=
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX.$table;
|
||||
// $sql.= " WHERE ".$field." not like '(%'";
|
||||
$sql.= " WHERE ".$field." like '".$maskLike."'";
|
||||
$sql.= " AND entity = ".$conf->entity;
|
||||
if ($where) $sql.=$where;
|
||||
if ($sqlwhere) $sql.=' AND '.$sqlwhere;
|
||||
|
||||
@ -664,12 +667,12 @@ function numero_semaine($time)
|
||||
|
||||
/*
|
||||
* Norme ISO-8601:
|
||||
* - La semaine 1 de toute ann<EFBFBD>e est celle qui contient le 4 janvier ou que la semaine 1 de toute ann<EFBFBD>e est celle qui contient le 1er jeudi de janvier.
|
||||
* - La majorit<EFBFBD> des ann<EFBFBD>es ont 52 semaines mais les ann<EFBFBD>es qui commence un jeudi et les ann<EFBFBD>es bissextiles commen<EFBFBD>ant un mercredi en poss<EFBFBD>de 53.
|
||||
* - La semaine 1 de toute annee est celle qui contient le 4 janvier ou que la semaine 1 de toute annee est celle qui contient le 1er jeudi de janvier.
|
||||
* - La majorite des annees ont 52 semaines mais les annees qui commence un jeudi et les annees bissextiles commencant un mercredi en possede 53.
|
||||
* - Le 1er jour de la semaine est le Lundi
|
||||
*/
|
||||
|
||||
// D<EFBFBD>finition du Jeudi de la semaine
|
||||
// Definition du Jeudi de la semaine
|
||||
if (date("w",mktime(12,0,0,$mois,$jour,$annee))==0) // Dimanche
|
||||
$jeudiSemaine = mktime(12,0,0,$mois,$jour,$annee)-3*24*60*60;
|
||||
else if (date("w",mktime(12,0,0,$mois,$jour,$annee))<4) // du Lundi au Mercredi
|
||||
@ -679,7 +682,7 @@ function numero_semaine($time)
|
||||
else // Jeudi
|
||||
$jeudiSemaine = mktime(12,0,0,$mois,$jour,$annee);
|
||||
|
||||
// D<EFBFBD>finition du premier Jeudi de l'ann<6E>e
|
||||
// Definition du premier Jeudi de l'annee
|
||||
if (date("w",mktime(12,0,0,1,1,date("Y",$jeudiSemaine)))==0) // Dimanche
|
||||
{
|
||||
$premierJeudiAnnee = mktime(12,0,0,1,1,date("Y",$jeudiSemaine))+4*24*60*60;
|
||||
@ -697,7 +700,7 @@ function numero_semaine($time)
|
||||
$premierJeudiAnnee = mktime(12,0,0,1,1,date("Y",$jeudiSemaine));
|
||||
}
|
||||
|
||||
// D<>finition du num<EFBFBD>ro de semaine: nb de jours entre "premier Jeudi de l'ann<6E>e" et "Jeudi de la semaine";
|
||||
// D<>finition du numero de semaine: nb de jours entre "premier Jeudi de l'annee" et "Jeudi de la semaine";
|
||||
$numeroSemaine = (
|
||||
(
|
||||
date("z",mktime(12,0,0,date("m",$jeudiSemaine),date("d",$jeudiSemaine),date("Y",$jeudiSemaine)))
|
||||
@ -709,7 +712,7 @@ function numero_semaine($time)
|
||||
// Cas particulier de la semaine 53
|
||||
if ($numeroSemaine==53)
|
||||
{
|
||||
// Les ann<EFBFBD>es qui commence un Jeudi et les ann<6E>es bissextiles commen<65>ant un Mercredi en poss<73>de 53
|
||||
// Les annees qui commence un Jeudi et les ann<6E>es bissextiles commencant un Mercredi en possede 53
|
||||
if (date("w",mktime(12,0,0,1,1,date("Y",$jeudiSemaine)))==4 || (date("w",mktime(12,0,0,1,1,date("Y",$jeudiSemaine)))==3 && date("z",mktime(12,0,0,12,31,date("Y",$jeudiSemaine)))==365))
|
||||
{
|
||||
$numeroSemaine = 53;
|
||||
|
||||
@ -527,22 +527,24 @@ class Propal extends CommonObject
|
||||
$this->fetch_client();
|
||||
|
||||
// Insertion dans la base
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."propal (fk_soc, price,";
|
||||
$sql.= " remise, remise_percent, remise_absolue,";
|
||||
$sql.= " tva, total, datep, datec, ref, fk_user_author, note, note_public, model_pdf, fin_validite,";
|
||||
$sql.= " fk_cond_reglement, fk_mode_reglement, ref_client,";
|
||||
$sql.= " date_livraison";
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."propal (fk_soc, price";
|
||||
$sql.= ", remise, remise_percent, remise_absolue";
|
||||
$sql.= ", tva, total, datep, datec, ref, fk_user_author, note, note_public, model_pdf, fin_validite";
|
||||
$sql.= ", fk_cond_reglement, fk_mode_reglement, ref_client";
|
||||
$sql.= ", date_livraison";
|
||||
$sql.= ", entity";
|
||||
$sql.= ") ";
|
||||
$sql.= " VALUES (".$this->socid.", 0,";
|
||||
$sql.= " ".$this->remise.", ".($this->remise_percent?$this->remise_percent:'null').", ".($this->remise_absolue?$this->remise_absolue:'null').",";
|
||||
$sql.= " 0,0,".$this->db->idate($this->datep).", ".$this->db->idate(mktime()).", '".$this->ref."', ";
|
||||
$sql.= ($user->id > 0 ? "'".$user->id."'":"null").",";
|
||||
$sql.= "'".addslashes($this->note)."',";
|
||||
$sql.= "'".addslashes($this->note_public)."',";
|
||||
$sql.= "'".$this->modelpdf."',".$this->db->idate($this->fin_validite).",";
|
||||
$sql.= " ".$this->cond_reglement_id.", ".$this->mode_reglement_id.",";
|
||||
$sql.= "'".addslashes($this->ref_client)."',";
|
||||
$sql.= " ".($this->date_livraison!=''?$this->db->idate($this->date_livraison):'null');
|
||||
$sql.= " VALUES (".$this->socid.", 0";
|
||||
$sql.= ", ".$this->remise.", ".($this->remise_percent?$this->remise_percent:'null').", ".($this->remise_absolue?$this->remise_absolue:'null');
|
||||
$sql.= ", 0, 0,".$this->db->idate($this->datep).", ".$this->db->idate(mktime()).", '".$this->ref;
|
||||
$sql.= ", ".($user->id > 0 ? "'".$user->id."'":"null");
|
||||
$sql.= ", '".addslashes($this->note);
|
||||
$sql.= ", '".addslashes($this->note_public)."',";
|
||||
$sql.= ", '".$this->modelpdf."',".$this->db->idate($this->fin_validite);
|
||||
$sql.= ", ".$this->cond_reglement_id.", ".$this->mode_reglement_id;
|
||||
$sql.= ", '".addslashes($this->ref_client);
|
||||
$sql.= ", ".($this->date_livraison!=''?$this->db->idate($this->date_livraison):'null');
|
||||
$sql.= ", ".$conf->entity;
|
||||
$sql.= ")";
|
||||
|
||||
dol_syslog("Propal::create sql=".$sql, LOG_DEBUG);
|
||||
@ -580,14 +582,20 @@ class Propal extends CommonObject
|
||||
// Affectation au projet
|
||||
if ($resql && $this->projetidp)
|
||||
{
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."propal SET fk_projet=".$this->projetidp." WHERE ref='".$this->ref."'";
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."propal";
|
||||
$sql.= " SET fk_projet=".$this->projetidp;
|
||||
$sql.= " WHERE ref='".$this->ref."'";
|
||||
$sql.= " AND entity = ".$conf->entity;
|
||||
$result=$this->db->query($sql);
|
||||
}
|
||||
|
||||
// Affectation de l'adresse de livraison
|
||||
if ($resql && $this->adresse_livraison_id)
|
||||
{
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."propal SET fk_adresse_livraison=$this->adresse_livraison_id WHERE ref='$this->ref'";
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."propal";
|
||||
$sql.= " SET fk_adresse_livraison = ".$this->adresse_livraison_id;
|
||||
$sql.= " WHERE ref = '".$this->ref."'";
|
||||
$sql.= " AND entity = ".$conf->entity;
|
||||
$result=$this->db->query($sql);
|
||||
}
|
||||
|
||||
@ -712,6 +720,8 @@ class Propal extends CommonObject
|
||||
*/
|
||||
function fetch($rowid,$ref='')
|
||||
{
|
||||
global $conf;
|
||||
|
||||
$sql = "SELECT p.rowid,ref,remise,remise_percent,remise_absolue,fk_soc";
|
||||
$sql.= ", total, tva, total_ht";
|
||||
$sql.= ", datec";
|
||||
@ -732,6 +742,7 @@ class Propal extends CommonObject
|
||||
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_paiement as cp ON p.fk_mode_reglement = cp.id';
|
||||
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'cond_reglement as cr ON p.fk_cond_reglement = cr.rowid';
|
||||
$sql.= " WHERE p.fk_statut = c.id";
|
||||
$sql.= " AND p.entity = ".$conf->entity;
|
||||
if ($ref) $sql.= " AND p.ref='".$ref."'";
|
||||
else $sql.= " AND p.rowid=".$rowid;
|
||||
|
||||
@ -1133,14 +1144,14 @@ class Propal extends CommonObject
|
||||
{
|
||||
if ($statut == 2)
|
||||
{
|
||||
// Propale sign<EFBFBD>e
|
||||
// Propale signee
|
||||
include_once(DOL_DOCUMENT_ROOT."/commande/commande.class.php");
|
||||
|
||||
$result=$this->create_commande($user);
|
||||
|
||||
if ($result >= 0)
|
||||
{
|
||||
// Classe la soci<EFBFBD>t<EFBFBD> rattach<63>e comme client
|
||||
// Classe la societe rattachee comme client
|
||||
$soc=new Societe($this->db);
|
||||
$soc->id = $this->socid;
|
||||
$result=$soc->set_as_client();
|
||||
@ -1186,7 +1197,7 @@ class Propal extends CommonObject
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Classe la propale comme factur<EFBFBD>e
|
||||
* \brief Classe la propale comme facturee
|
||||
* \return int <0 si ko, >0 si ok
|
||||
*/
|
||||
function classer_facturee()
|
||||
@ -1205,7 +1216,7 @@ class Propal extends CommonObject
|
||||
|
||||
|
||||
/**
|
||||
* \brief Cr<EFBFBD>e une commande <EFBFBD> partir de la proposition commerciale
|
||||
* \brief Cree une commande a partir de la proposition commerciale
|
||||
* \param user Utilisateur
|
||||
* \return int <0 si ko, >=0 si ok
|
||||
*/
|
||||
@ -1217,7 +1228,7 @@ class Propal extends CommonObject
|
||||
{
|
||||
if ($this->statut == 2)
|
||||
{
|
||||
// Propale sign<EFBFBD>e
|
||||
// Propale signee
|
||||
include_once(DOL_DOCUMENT_ROOT."/commande/commande.class.php");
|
||||
$commande = new Commande($this->db);
|
||||
$result=$commande->create_from_propale($user, $this->id);
|
||||
@ -1261,35 +1272,31 @@ class Propal extends CommonObject
|
||||
|
||||
|
||||
/**
|
||||
* \brief Renvoi la liste des propal (<EFBFBD>ventuellement filtr<EFBFBD>e sur un user) dans un tableau
|
||||
* \brief Renvoi la liste des propal (eventuellement filtree sur un user) dans un tableau
|
||||
* \param brouillon 0=non brouillon, 1=brouillon
|
||||
* \param user Objet user de filtre
|
||||
* \return int -1 si erreur, tableau r<EFBFBD>sultat si ok
|
||||
* \return int -1 si erreur, tableau resultat si ok
|
||||
*/
|
||||
|
||||
function liste_array ($brouillon=0, $user='')
|
||||
{
|
||||
$ga = array();
|
||||
|
||||
$sql = "SELECT rowid, ref FROM ".MAIN_DB_PREFIX."propal";
|
||||
$sql = "SELECT rowid, ref";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."propal";
|
||||
$sql.= " WHERE entity = ".$conf->entity;
|
||||
|
||||
if ($brouillon)
|
||||
{
|
||||
$sql .= " WHERE fk_statut = 0";
|
||||
if ($user)
|
||||
{
|
||||
$sql .= " AND fk_user_author".$user;
|
||||
}
|
||||
$sql.= " AND fk_statut = 0";
|
||||
if ($user) $sql.= " AND fk_user_author".$user;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($user)
|
||||
{
|
||||
$sql .= " WHERE fk_user_author".$user;
|
||||
}
|
||||
if ($user) $sql.= " AND fk_user_author".$user;
|
||||
}
|
||||
|
||||
$sql .= " ORDER BY datep DESC";
|
||||
|
||||
$sql.= " ORDER BY datep DESC";
|
||||
|
||||
$result=$this->db->query($sql);
|
||||
if ($result)
|
||||
@ -1394,7 +1401,7 @@ class Propal extends CommonObject
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Renvoie un tableau contenant les num<EFBFBD>ros de factures associ<EFBFBD>es
|
||||
* \brief Renvoie un tableau contenant les numeros de factures associees
|
||||
* \return array Tableau des id de factures
|
||||
*/
|
||||
function getInvoiceArrayList ()
|
||||
@ -1403,7 +1410,7 @@ class Propal extends CommonObject
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Renvoie un tableau contenant les id et ref des factures associ<EFBFBD>es
|
||||
* \brief Renvoie un tableau contenant les id et ref des factures associees
|
||||
* \param id Id propal
|
||||
* \return array Tableau des id de factures
|
||||
*/
|
||||
@ -1541,8 +1548,8 @@ class Propal extends CommonObject
|
||||
|
||||
|
||||
/**
|
||||
* \brief Change les conditions de r<EFBFBD>glement de la facture
|
||||
* \param cond_reglement_id Id de la nouvelle condition de r<EFBFBD>glement
|
||||
* \brief Change les conditions de reglement de la facture
|
||||
* \param cond_reglement_id Id de la nouvelle condition de reglement
|
||||
* \return int >0 si ok, <0 si ko
|
||||
*/
|
||||
function cond_reglement($cond_reglement_id)
|
||||
@ -1575,7 +1582,7 @@ class Propal extends CommonObject
|
||||
|
||||
|
||||
/**
|
||||
* \brief Change le mode de r<EFBFBD>glement
|
||||
* \brief Change le mode de reglement
|
||||
* \param mode_reglement Id du nouveau mode
|
||||
* \return int >0 si ok, <0 si ko
|
||||
*/
|
||||
@ -1618,7 +1625,7 @@ class Propal extends CommonObject
|
||||
$sql.= $this->db->pdate("datec")." as datec, ".$this->db->pdate("date_valid")." as datev, ".$this->db->pdate("date_cloture")." as dateo";
|
||||
$sql.= ", fk_user_author, fk_user_valid, fk_user_cloture";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."propal as c";
|
||||
$sql.= " WHERE c.rowid = $id";
|
||||
$sql.= " WHERE c.rowid = ".$id;
|
||||
|
||||
$result = $this->db->query($sql);
|
||||
|
||||
@ -1665,9 +1672,9 @@ class Propal extends CommonObject
|
||||
|
||||
|
||||
/**
|
||||
* \brief Retourne le libell<EFBFBD> du statut d'une propale (brouillon, valid<EFBFBD>e, ...)
|
||||
* \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>
|
||||
* \brief Retourne le libelle du statut d'une propale (brouillon, validee, ...)
|
||||
* \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)
|
||||
{
|
||||
@ -1675,10 +1682,10 @@ class Propal 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=1)
|
||||
{
|
||||
@ -1743,17 +1750,15 @@ class Propal extends CommonObject
|
||||
$this->nbtodo=$this->nbtodolate=0;
|
||||
$clause = " WHERE";
|
||||
|
||||
$sql ="SELECT p.rowid, p.ref, p.datec as datec, p.fin_validite as datefin";
|
||||
$sql.=" FROM ".MAIN_DB_PREFIX."propal as p";
|
||||
$sql.= ", ".MAIN_DB_PREFIX."societe as s";
|
||||
$sql = "SELECT p.rowid, p.ref, p.datec as datec, p.fin_validite as datefin";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."propal as p";
|
||||
if (!$user->rights->societe->client->voir && !$user->societe_id)
|
||||
{
|
||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON p.fk_soc = sc.fk_soc";
|
||||
$sql.= " WHERE sc.fk_user = " .$user->id;
|
||||
$clause = " AND";
|
||||
}
|
||||
$sql.= $clause." p.fk_soc = s.rowid";
|
||||
$sql.= " AND s.entity = ".$conf->entity;
|
||||
$sql.= $clause." p.entity = ".$conf->entity;
|
||||
if ($mode == 'opened') $sql.= " AND p.fk_statut = 1";
|
||||
if ($mode == 'signed') $sql.= " AND p.fk_statut = 2";
|
||||
if ($user->societe_id) $sql.= " AND p.fk_soc = ".$user->societe_id;
|
||||
@ -1793,11 +1798,15 @@ class Propal extends CommonObject
|
||||
*/
|
||||
function initAsSpecimen()
|
||||
{
|
||||
global $user,$langs;
|
||||
global $user,$langs,$conf;
|
||||
|
||||
// Charge tableau des id de soci<EFBFBD>t<EFBFBD> socids
|
||||
// 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)
|
||||
{
|
||||
@ -1814,7 +1823,10 @@ class Propal 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)
|
||||
{
|
||||
@ -1828,7 +1840,7 @@ class Propal extends CommonObject
|
||||
}
|
||||
}
|
||||
|
||||
// Initialise param<EFBFBD>tres
|
||||
// Initialise parametres
|
||||
$this->id=0;
|
||||
$this->ref = 'SPECIMEN';
|
||||
$this->specimen=1;
|
||||
@ -1884,7 +1896,7 @@ class Propal extends CommonObject
|
||||
$sql.= " WHERE sc.fk_user = " .$user->id;
|
||||
$clause = "AND";
|
||||
}
|
||||
$sql.= " ".$clause." s.entity = ".$conf->entity;
|
||||
$sql.= " ".$clause." p.entity = ".$conf->entity;
|
||||
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
@ -1904,13 +1916,15 @@ class Propal extends CommonObject
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief V<EFBFBD>rifie si la ref n'est pas d<EFBFBD>j<EFBFBD> utilis<EFBFBD>e
|
||||
* \brief Verifie si la ref n'est pas deja utilisee
|
||||
* \param soc objet societe
|
||||
*/
|
||||
function verifyNumRef($soc)
|
||||
{
|
||||
$sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."propal";
|
||||
$sql = "SELECT rowid";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."propal";
|
||||
$sql.= " WHERE ref = '".$this->ref."'";
|
||||
$sql.= " AND entity = ".$conf->entity;
|
||||
|
||||
$result = $this->db->query($sql);
|
||||
if ($result)
|
||||
@ -1925,8 +1939,8 @@ class Propal extends CommonObject
|
||||
|
||||
|
||||
/**
|
||||
* \brief Renvoie la r<EFBFBD>f<EFBFBD>rence de propale suivante non utilis<EFBFBD>e en fonction du module
|
||||
* de num<EFBFBD>rotation actif d<EFBFBD>fini dans PROPALE_ADDON
|
||||
* \brief Renvoie la reference de propale suivante non utilisee en fonction du module
|
||||
* de numerotation actif defini dans PROPALE_ADDON
|
||||
* \param soc objet societe
|
||||
* \return string reference libre pour la propale
|
||||
*/
|
||||
@ -1941,7 +1955,7 @@ class Propal extends CommonObject
|
||||
{
|
||||
$file = PROPALE_ADDON.".php";
|
||||
|
||||
// Chargement de la classe de num<EFBFBD>rotation
|
||||
// Chargement de la classe de numerotation
|
||||
$classname = PROPALE_ADDON;
|
||||
require_once($dir.$file);
|
||||
|
||||
@ -2244,7 +2258,7 @@ class PropaleLigne
|
||||
|
||||
/**
|
||||
* \brief Mise a jour en base des champs total_xxx de ligne
|
||||
* \remarks Utilis<EFBFBD> par migration
|
||||
* \remarks Utilise par migration
|
||||
* \return int <0 si ko, >0 si ok
|
||||
*/
|
||||
function update_total()
|
||||
|
||||
@ -23,6 +23,7 @@ ALTER TABLE llx_menu ADD COLUMN entity integer DEFAULT 1 NOT NULL AFTER menu_han
|
||||
ALTER TABLE llx_ecm_directories ADD COLUMN entity integer DEFAULT 1 NOT NULL AFTER label;
|
||||
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_rights_def DROP PRIMARY KEY;
|
||||
ALTER TABLE llx_user_param DROP INDEX fk_user;
|
||||
@ -34,6 +35,7 @@ ALTER TABLE llx_bank_account DROP INDEX uk_bank_account_label;
|
||||
ALTER TABLE llx_document_model DROP INDEX uk_document_model;
|
||||
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_rights_def ADD PRIMARY KEY (id, entity);
|
||||
ALTER TABLE llx_user_param ADD UNIQUE INDEX uk_user_param (fk_user,param,entity);
|
||||
@ -44,4 +46,5 @@ ALTER TABLE llx_entrepot ADD UNIQUE INDEX uk_entrepot_label (label, entity);
|
||||
ALTER TABLE llx_bank_account ADD UNIQUE INDEX uk_bank_account_label (label, entity);
|
||||
ALTER TABLE llx_document_model ADD UNIQUE INDEX uk_document_model (nom, type, entity);
|
||||
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_categorie ADD UNIQUE INDEX uk_categorie_ref (label, type, entity);
|
||||
ALTER TABLE llx_propal ADD UNIQUE INDEX uk_propal_ref (ref, entity);
|
||||
@ -1,6 +1,7 @@
|
||||
-- ============================================================================
|
||||
-- Copyright (C) 2002-2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
-- 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
|
||||
-- it under the terms of the GNU General Public License as published by
|
||||
@ -20,7 +21,8 @@
|
||||
-- ============================================================================
|
||||
|
||||
|
||||
ALTER TABLE llx_propal ADD UNIQUE INDEX uk_propal_ref (ref, entity);
|
||||
|
||||
ALTER TABLE llx_propal ADD INDEX idx_propal_fk_soc (fk_soc);
|
||||
|
||||
|
||||
ALTER TABLE llx_propal ADD CONSTRAINT fk_propal_fk_soc FOREIGN KEY (fk_soc) REFERENCES llx_societe (rowid);
|
||||
@ -1,5 +1,6 @@
|
||||
-- ===================================================================
|
||||
-- Copyright (C) 2001-2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
-- Copyright (C) 2005-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
|
||||
@ -22,35 +23,42 @@ create table llx_propal
|
||||
(
|
||||
rowid integer AUTO_INCREMENT PRIMARY KEY,
|
||||
fk_soc integer,
|
||||
fk_projet integer DEFAULT 0, -- projet auquel est rattache la propale
|
||||
ref varchar(30) NOT NULL, -- propal number
|
||||
ref_client varchar(30), -- customer order number
|
||||
fk_projet integer DEFAULT 0, -- projet auquel est rattache la propale
|
||||
ref varchar(30) NOT NULL, -- propal number
|
||||
entity integer DEFAULT 1 NOT NULL, -- multi company id
|
||||
ref_client varchar(30), -- customer order number
|
||||
|
||||
datec datetime, -- date de creation
|
||||
datep date, -- date de la propal
|
||||
fin_validite datetime, -- date de fin de validite
|
||||
date_valid datetime, -- date de validation
|
||||
date_cloture datetime, -- date de cloture
|
||||
fk_user_author integer, -- createur de la propale
|
||||
fk_user_valid integer, -- valideur de la propale
|
||||
fk_user_cloture integer, -- cloture de la propale signee ou non signee
|
||||
fk_statut smallint DEFAULT 0 NOT NULL,
|
||||
price real DEFAULT 0, -- (obsolete)
|
||||
remise_percent real DEFAULT 0, -- remise globale relative en pourcent (obsolete)
|
||||
remise_absolue real DEFAULT 0, -- remise globale absolue (obsolete)
|
||||
remise real DEFAULT 0, -- remise calculee (obsolete)
|
||||
total_ht double(24,8) DEFAULT 0, -- montant total ht apres remise globale
|
||||
tva double(24,8) DEFAULT 0, -- montant total tva apres remise globale
|
||||
total double(24,8) DEFAULT 0, -- montant total ttc apres remise globale
|
||||
datec datetime, -- date de creation
|
||||
datep date, -- date de la propal
|
||||
fin_validite datetime, -- date de fin de validite
|
||||
date_valid datetime, -- date de validation
|
||||
date_cloture datetime, -- date de cloture
|
||||
fk_user_author integer, -- createur de la propale
|
||||
fk_user_valid integer, -- valideur de la propale
|
||||
fk_user_cloture integer, -- cloture de la propale signee ou non signee
|
||||
fk_statut smallint DEFAULT 0 NOT NULL,
|
||||
price real DEFAULT 0, -- (obsolete)
|
||||
remise_percent real DEFAULT 0, -- remise globale relative en pourcent (obsolete)
|
||||
remise_absolue real DEFAULT 0, -- remise globale absolue (obsolete)
|
||||
remise real DEFAULT 0, -- remise calculee (obsolete)
|
||||
total_ht double(24,8) DEFAULT 0, -- montant total ht apres remise globale
|
||||
tva double(24,8) DEFAULT 0, -- montant total tva apres remise globale
|
||||
total double(24,8) DEFAULT 0, -- montant total ttc apres remise globale
|
||||
|
||||
fk_cond_reglement integer, -- condition de reglement (30 jours, fin de mois ...)
|
||||
fk_mode_reglement integer, -- mode de reglement (Virement, Prélèvement)
|
||||
fk_cond_reglement integer, -- condition de reglement (30 jours, fin de mois ...)
|
||||
fk_mode_reglement integer, -- mode de reglement (Virement, Prélèvement)
|
||||
|
||||
note text,
|
||||
note_public text,
|
||||
model_pdf varchar(50),
|
||||
date_livraison date default NULL,
|
||||
fk_adresse_livraison integer, -- adresse de livraison
|
||||
|
||||
UNIQUE INDEX (ref)
|
||||
fk_adresse_livraison integer -- adresse de livraison
|
||||
)type=innodb;
|
||||
|
||||
--
|
||||
-- List of codes for the field entity
|
||||
--
|
||||
-- 1 : first company propal
|
||||
-- 2 : second company propal
|
||||
-- 3 : etc...
|
||||
--
|
||||
Loading…
Reference in New Issue
Block a user