diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index e17940379bf..eb4278cb528 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -1360,11 +1360,20 @@ if ($action == 'create') foreach($extrafields->attribute_label as $key=>$label) { $value=(isset($_POST["options_".$key])?$_POST["options_".$key]:$object->array_options["options_".$key]); - print 'attribute_required[$key])) print ' class="fieldrequired"'; - print '>'.$label.''; - print $extrafields->showInputField($key,$value); - print ''."\n"; + + // Show separator only + if ($extrafields->attribute_type[$key] == 'separate') + { + print $extrafields->showSeparator($key); + } + else + { + print 'attribute_required[$key])) print ' class="fieldrequired"'; + print '>'.$label.''; + print $extrafields->showInputField($key,$value); + print ''."\n"; + } } } @@ -1854,19 +1863,25 @@ else foreach($extrafields->attribute_label as $key=>$label) { $value=(isset($_POST["options_".$key])?$_POST["options_".$key]:$object->array_options["options_".$key]); - print 'attribute_required[$key])) print ' class="fieldrequired"'; - print '>'.$label.''; - if ($action == 'edit_extras' && $user->rights->propal->creer) - { - print $extrafields->showInputField($key,$value); - } - else - { - print $extrafields->showOutputField($key,$value); - } - - print ''."\n"; + if ($extrafields->attribute_type[$key] == 'separate') + { + print $extrafields->showSeparator($key); + } + else + { + print 'attribute_required[$key])) print ' class="fieldrequired"'; + print '>'.$label.''; + if ($action == 'edit_extras' && $user->rights->propal->creer) + { + print $extrafields->showInputField($key,$value); + } + else + { + print $extrafields->showOutputField($key,$value); + } + print ''."\n"; + } } if(count($extrafields->attribute_label) > 0) { diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 6b0cd0dfb93..96fca70af4c 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -2101,11 +2101,19 @@ if ($action == 'create') foreach($extrafields->attribute_label as $key=>$label) { $value=(isset($_POST["options_".$key])?$_POST["options_".$key]:$object->array_options["options_".$key]); - print 'attribute_required[$key])) print ' class="fieldrequired"'; - print '>'.$label.''; - print $extrafields->showInputField($key,$value); - print ''."\n"; + // Show separator only + if ($extrafields->attribute_type[$key] == 'separate') + { + print $extrafields->showSeparator($key); + } + else + { + print 'attribute_required[$key])) print ' class="fieldrequired"'; + print '>'.$label.''; + print $extrafields->showInputField($key,$value); + print ''."\n"; + } } } @@ -3090,24 +3098,30 @@ else if ($id > 0 || ! empty($ref)) foreach($extrafields->attribute_label as $key=>$label) { $value=(isset($_POST["options_".$key])?$_POST["options_".$key]:$object->array_options["options_".$key]); - print 'attribute_required[$key])) print ' class="fieldrequired"'; - print '>'.$label.''; - if ($action == 'edit_extras' && $user->rights->propal->creer) + if ($extrafields->attribute_type[$key] == 'separate') { - print $extrafields->showInputField($key,$value); + print $extrafields->showSeparator($key); } else { - print $extrafields->showOutputField($key,$value); + print 'attribute_required[$key])) print ' class="fieldrequired"'; + print '>'.$label.''; + if ($action == 'edit_extras' && $user->rights->facture->creer) + { + print $extrafields->showInputField($key,$value); + } + else + { + print $extrafields->showOutputField($key,$value); + } + print ''."\n"; } - - print ''."\n"; } if(count($extrafields->attribute_label) > 0) { - if ($action == 'edit_extras' && $user->rights->propal->creer) + if ($action == 'edit_extras' && $user->rights->facture->creer) { print ''; print ''; @@ -3116,7 +3130,7 @@ else if ($id > 0 || ! empty($ref)) } else { - if ($object->statut == 0 && $user->rights->propal->creer) + if ($object->statut == 0 && $user->rights->facture->creer) { print ''.img_picto('','edit').' '.$langs->trans('Modify').''; } diff --git a/htdocs/contact/fiche.php b/htdocs/contact/fiche.php index 2f1f0613740..885711bb526 100644 --- a/htdocs/contact/fiche.php +++ b/htdocs/contact/fiche.php @@ -521,11 +521,18 @@ else foreach($extrafields->attribute_label as $key=>$label) { $value=(isset($_POST["options_".$key])?$_POST["options_".$key]:(isset($object->array_options["options_".$key])?$object->array_options["options_".$key]:'')); - print 'attribute_required[$key])) print ' class="fieldrequired"'; - print '>'.$label.''; - print $extrafields->showInputField($key,$value); - print ''."\n"; + if ($extrafields->attribute_type[$key] == 'separate') + { + print $extrafields->showSeparator($key); + } + else + { + print 'attribute_required[$key])) print ' class="fieldrequired"'; + print '>'.$label.''; + print $extrafields->showInputField($key,$value); + print ''."\n"; + } } } @@ -736,11 +743,18 @@ else foreach($extrafields->attribute_label as $key=>$label) { $value=(isset($_POST["options_".$key])?$_POST["options_".$key]:$object->array_options["options_".$key]); - print 'attribute_required[$key])) print ' class="fieldrequired"'; - print '>'.$label.''; - print $extrafields->showInputField($key,$value); - print "\n"; + if ($extrafields->attribute_type[$key] == 'separate') + { + print $extrafields->showSeparator($key); + } + else + { + print 'attribute_required[$key])) print ' class="fieldrequired"'; + print '>'.$label.''; + print $extrafields->showInputField($key,$value); + print "\n"; + } } } @@ -948,9 +962,16 @@ else foreach($extrafields->attribute_label as $key=>$label) { $value=(isset($_POST["options_".$key])?$_POST["options_".$key]:(isset($object->array_options['options_'.$key])?$object->array_options['options_'.$key]:'')); - print ''.$label.''; - print $extrafields->showOutputField($key,$value); - print "\n"; + if ($extrafields->attribute_type[$key] == 'separate') + { + print $extrafields->showSeparator($key); + } + else + { + print ''.$label.''; + print $extrafields->showOutputField($key,$value); + print "\n"; + } } } diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 50bd564e8d9..26b8a0c5826 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -2138,21 +2138,27 @@ abstract class CommonObject $sql = "INSERT INTO ".MAIN_DB_PREFIX.$this->table_element."_extrafields (fk_object"; foreach($this->array_options as $key => $value) { + $attributeKey = substr($key,8); // Remove 'options_' prefix // Add field of attribut - $sql.=",".substr($key,8); // Remove 'options_' prefix + if ($extrafields->attribute_type[$attributeKey] != 'separate') // Only for other type of separate + $sql.=",".$attributeKey; } $sql .= ") VALUES (".$this->id; foreach($this->array_options as $key => $value) { + $attributeKey = substr($key,8); // Remove 'options_' prefix // Add field o fattribut - if ($this->array_options[$key] != '') - { - $sql.=",'".$this->array_options[$key]."'"; - } - else - { - $sql.=",null"; - } + if($extrafields->attribute_type[$attributeKey] != 'separate') // Only for other type of separate) + { + if ($this->array_options[$key] != '') + { + $sql.=",'".$this->array_options[$key]."'"; + } + else + { + $sql.=",null"; + } + } } $sql.=")"; diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php index de828e8a237..5b12672f6ce 100755 --- a/htdocs/core/class/extrafields.class.php +++ b/htdocs/core/class/extrafields.class.php @@ -63,7 +63,8 @@ class ExtraFields 'price'=>'ExtrafieldPrice', 'phone'=>'ExtrafieldPhone', 'mail'=>'ExtrafieldMail', - 'select' => 'ExtrafieldSelect' + 'select' => 'ExtrafieldSelect', + 'separate' => 'ExtrafieldSeparator' ); /** @@ -102,11 +103,13 @@ class ExtraFields if (empty($attrname)) return -1; if (empty($label)) return -1; - - // Create field into database - $result=$this->create($attrname,$type,$size,$elementtype, $unique, $required, $default_value,$param); + // Create field into database except for separator type which is not stored in database + if ($type != 'separate') + { + $result=$this->create($attrname,$type,$size,$elementtype, $unique, $required, $default_value,$param); + } $err1=$this->errno; - if ($result > 0 || $err1 == 'DB_ERROR_COLUMN_ALREADY_EXISTS') + if ($result > 0 || $err1 == 'DB_ERROR_COLUMN_ALREADY_EXISTS' || $type == 'separate') { // Add declaration of field into table $result2=$this->create_label($attrname,$label,$type,$pos,$size,$elementtype, $unique, $required, $param); @@ -354,7 +357,6 @@ class ExtraFields function update($attrname,$label,$type,$length,$elementtype,$unique=0,$required=0,$pos,$param='') { $table=$elementtype.'_extrafields'; - // Special case for not normalized table names if ($elementtype == 'member') $table='adherent_extrafields'; elseif ($elementtype == 'company') $table='societe_extrafields'; @@ -382,8 +384,12 @@ class ExtraFields $lengthdb=$length; } $field_desc = array('type'=>$typedb, 'value'=>$lengthdb, 'null'=>($required?'NOT NULL':'NULL')); - $result=$this->db->DDLUpdateField(MAIN_DB_PREFIX.$table, $attrname, $field_desc); - if ($result > 0) + + if ($type != 'separate') // No table update when separate type + { + $result=$this->db->DDLUpdateField(MAIN_DB_PREFIX.$table, $attrname, $field_desc); + } + if ($result > 0 || $type == 'separate') { if ($label) { @@ -546,8 +552,13 @@ class ExtraFields { while ($tab = $this->db->fetch_object($resql)) { + // we can add this attribute to adherent object - $array_name_label[$tab->name]=$tab->label; + if ($tab->type != 'separate') + { + $array_name_label[$tab->name]=$tab->label; + } + $this->attribute_type[$tab->name]=$tab->type; $this->attribute_label[$tab->name]=$tab->label; $this->attribute_size[$tab->name]=$tab->size; @@ -730,5 +741,16 @@ class ExtraFields return $out; } + /** + * Return HTML string to print separator extrafield + * + * @param string $key Key of attribute + * @return string + */ + function showSeparator($key) + { + $out = ''.$this->attribute_label[$key].''; + return $out; + } } ?> diff --git a/htdocs/core/tpl/admin_extrafields_add.tpl.php b/htdocs/core/tpl/admin_extrafields_add.tpl.php index d4f5cf9ae40..5be1b8baaae 100644 --- a/htdocs/core/tpl/admin_extrafields_add.tpl.php +++ b/htdocs/core/tpl/admin_extrafields_add.tpl.php @@ -25,11 +25,18 @@ var size = jQuery("#size"); var unique = jQuery("#unique"); var required = jQuery("#required"); + var default_value = jQuery("#default_value"); if (type == 'date') { size.val('').attr('disabled','disabled'); unique.removeAttr('disabled','disabled'); jQuery("#value_choice").hide(); } @@ -41,6 +48,7 @@ else if (type == 'boolean') { size.val('').attr('disabled','disabled'); unique.attr('disabled','disabled'); jQuery("#value_choice").hide();} else if (type == 'price') { size.val('').attr('disabled','disabled'); unique.attr('disabled','disabled'); jQuery("#value_choice").hide();} else if (type == 'select') { size.val('').attr('disabled','disabled'); unique.attr('disabled','disabled'); jQuery("#value_choice").show();} + else if (type == 'separate') { size.val('').attr('disabled','disabled'); unique.attr('disabled','disabled'); required.val('').attr('disabled','disabled'); default_value.val('').attr('disabled','disabled'); jQuery("#value_choice").hide();} else size.val('').attr('disabled','disabled'); } init_typeoffields(''); @@ -55,16 +63,16 @@ + + - - - + - + diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index ccf194dfeb0..cc768421e27 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -354,6 +354,7 @@ ExtrafieldPhone = Téléphone ExtrafieldPrice = Prix ExtrafieldMail = Email ExtrafieldSelect = Liste de sélection +ExtrafieldSeparator = Séparateur de champ 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ée (Unicode, transparence des images, langues cyrillic, arabes ou asiatiques...), aussi vous pouvez rencontrez des problèmes durant la génération des PDF.
Pour résoudre cela et avoir un support complet de PDF, vous pouvez télécharger la librairie 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 voir 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/societe/soc.php b/htdocs/societe/soc.php index b45bf5a8e59..80de6ec7146 100644 --- a/htdocs/societe/soc.php +++ b/htdocs/societe/soc.php @@ -985,20 +985,27 @@ else { $colspan='3'; $value=(isset($_POST["options_".$key])?$_POST["options_".$key]:(isset($object->array_options["options_".$key])?$object->array_options["options_".$key]:'')); - if (($e % 2) == 0) + if ($extrafields->attribute_type[$key] == 'separate') { - print ''; - $colspan='0'; - } - print 'attribute_required[$key])) print ' class="fieldrequired"'; - print '>'.$label.''; - print ''; - - if (($e % 2) == 1) print ''."\n"; - $e++; + print $extrafields->showSeparator($key); + } + else + { + if (($e % 2) == 0) + { + print ''; + $colspan='0'; + } + print 'attribute_required[$key])) print ' class="fieldrequired"'; + print '>'.$label.''; + print ''; + + if (($e % 2) == 1) print ''."\n"; + $e++; + } } } @@ -1414,25 +1421,30 @@ else { $colspan = '3'; $value=(isset($_POST["options_".$key])?$_POST["options_".$key]:$object->array_options["options_".$key]); - - if (($e % 2) == 0) + if ($extrafields->attribute_type[$key] == 'separate') { - print ''."\n"; - $colspan = '0'; + print $extrafields->showSeparator($key); } - print 'attribute_required[$key])) print ' class="fieldrequired"'; - print '>'.$label.''."\n"; - print '"."\n"; - - if (($e % 2) == 1 ) + else { - print "\n"; + if (($e % 2) == 0) + { + print ''."\n"; + $colspan = '0'; + } + print 'attribute_required[$key])) print ' class="fieldrequired"'; + print '>'.$label.''."\n"; + print '"."\n"; + + if (($e % 2) == 1 ) + { + print "\n"; + } + $e++; } - $old_pos = $extrafields->attribute_pos[$key]; - $e++; } } // Logo @@ -1753,18 +1765,25 @@ else { $colspan='3'; $value=(isset($_POST["options_".$key])?$_POST["options_".$key]:(isset($object->array_options['options_'.$key])?$object->array_options['options_'.$key]:'')); - if (($e % 2) == 0) + if ($extrafields->attribute_type[$key] == 'separate') { - print ''; - $colspan='0'; + print $extrafields->showSeparator($key); + } + else + { + if (($e % 2) == 0) + { + print ''; + $colspan='0'; + } + print ''; + print '"; + + if (($e % 2) == 1) print ''; + $e++; } - print ''; - print '"; - - if (($e % 2) == 1) print ''; - $e++; } }
trans("Type"); ?> +selectarray('type',$type2label,GETPOST('type')); ?> +
trans("Position"); ?>
trans("Label"); ?>
trans("AttributeCode"); ?> (trans("AlphaNumOnlyCharsAndNoSpace"); ?>)
trans("Type"); ?> -selectarray('type',$type2label,GETPOST('type')); ?> -
trans("AttributeCode"); ?> (trans("AlphaNumOnlyCharsAndNoSpace"); ?>)
@@ -75,7 +83,7 @@
trans("DefaultValue"); ?>">
trans("DefaultValue"); ?>">
trans("Size"); ?>
'; - print $extrafields->showInputField($key,$value); - print '
'; + print $extrafields->showInputField($key,$value); + print '
'; - print $extrafields->showInputField($key,$value); - print "
'; + print $extrafields->showInputField($key,$value); + print "
'.$label.''; + print $extrafields->showOutputField($key,$value); + print "
'.$label.''; - print $extrafields->showOutputField($key,$value); - print "