To answer to this query :
http://www.dolibarr.fr/forum/12-howto--aide/20784-delais-de-livraison#24930
This commit is contained in:
parent
d8937157bf
commit
0f584ef6a2
@ -18,9 +18,9 @@
|
||||
; ----- Change this -----
|
||||
AppName=DoliWamp
|
||||
; DoliWamp-x.x.x or DoliWamp-x.x.x-dev or DoliWamp-x.x.x-beta
|
||||
AppVerName=DoliWamp-3.1.0-alpha
|
||||
AppVerName=DoliWamp-3.0.0-beta
|
||||
; DoliWamp-x.x x or DoliWamp-x.x.x-dev or DoliWamp-x.x.x-beta
|
||||
OutputBaseFilename=DoliWamp-3.1.0-alpha
|
||||
OutputBaseFilename=DoliWamp-3.0.0-beta
|
||||
; Define full path from wich all relative path are defined
|
||||
; You must modify this to put here your dolibarr root directory
|
||||
SourceDir=C:\Work\Data\Workspace\dolibarr
|
||||
|
||||
@ -52,7 +52,7 @@ $active = 1;
|
||||
// Mettre ici tous les caracteristiques des dictionnaires
|
||||
|
||||
// Ordres d'affichage des dictionnaires (0 pour espace)
|
||||
$taborder=array(9,0,4,3,2,0,1,8,19,16,0,5,11,0,6,0,10,12,13,0,14,0,7,17,0,20,18,0,15);
|
||||
$taborder=array(9,0,4,3,2,0,1,8,19,16,0,5,11,0,6,0,10,12,13,0,14,0,7,17,0,20,18,21,0,15);
|
||||
|
||||
// Nom des tables des dictionnaires
|
||||
$tabname[1] = MAIN_DB_PREFIX."c_forme_juridique";
|
||||
@ -75,6 +75,7 @@ $tabname[17]= MAIN_DB_PREFIX."c_type_fees";
|
||||
$tabname[18]= MAIN_DB_PREFIX."c_shipment_mode";
|
||||
$tabname[19]= MAIN_DB_PREFIX."c_effectif";
|
||||
$tabname[20]= MAIN_DB_PREFIX."c_methode_commande_fournisseur";
|
||||
$tabname[21]= MAIN_DB_PREFIX."c_delivery";
|
||||
|
||||
// Dictionary labels
|
||||
$tablib[1] = "DictionnaryCompanyJuridicalType";
|
||||
@ -97,6 +98,7 @@ $tablib[17]= "DictionnaryFees";
|
||||
$tablib[18]= "DictionnarySendingMethods";
|
||||
$tablib[19]= "DictionnaryStaff";
|
||||
$tablib[20]= "DictionnaryOrderMethods";
|
||||
$tablib[21]= "DictionnaryDelivery";
|
||||
|
||||
// Requete pour extraction des donnees des dictionnaires
|
||||
$tabsql[1] = "SELECT f.rowid as rowid, f.code, f.libelle, p.code as pays_code, p.libelle as pays, f.active FROM ".MAIN_DB_PREFIX."c_forme_juridique as f, ".MAIN_DB_PREFIX."c_pays as p WHERE f.fk_pays=p.rowid";
|
||||
@ -119,6 +121,7 @@ $tabsql[17]= "SELECT id as rowid, code, libelle, active FROM ".MAIN_DB_PREF
|
||||
$tabsql[18]= "SELECT rowid as rowid, code, libelle, active FROM ".MAIN_DB_PREFIX."c_shipment_mode";
|
||||
$tabsql[19]= "SELECT id as rowid, code, libelle, active FROM ".MAIN_DB_PREFIX."c_effectif";
|
||||
$tabsql[20]= "SELECT rowid as rowid, code, libelle, active FROM ".MAIN_DB_PREFIX."c_methode_commande_fournisseur";
|
||||
$tabsql[21]= "SELECT rowid as rowid, code, libelle, active FROM ".MAIN_DB_PREFIX."c_delivery";
|
||||
|
||||
// Critere de tri du dictionnaire
|
||||
$tabsqlsort[1] ="pays ASC, code ASC";
|
||||
@ -141,6 +144,7 @@ $tabsqlsort[17]="code ASC";
|
||||
$tabsqlsort[18]="code ASC, libelle ASC";
|
||||
$tabsqlsort[19]="id ASC";
|
||||
$tabsqlsort[20]="code ASC, libelle ASC";
|
||||
$tabsqlsort[21]="code ASC, libelle ASC";
|
||||
|
||||
// Nom des champs en resultat de select pour affichage du dictionnaire
|
||||
$tabfield[1] = "code,libelle,pays";
|
||||
@ -163,6 +167,7 @@ $tabfield[17]= "code,libelle";
|
||||
$tabfield[18]= "code,libelle";
|
||||
$tabfield[19]= "code,libelle";
|
||||
$tabfield[20]= "code,libelle";
|
||||
$tabfield[21]= "code,libelle";
|
||||
|
||||
// Nom des champs d'edition pour modification d'un enregistrement
|
||||
$tabfieldvalue[1] = "code,libelle,pays";
|
||||
@ -185,6 +190,7 @@ $tabfieldvalue[17]= "code,libelle";
|
||||
$tabfieldvalue[18]= "code,libelle";
|
||||
$tabfieldvalue[19]= "code,libelle";
|
||||
$tabfieldvalue[20]= "code,libelle";
|
||||
$tabfieldvalue[21]= "code,libelle";
|
||||
|
||||
// Nom des champs dans la table pour insertion d'un enregistrement
|
||||
$tabfieldinsert[1] = "code,libelle,fk_pays";
|
||||
@ -207,6 +213,7 @@ $tabfieldinsert[17]= "code,libelle";
|
||||
$tabfieldinsert[18]= "code,libelle";
|
||||
$tabfieldinsert[19]= "code,libelle";
|
||||
$tabfieldinsert[20]= "code,libelle";
|
||||
$tabfieldinsert[21]= "code,libelle";
|
||||
|
||||
// Nom du rowid si le champ n'est pas de type autoincrement
|
||||
// Example: "" if id field is "rowid" and has autoincrement on
|
||||
@ -231,6 +238,7 @@ $tabrowid[17]= "id";
|
||||
$tabrowid[18]= "rowid";
|
||||
$tabrowid[19]= "id";
|
||||
$tabrowid[20]= "";
|
||||
$tabrowid[21]= "";
|
||||
|
||||
// Condition to show dictionnary in setup page
|
||||
$tabcond[1] = true;
|
||||
@ -253,6 +261,7 @@ $tabcond[17]= $conf->deplacement->enabled;
|
||||
$tabcond[18]= $conf->expedition->enabled;
|
||||
$tabcond[19]= $conf->societe->enabled;
|
||||
$tabcond[20]= $conf->fournisseur->enabled;
|
||||
$tabcond[21]= $conf->propale->enabled;
|
||||
|
||||
|
||||
complete_dictionnary_with_modules($taborder,$tabname,$tablib,$tabsql,$tabsqlsort,$tabfield,$tabfieldvalue,$tabfieldinsert,$tabrowid,$tabcond);
|
||||
@ -856,7 +865,7 @@ function fieldList($fieldlist,$obj='')
|
||||
|
||||
foreach ($fieldlist as $field => $value)
|
||||
{
|
||||
//var_dump($obj);
|
||||
|
||||
if ($fieldlist[$field] == 'pays') {
|
||||
if (in_array('region_id',$fieldlist)) { print '<td> </td>'; continue; } // For region page, we do not show the country input
|
||||
print '<td>';
|
||||
|
||||
@ -232,6 +232,14 @@ if ($_POST['action'] == 'setaddress' && $user->rights->propale->creer)
|
||||
if ($result < 0) dol_print_error($db,$object->error);
|
||||
}
|
||||
|
||||
//delai de livraison
|
||||
if ($_POST['action'] == 'setdelivery' && $user->rights->propale->creer)
|
||||
{
|
||||
$object->fetch($_GET["id"]);
|
||||
$result=$object->set_delivery($user,$_POST['delivery']);
|
||||
if ($result < 0) dol_print_error($db,$object->error);
|
||||
}
|
||||
|
||||
// Positionne ref client
|
||||
if ($_POST['action'] == 'set_ref_client' && $user->rights->propale->creer)
|
||||
{
|
||||
@ -257,6 +265,7 @@ if ($_POST['action'] == 'add' && $user->rights->propale->creer)
|
||||
$object->ref = $_POST['ref'];
|
||||
$object->datep = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']);
|
||||
$object->date_livraison = dol_mktime(12, 0, 0, $_POST['liv_month'], $_POST['liv_day'], $_POST['liv_year']);
|
||||
$object->delivery = $_POST['delivery'];
|
||||
$object->fk_delivery_address = $_POST['fk_address'];
|
||||
$object->duree_validite = $_POST['duree_validite'];
|
||||
$object->cond_reglement_id = $_POST['cond_reglement_id'];
|
||||
@ -284,6 +293,7 @@ if ($_POST['action'] == 'add' && $user->rights->propale->creer)
|
||||
$object->ref_client = $_POST['ref_client'];
|
||||
$object->datep = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']);
|
||||
$object->date_livraison = dol_mktime(12, 0, 0, $_POST['liv_month'], $_POST['liv_day'], $_POST['liv_year']);
|
||||
$object->delivery = $_POST['delivery'];
|
||||
$object->fk_delivery_address = $_POST['fk_address'];
|
||||
$object->duree_validite = $_POST['duree_validite'];
|
||||
$object->cond_reglement_id = $_POST['cond_reglement_id'];
|
||||
@ -1261,6 +1271,25 @@ if ($id > 0 || ! empty($ref))
|
||||
print '</td></tr>';
|
||||
}
|
||||
|
||||
// Delivery
|
||||
print '<tr><td>';
|
||||
print '<table class="nobordernopadding" width="100%"><tr><td>';
|
||||
print $langs->trans('DeliveryPeriod');
|
||||
print '</td>';
|
||||
if ($_GET['action'] != 'editdelivery' && $object->brouillon) print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=editdelivery&id='.$object->id.'">'.img_edit($langs->trans('SetDelivery'),1).'</a></td>';
|
||||
print '</tr></table>';
|
||||
print '</td><td colspan="3">';
|
||||
if ($_GET['action'] == 'editdelivery')
|
||||
{
|
||||
$html->form_delivery($_SERVER['PHP_SELF'].'?id='.$object->id,$object->delivery,'delivery');
|
||||
}
|
||||
else
|
||||
{
|
||||
$html->form_delivery($_SERVER['PHP_SELF'].'?id='.$object->id,$object->delivery,'none');
|
||||
}
|
||||
print '</td>';
|
||||
print '</tr>';
|
||||
|
||||
// Payment term
|
||||
print '<tr><td>';
|
||||
print '<table class="nobordernopadding" width="100%"><tr><td>';
|
||||
|
||||
@ -95,6 +95,7 @@ class Propal extends CommonObject
|
||||
var $fk_address;
|
||||
var $address_type;
|
||||
var $adresse;
|
||||
var $delivery;
|
||||
|
||||
var $products=array();
|
||||
|
||||
@ -617,6 +618,7 @@ class Propal extends CommonObject
|
||||
$sql.= ", fk_mode_reglement";
|
||||
$sql.= ", ref_client";
|
||||
$sql.= ", date_livraison";
|
||||
$sql.= ", delivery";
|
||||
$sql.= ", entity";
|
||||
$sql.= ") ";
|
||||
$sql.= " VALUES (";
|
||||
@ -639,6 +641,7 @@ class Propal extends CommonObject
|
||||
$sql.= ", ".$this->mode_reglement_id;
|
||||
$sql.= ", '".$this->db->escape($this->ref_client)."'";
|
||||
$sql.= ", ".($this->date_livraison!=''?"'".$this->db->idate($this->date_livraison)."'":'null');
|
||||
$sql.= ", ".$this->delivery;
|
||||
$sql.= ", ".$conf->entity;
|
||||
$sql.= ")";
|
||||
|
||||
@ -901,6 +904,7 @@ class Propal extends CommonObject
|
||||
$sql.= ", datep as dp";
|
||||
$sql.= ", fin_validite as dfv";
|
||||
$sql.= ", date_livraison as date_livraison";
|
||||
$sql.= ", delivery";
|
||||
$sql.= ", model_pdf, ref_client";
|
||||
$sql.= ", note, note_public";
|
||||
$sql.= ", fk_projet, fk_statut";
|
||||
@ -954,6 +958,7 @@ class Propal extends CommonObject
|
||||
$this->datep = $this->db->jdate($obj->dp);
|
||||
$this->fin_validite = $this->db->jdate($obj->dfv);
|
||||
$this->date_livraison = $this->db->jdate($obj->date_livraison);
|
||||
$this->delivery = $obj->delivery;
|
||||
$this->fk_delivery_address = $obj->fk_adresse_livraison; // TODO obsolete
|
||||
$this->fk_address = $obj->fk_adresse_livraison;
|
||||
|
||||
@ -1226,6 +1231,34 @@ class Propal extends CommonObject
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Set delivery
|
||||
* \param user Objet utilisateur qui modifie
|
||||
* \param delivery delai de livraison
|
||||
* \return int <0 si ko, >0 si ok
|
||||
*/
|
||||
function set_delivery($user, $delivery)
|
||||
{
|
||||
if ($user->rights->propale->creer)
|
||||
{
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."propal ";
|
||||
$sql.= " SET delivery = '".$delivery."'";
|
||||
$sql.= " WHERE rowid = ".$this->id;
|
||||
|
||||
if ($this->db->query($sql))
|
||||
{
|
||||
$this->delivery = $delivery;
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error=$this->db->error();
|
||||
dol_syslog("Propal::set_delivery Erreur SQL");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Positionne numero reference client
|
||||
* \param user Utilisateur qui modifie
|
||||
|
||||
@ -1487,6 +1487,76 @@ class Form
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Charge dans cache la liste des délais de livraison possibles
|
||||
* \return int Nb lignes chargees, 0 si deja chargees, <0 si ko
|
||||
*/
|
||||
function load_cache_delivery()
|
||||
{
|
||||
global $langs;
|
||||
|
||||
if (sizeof($this->cache_delivery)) return 0; // Cache deja charge
|
||||
|
||||
$sql = "SELECT rowid, code, libelle";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX.'c_delivery';
|
||||
$sql.= " WHERE active=1";
|
||||
$sql.= " ORDER BY rowid";
|
||||
dol_syslog('Form::load_cache_delivery sql='.$sql,LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$num = $this->db->num_rows($resql);
|
||||
$i = 0;
|
||||
while ($i < $num)
|
||||
{
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
|
||||
// Si traduction existe, on l'utilise, sinon on prend le libelle par defaut
|
||||
$libelle=($langs->trans("DeliveryType".$obj->code)!=("DeliveryType".$obj->code)?$langs->trans("DeliveryType".$obj->code):($obj->libelle!='-'?$obj->libelle:''));
|
||||
$this->cache_delivery[$obj->rowid]['code'] =$obj->code;
|
||||
$this->cache_delivery[$obj->rowid]['label']=$libelle;
|
||||
$i++;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
dol_print_error($this->db);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Retourne la liste des types de delais de livraison possibles
|
||||
* \param selected Id du type de delais pre-selectionne
|
||||
* \param htmlname Nom de la zone select
|
||||
* \param filtertype Pour filtre
|
||||
* \param addempty Ajoute entree vide
|
||||
*/
|
||||
function select_delivery($selected='',$htmlname='delivery',$filtertype='',$addempty=0)
|
||||
{
|
||||
global $langs,$user;
|
||||
|
||||
$this->load_cache_delivery();
|
||||
|
||||
print '<select class="flat" name="'.$htmlname.'">';
|
||||
if ($addempty) print '<option value="0"> </option>';
|
||||
foreach($this->cache_delivery as $id => $arraydelivery)
|
||||
{
|
||||
if ($selected == $id)
|
||||
{
|
||||
print '<option value="'.$id.'" selected="selected">';
|
||||
}
|
||||
else
|
||||
{
|
||||
print '<option value="'.$id.'">';
|
||||
}
|
||||
print $arraydelivery['label'];
|
||||
print '</option>';
|
||||
}
|
||||
print '</select>';
|
||||
if ($user->admin) print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionnarySetup"),1);
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Charge dans cache la liste des types de paiements possibles
|
||||
* \return int Nb lignes chargees, 0 si deja chargees, <0 si ko
|
||||
@ -2059,6 +2129,40 @@ class Form
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Affiche formulaire de selection de delais de livraison
|
||||
* \param page Page
|
||||
* \param selected Id condition pre-selectionne
|
||||
* \param htmlname Name of select html field
|
||||
* \param addempty Ajoute entree vide
|
||||
*/
|
||||
function form_delivery($page, $selected='', $htmlname='delivery', $addempty=0)
|
||||
{
|
||||
global $langs;
|
||||
if ($htmlname != "none")
|
||||
{
|
||||
print '<form method="post" action="'.$page.'">';
|
||||
print '<input type="hidden" name="action" value="setdelivery">';
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print '<table class="nobordernopadding" cellpadding="0" cellspacing="0">';
|
||||
print '<tr><td>';
|
||||
$this->select_delivery($selected,$htmlname,-1,$addempty);
|
||||
print '</td>';
|
||||
print '<td align="left"><input type="submit" class="button" value="'.$langs->trans("Modify").'"></td>';
|
||||
print '</tr></table></form>';
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($selected)
|
||||
{
|
||||
$this->load_cache_delivery();
|
||||
print $this->cache_delivery[$selected]['label'];
|
||||
} else {
|
||||
print " ";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* \brief Affiche formulaire de selection d'une date
|
||||
|
||||
@ -42,3 +42,5 @@ ALTER TABLE llx_facturedet ADD UNIQUE INDEX uk_fk_remise_except (fk_remise_excep
|
||||
ALTER TABLE llx_societe ADD COLUMN fk_currency integer DEFAULT 0 AFTER fk_forme_juridique;
|
||||
|
||||
ALTER TABLE llx_societe_remise MODIFY remise_client double(6,3) DEFAULT 0 NOT NULL;
|
||||
|
||||
ALTER TABLE llx_propal ADD COLUMN delivery varchar(60) DEFAULT 0 NULL AFTER fk_adresse_livraison;
|
||||
|
||||
39
htdocs/install/mysql/tables/llx_c_delivery.sql
Normal file
39
htdocs/install/mysql/tables/llx_c_delivery.sql
Normal file
@ -0,0 +1,39 @@
|
||||
-- ========================================================================
|
||||
-- Copyright (C) 2011 Philippe GRAND <philippe.grand@atoo-net.com>
|
||||
--
|
||||
-- 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
|
||||
-- the Free Software Foundation; either version 2 of the License, or
|
||||
-- (at your option) any later version.
|
||||
--
|
||||
-- This program is distributed in the hope that it will be useful,
|
||||
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
-- GNU General Public License for more details.
|
||||
--
|
||||
-- You should have received a copy of the GNU General Public License
|
||||
-- along with this program; if not, write to the Free Software
|
||||
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
--
|
||||
-- $Id: llx_c_delivery.sql,v 1.2 2011/02/24 09:57:04 hregis Exp $
|
||||
-- ========================================================================
|
||||
|
||||
create table llx_c_delivery
|
||||
(
|
||||
`rowid` int(11) NOT NULL auto_increment,
|
||||
`code` varchar(30) default NULL,
|
||||
`libelle` varchar(60) default NULL,
|
||||
`active` tinyint(4) NOT NULL default '1',
|
||||
PRIMARY KEY (`rowid`)
|
||||
)ENGINE=innodb;
|
||||
|
||||
--
|
||||
-- Contenu de la table `llx_c_delivery`
|
||||
--
|
||||
|
||||
INSERT INTO `llx_c_delivery` (`rowid`, `code`, `libelle`, `active`) VALUES
|
||||
(1, 'DSP', 'Disponible', 1),
|
||||
(2, 'USM', 'Une semaine', 1),
|
||||
(3, 'DSM', 'Deux semaines', 1),
|
||||
(4, 'TSM', 'Trois semaines', 1);
|
||||
|
||||
@ -80,6 +80,8 @@ ClonePropal=Cloner proposition commerciale
|
||||
ConfirmClonePropal=Êtes-vous sûr de vouloir cloner cette proposition commerciale <b>%s</b> ?
|
||||
ProposalsAndProposalsLines=Propositions commerciales clientes et lignes de propositions
|
||||
ProposalLine=Ligne de proposition
|
||||
DeliveryPeriod=Délai de livraison (à réception de commande)
|
||||
SetDelivery=Définir le délai de livraison
|
||||
##### Types de contacts #####
|
||||
TypeContact_propal_internal_SALESREPFOLL=Commercial suivi propale
|
||||
TypeContact_propal_external_BILLING=Contact client facturation propale
|
||||
|
||||
Loading…
Reference in New Issue
Block a user