' with css class="login_block_elem"
3) Some methods object->addline used a first parameter that was object->id, some not. Of course
-this was not a good pratice, since object->id is already known, there is no need to provide id as
+this was not a good practice, since object->id is already known, there is no need to provide id as
parameter. All methods addline in this case were modified to remove this parameter.
4) Method ->classer_facturee() is deprecated. It must be replace with ->classifyBilled().
@@ -135,18 +135,18 @@ Fix: Reordering supplier products in list by supplier or supplier ref was crashi
Fix: [ bug #1029 ] Tulip numbering mask
Fix: Supplier invoice and supplier order are not displayed into object link into agenda event card
Fix: [ bug #1033 ] SUPPLIER REF disappeared
-Fix: update extrafield do not display immediatly after update
+Fix: update extrafield do not display immediately after update
Fix: Fix bug with canvas thirdparty
Fix: [ bug #1037 ] Consumption> Supplier invoices related
Fix: User group name do not display in card (view or edit mode)
-Fix: Link "Show all supplier invoice" on suplier card not working
+Fix: Link "Show all supplier invoice" on supplier card not working
Fix: [ bug #1039 ] Pre-defined invoices conversion
Fix: If only service module is activated, it's impossible to delete service
Fix: [ bug #1043 ] Bad interventions ref numbering
Fix: Mailing module : if an email is already in destinaires list all other email from selector was not inserted
Fix: Localtaxes balance not showing
Fix: Intervention box links to contracts id
-Fix: Compatiblity with multicompany module
+Fix: Compatibility with multicompany module
Fix: Edit propal line was losing product supplier price id
Fix: Delete linked element to supplier invoice when deleted
Fix: [ bug #1061 ] Bad info shipped products
diff --git a/htdocs/core/actions_extrafields.inc.php b/htdocs/core/actions_extrafields.inc.php
index 4861ee6b856..74bf7c40ad8 100644
--- a/htdocs/core/actions_extrafields.inc.php
+++ b/htdocs/core/actions_extrafields.inc.php
@@ -87,7 +87,7 @@ if ($action == 'add')
$mesg[]=$langs->trans("ErrorNoValueForRadioType");
$action = 'create';
}
- if (((GETPOST('type')=='radio') || (GETPOST('type')=='checkbox') || (GETPOST('type')=='radio')) && GETPOST('param'))
+ if (((GETPOST('type')=='radio') || (GETPOST('type')=='checkbox')) && GETPOST('param'))
{
// Construct array for parameter (value of select list)
$parameters = GETPOST('param');
@@ -124,11 +124,22 @@ if ($action == 'add')
$default_value = GETPOST('default_value');
$parameters = GETPOST('param');
$parameters_array = explode("\r\n",$parameters);
- foreach($parameters_array as $param_ligne)
+ //In sellist we have only one line and it can have come to do SQL expression
+ if (GETPOST('type')=='sellist') {
+ foreach($parameters_array as $param_ligne)
+ {
+ $params['options'] = array($parameters=>null);
+ }
+ }
+ else
{
- list($key,$value) = explode(',',$param_ligne);
- $params['options'][$key] = $value;
- }
+ //Esle it's separated key/value and coma list
+ foreach($parameters_array as $param_ligne)
+ {
+ list($key,$value) = explode(',',$param_ligne);
+ $params['options'][$key] = $value;
+ }
+ }
$result=$extrafields->addExtraField($_POST['attrname'],$_POST['label'],$_POST['type'],$_POST['pos'],$extrasize,$elementtype,(GETPOST('unique')?1:0),(GETPOST('required')?1:0),$default_value,$params);
if ($result > 0)
@@ -215,7 +226,7 @@ if ($action == 'update')
$mesg[]=$langs->trans("ErrorNoValueForRadioType");
$action = 'edit';
}
- if (((GETPOST('type')=='radio') || (GETPOST('type')=='checkbox') || (GETPOST('type')=='radio')) && GETPOST('param'))
+ if (((GETPOST('type')=='radio') || (GETPOST('type')=='checkbox')) && GETPOST('param'))
{
// Construct array for parameter (value of select list)
$parameters = GETPOST('param');
@@ -251,10 +262,21 @@ if ($action == 'update')
// Construct array for parameter (value of select list)
$parameters = GETPOST('param');
$parameters_array = explode("\r\n",$parameters);
- foreach($parameters_array as $param_ligne)
+ //In sellist we have only one line and it can have come to do SQL expression
+ if (GETPOST('type')=='sellist') {
+ foreach($parameters_array as $param_ligne)
+ {
+ $params['options'] = array($parameters=>null);
+ }
+ }
+ else
{
- list($key,$value) = explode(',',$param_ligne);
- $params['options'][$key] = $value;
+ //Esle it's separated key/value and coma list
+ foreach($parameters_array as $param_ligne)
+ {
+ list($key,$value) = explode(',',$param_ligne);
+ $params['options'][$key] = $value;
+ }
}
$result=$extrafields->update($_POST['attrname'],$_POST['label'],$_POST['type'],$extrasize,$elementtype,(GETPOST('unique')?1:0),(GETPOST('required')?1:0),$pos,$params);
if ($result > 0)
diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php
index f4271d05070..c651603451d 100644
--- a/htdocs/core/class/extrafields.class.php
+++ b/htdocs/core/class/extrafields.class.php
@@ -693,15 +693,23 @@ class ExtraFields
// 1 2 : label field name Nom du champ contenant le libelle
// 2 3 : key fields name (if differ of rowid)
// 3 4 : key field parent (for dependent lists)
+ // 4 5 : where clause filter on column or table extrafield, syntax field='value' or extra.field=value
+
$keyList='rowid';
- if (count($InfoFieldList)>=3)
- $keyList=$InfoFieldList[2].' as rowid';
- if (count($InfoFieldList)>=4) {
+ if (count($InfoFieldList)>=3) {
list($parentName, $parentField) = explode('|', $InfoFieldList[3]);
$keyList.= ', '.$parentField;
}
+ if (count($InfoFieldList)>=4 && !empty($InfoFieldList[4])) {
+ if (strpos($InfoFieldList[4], 'extra')!==false) {
+ $keyList='main.'.$InfoFieldList[2].' as rowid';
+ }else {
+ $keyList=$InfoFieldList[2].' as rowid';
+ }
+ }
+
$fields_label = explode('|',$InfoFieldList[1]);
if(is_array($fields_label)) {
@@ -717,6 +725,16 @@ class ExtraFields
$sql = 'SELECT '.$keyList;
$sql.= ' FROM '.MAIN_DB_PREFIX .$InfoFieldList[0];
+ if (!empty($InfoFieldList[4])) {
+
+ //We have to join on extrafield table
+ if (strpos($InfoFieldList[4], 'extra')!==false) {
+ $sql.= ' as main, '.MAIN_DB_PREFIX .$InfoFieldList[0].'_extrafields as extra';
+ $sql.= ' WHERE extra.fk_object=main.'.$InfoFieldList[2]. ' AND '.$InfoFieldList[4];
+ }else {
+ $sql.= ' WHERE '.$InfoFieldList[4];
+ }
+ }
//$sql.= ' WHERE entity = '.$conf->entity;
//print $sql;
diff --git a/htdocs/install/mysql/migration/3.4.0-3.5.0.sql b/htdocs/install/mysql/migration/3.4.0-3.5.0.sql
index e417a408d50..75614321fbc 100755
--- a/htdocs/install/mysql/migration/3.4.0-3.5.0.sql
+++ b/htdocs/install/mysql/migration/3.4.0-3.5.0.sql
@@ -325,7 +325,9 @@ create table llx_actioncomm_resources
fk_actioncomm integer NOT NULL,
element_type varchar(50) NOT NULL,
fk_element integer NOT NULL,
- fk_element_status varchar(32) NULL
+ answer_status varchar(50) NULL,
+ mandatory smallint,
+ transparent smallint
) ENGINE=innodb;
ALTER TABLE llx_actioncomm_resources ADD UNIQUE INDEX idx_actioncomm_resources_idx1 (fk_actioncomm, element_type, fk_element);
ALTER TABLE llx_actioncomm_resources ADD INDEX idx_actioncomm_resources_fk_element (fk_element);
diff --git a/htdocs/install/mysql/tables/llx_actioncomm_resources.sql b/htdocs/install/mysql/tables/llx_actioncomm_resources.sql
index 781744e7c60..bd48ad4f66d 100644
--- a/htdocs/install/mysql/tables/llx_actioncomm_resources.sql
+++ b/htdocs/install/mysql/tables/llx_actioncomm_resources.sql
@@ -26,5 +26,7 @@ create table llx_actioncomm_resources
fk_actioncomm integer NOT NULL,
element_type varchar(50) NOT NULL,
fk_element integer NOT NULL,
- fk_element_status varchar(32) NULL
+ answer_status varchar(50) NULL,
+ mandatory smallint,
+ transparent smallint
) ENGINE=innodb;
diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang
index 3aaba60e9e0..8e73c2fe560 100644
--- a/htdocs/langs/en_US/admin.lang
+++ b/htdocs/langs/en_US/admin.lang
@@ -368,7 +368,7 @@ ExtrafieldRadio=Radio button
ExtrafieldParamHelpselect=Parameters list have to be like key,value
for exemple :
1,value1
2,value2
3,value3
...
In order to have the list depending on another :
1,value1|parent_list_code:parent_key
2,value2|parent_list_code:parent_key
ExtrafieldParamHelpcheckbox=Parameters list have to be like key,value
for exemple :
1,value1
2,value2
3,value3
...
ExtrafieldParamHelpradio=Parameters list have to be like key,value
for exemple :
1,value1
2,value2
3,value3
...
-ExtrafieldParamHelpsellist=Parameters list have come from table
for exemple :
c_typent:libelle:id
In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column
+ExtrafieldParamHelpsellist=Parameters list have come from table
for exemple :
c_typent:libelle:id::filter
In order to have the list depending on another :
c_typent:libelle:id:parent_list_code|parent_column:filter
filter can be a simple test (eg active=1) to display only active value
if you want to filter on extrafields use syntaxt extra.fieldcode=... (where field code is the code of extrafield)
LibraryToBuildPDF=Library used to build PDF
WarningUsingFPDF=Warning: Your
conf.php contains directive
dolibarr_pdf_force_fpdf=1. This means you use the FPDF library to generate PDF files. This library is old and does not support a lot of features (Unicode, image transparency, cyrillic, arab and asiatic languages, ...), so you may experience errors during PDF generation.
To solve this and have a full support of PDF generation, please download
TCPDF library, then comment or remove the line
$dolibarr_pdf_force_fpdf=1, and add instead
$dolibarr_lib_TCPDF_PATH='path_to_TCPDF_dir'
LocalTaxDesc=Some countries apply 2 or 3 taxes on each invoice line. If this is the case, choose type for second and third tax and its rate. Possible type are:
1 : local tax apply on products and services without vat (vat is not applied on local tax)
2 : local tax apply on products and services before vat (vat is calculated on amount + localtax)
3 : local tax apply on products without vat (vat is not applied on local tax)
4 : local tax apply on products before vat (vat is calculated on amount + localtax)
5 : local tax apply on services without vat (vat is not applied on local tax)
6 : local tax apply on services before vat (vat is calculated on amount + localtax)
diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang
index 1c27019bce1..58df5bf983b 100644
--- a/htdocs/langs/fr_FR/admin.lang
+++ b/htdocs/langs/fr_FR/admin.lang
@@ -368,7 +368,7 @@ ExtrafieldRadio=Bouton radio
ExtrafieldParamHelpselect=La liste doit être de la forme clef,valeur
par exemple :
1,valeur1
2,valeur2
3,valeur3
...
Pour que la liste soit dépendante d'une autre :
1,valeur1|code_liste_parent:clef_parent
2,valeur2|code_liste_parent:clef_parent
ExtrafieldParamHelpcheckbox=La liste doit être de la forme clef,valeur
par exemple :
1,valeur1
2,valeur2
3,valeur3
...
ExtrafieldParamHelpradio=La liste doit être de la forme clef,valeur
par exemple :
1,valeur1
2,valeur2
3,valeur3
...
-ExtrafieldParamHelpsellist=La liste vient d'une table
par exemple :
c_typent:libelle:id
Pour que la liste soit dépendante d'une autre :
c_typent:libelle:id:code_liste_parent|colonne_parent
+ExtrafieldParamHelpsellist=La liste vient d'une table
par exemple :
c_typent:libelle:id::filter
Pour que la liste soit dépendante d'une autre :
c_typent:libelle:id:code_liste_parent|colonne_parent:filter
filter peux être un test simple active=1 pour ne proposer que les valeur active
si vous voulez faire un filtre sur des attributs supplémentaires utiliser la syntax extra.champ=...(où champ est la code de l'attribut supplémentaire)
LibraryToBuildPDF=Bibliothèque utilisée pour la génération des PDF
WarningUsingFPDF=Attention : votre fichier
conf.php contient la directive
dolibarr_pdf_force_fpdf=1. Cela signifie que vous utilisez la librairie FPDF pour générer vos fichiers PDF. Cette librairie est ancienne et ne couvre pas de nombreuses fonctionnalités (Unicode, transparence des images, langues cyrilliques, arabes ou asiatiques...), aussi vous pouvez rencontrer des problèmes durant la génération des PDF.
Pour résoudre cela et avoir une prise en charge complète de PDF, vous pouvez télécharger la
bibliothèque TCPDF puis commenter ou supprimer la ligne
$dolibarr_pdf_force_fpdf=1, et ajouter à la place
$dolibarr_lib_TCPDF_PATH='chemin_vers_TCPDF'
LocalTaxDesc=Certains pays appliquent 2 voire 3 taux sur chaque ligne de facture. Si c'est le cas, choisissez le type du deuxième et troisième taux et sa valeur. Les types possibles sont:
1 : taxe locale sur les produits et services hors tva (la tva n'est pas appliquée sur la taxe locale)
2 : taxe locale sur les produits et services avant tva (la tva est appliquée sur le montant + la taxe locale)
3 : taxe locale uniquement sur les produits hors tva (la tva n'est pas appliquée sur la taxe locale)
4 : taxe locale uniquement sur les produits avant tva (la tva est appliquée sur le montant + la taxe locale)
5 : taxe locale uniquement sur les services hors tva (la tva n'est pas appliquée sur la taxe locale)
6 : taxe locale uniquement sur les service avant tva (la tva est appliquée sur le montant + la taxe locale)
diff --git a/htdocs/product/document.php b/htdocs/product/document.php
index 0adff43ac47..22de2273820 100644
--- a/htdocs/product/document.php
+++ b/htdocs/product/document.php
@@ -4,6 +4,7 @@
* Copyright (C) 2005 Marc Barilley / Ocebo
* Copyright (C) 2005-2012 Regis Houssin
* Copyright (C) 2005 Simon TOSSER
+ * Copyright (C) 2013 Florian Henry
*
* 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
@@ -46,6 +47,9 @@ $fieldtype = (! empty($ref) ? 'ref' : 'rowid');
if ($user->societe_id) $socid=$user->societe_id;
$result=restrictedArea($user,'produit|service',$fieldvalue,'product&product','','',$fieldtype);
+// Initialize technical object to manage hooks of thirdparties. Note that conf->hooks_modules contains array array
+$hookmanager->initHooks(array('productdocuments'));
+
// Get parameters
$sortfield = GETPOST("sortfield",'alpha');
$sortorder = GETPOST("sortorder",'alpha');
@@ -68,6 +72,10 @@ if ($id > 0 || ! empty($ref))
}
$modulepart='produit';
+$parameters=array('id'=>$id);
+$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks
+
+
/*
* Action envoie fichier
*/
@@ -106,6 +114,8 @@ if ($object->id)
$picto=($object->type==1?'service':'product');
dol_fiche_head($head, 'documents', $titre, 0, $picto);
+ $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook
+
// Construit liste des fichiers
$filearray=dol_dir_list($upload_dir,"files",0,'','\.meta$',$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1);
diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php
index 162550a162b..96863a078d8 100644
--- a/htdocs/societe/class/societe.class.php
+++ b/htdocs/societe/class/societe.class.php
@@ -1518,22 +1518,22 @@ class Societe extends CommonObject
}
if ($mode == 2)
{
- if ($statut==0) return img_picto($langs->trans("ActivityCeased"),'statut6').' '.$langs->trans("ActivityCeased");
+ if ($statut==0) return img_picto($langs->trans("ActivityCeased"),'statut8').' '.$langs->trans("ActivityCeased");
if ($statut==1) return img_picto($langs->trans("InActivity"),'statut4').' '.$langs->trans("InActivity");
}
if ($mode == 3)
{
- if ($statut==0) return img_picto($langs->trans("ActivityCeased"),'statut6');
+ if ($statut==0) return img_picto($langs->trans("ActivityCeased"),'statut8');
if ($statut==1) return img_picto($langs->trans("InActivity"),'statut4');
}
if ($mode == 4)
{
- if ($statut==0) return img_picto($langs->trans("ActivityCeased"),'statut6').' '.$langs->trans("ActivityCeased");
+ if ($statut==0) return img_picto($langs->trans("ActivityCeased"),'statut8').' '.$langs->trans("ActivityCeased");
if ($statut==1) return img_picto($langs->trans("InActivity"),'statut4').' '.$langs->trans("InActivity");
}
if ($mode == 5)
{
- if ($statut==0) return $langs->trans("ActivityCeased").' '.img_picto($langs->trans("ActivityCeased"),'statut6');
+ if ($statut==0) return $langs->trans("ActivityCeased").' '.img_picto($langs->trans("ActivityCeased"),'statut8');
if ($statut==1) return $langs->trans("InActivity").' '.img_picto($langs->trans("InActivity"),'statut4');
}
}