diff --git a/ChangeLog b/ChangeLog
index f90a1048074..7396f51c98f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -144,8 +144,44 @@ For users:
- New: [ task #900 ] Review code of ficheinter.class.php
- Fix: [Bug #958] LocalTax2 for Spain fails on Suppliers
- Fix: [ bug #972 ] Auto completion contact field do not take account the min caract number before search
-- Fix : [ bug #971 ] html.form.class.php select_contact with autocomplete do not exclude id from exclude array
+- Fix: [ bug #971 ] html.form.class.php select_contact with autocomplete do not exclude id from exclude array
+For translators:
+- Update language files.
+
+For developers:
+- System of menu managers has been rewritten to reduce code to do same things.
+- An external module can force its theme.
+- Add function dol_set_focus('#xxx').
+- A mymodule can bring its own core/modules/mymodule/modules_mymodule.php file.
+- Removed not used libraries.
+- More web services.
+- Renamed some database fields, code variables and parameters from french to english.
+- First change to manage margins on contracts.
+- Add hook getFormMail.
+- Function plimit of databases drivers accept -1 as value (it means default value set
+ into conf->liste_limit).
+- New: Add option dol_hide_topmenu, dol_hide_leftmenu, dol_optimize_smallscreen,
+ dol_no_mouse_hover and dol_use_jmobile onto login page (to support different terminal).
+- New: dol_syslog method accept a suffix to use different log files for log.
+- New: Type of fields are received by export format handlers.
+- New: when adding an action, we can define a free code to tag it for a specific need.
+- New: Enhance Dolibarr migration process to include migration script of external
+ modules.
+- New: [ task #811 ] Uniformanize note field.
+
+
+WARNING: If you used external modules, some of them may need to be upgraded due to:
+- Fields of classes were renamed to be normalized (nom, prenom, cp, ville, adresse, tel
+ were renamed into lastname, firstname, zip, town, address, phone).
+ This may also be true for some fields into web services.
+- If module use hook pdf_writelinedesc, module may have to add return 1 at end of
+ function to keep same behaviour.
+
+TODO:
+backport commit 53672dff75f4fdaeeed037ff9d15f860968022ca to fix confirm with jmobile
+backport commit 384e3812eb73a15adafb472cacfb93397a54459b to fix W3C/edit contract
+
***** ChangeLog for 3.3.4 compared to 3.3.3 *****
diff --git a/htdocs/core/modules/export/export_excel.modules.php b/htdocs/core/modules/export/export_excel.modules.php
index 85e765c2fb3..5a3f333577c 100644
--- a/htdocs/core/modules/export/export_excel.modules.php
+++ b/htdocs/core/modules/export/export_excel.modules.php
@@ -178,6 +178,17 @@ class ExportExcel extends ModeleExports
{
require_once PHPEXCEL_PATH.'PHPExcel.php';
require_once PHPEXCEL_PATH.'PHPExcel/Style/Alignment.php';
+
+ if ($this->id == 'excel2007')
+ {
+ if (! class_exists('ZipArchive')) // For Excel2007, PHPExcel need ZipArchive
+ {
+ $langs->load("errors");
+ $this->error=$langs->trans('ErrorPHPNeedModule','zip');
+ return -1;
+ }
+ }
+
$this->workbook = new PHPExcel();
$this->workbook->getProperties()->setCreator($user->getFullName($outputlangs).' - Dolibarr '.DOL_VERSION);
//$this->workbook->getProperties()->setLastModifiedBy('Dolibarr '.DOL_VERSION);
diff --git a/htdocs/core/modules/modBanque.class.php b/htdocs/core/modules/modBanque.class.php
index 11551fcb8d0..1d682edf9a2 100644
--- a/htdocs/core/modules/modBanque.class.php
+++ b/htdocs/core/modules/modBanque.class.php
@@ -165,25 +165,24 @@ class modBanque extends DolibarrModules
$this->export_code[$r]=$this->rights_class.'_'.$r;
$this->export_label[$r]='Bordereaux remise Chq/Fact';
$this->export_permission[$r]=array(array("banque","export"));
- $this->export_fields_array[$r]=array('ba.ref'=>'AccountRef','ba.label'=>'AccountLabel','b.datev'=>'DateValue','b.num_chq'=>'ChequeOrTransferNumber','b.amount'=>'Credit','b.num_releve'=>'AccountStatement','b.datec'=>"DateCreation",
- "bu.url_id"=>"IdThirdParty","s.nom"=>"ThirdParty","bch.date_bordereau"=>"DateBordereau","bch.number"=>"NumeroBordereau","bch.ref_ext"=>"RefExt","bch.amount"=>"TotalBordereau","bch.nbcheque"=>"NbCheque","f.facnumber"=>"NumFacture"
+ $this->export_fields_array[$r]=array("bch.number"=>"Numero","bch.ref_ext"=>"RefExt",'ba.ref'=>'AccountRef','ba.label'=>'AccountLabel','b.datev'=>'DateValue','b.num_chq'=>'ChequeOrTransferNumber','b.amount'=>'Credit','b.num_releve'=>'AccountStatement','b.datec'=>"DateCreation",
+ "bch.date_bordereau"=>"Date","bch.amount"=>"Total","bch.nbcheque"=>"NbCheque","bu.url_id"=>"IdThirdParty","s.nom"=>"ThirdParty","f.facnumber"=>"InvoiceRef"
);
$this->export_TypeFields_array[$r]=array('ba.ref'=>'Text','ba.label'=>'Text','b.datev'=>'Date','b.num_chq'=>'Text','b.amount'=>'Number','b.num_releve'=>'Text','b.datec'=>"Date",
- "bu.url_id"=>"Text","s.nom"=>"Text","bch.date_bordereau"=>"Date","bch.number"=>"Number","bch.ref_ext"=>"Text","bch.amount"=>"Number","bch.nbcheque"=>"NumBer","f.facnumber"=>"Text"
+ "bch.date_bordereau"=>"Date","bch.number"=>"Number","bch.ref_ext"=>"Text","bch.amount"=>"Number","bch.nbcheque"=>"NumBer","bu.url_id"=>"Text","s.nom"=>"Text","f.facnumber"=>"Text"
);
$this->export_entities_array[$r]=array('ba.ref'=>'account','ba.label'=>'account','b.datev'=>'account','b.num_chq'=>'account','b.amount'=>'account','b.num_releve'=>'account','b.datec'=>"account",
- "bu.url_id"=>"company","s.nom"=>"company","s.code_compta"=>"company","s.code_compta_fournisseur"=>"company","f.facnumber"=>"bill");
+ "bu.url_id"=>"company","s.nom"=>"company","s.code_compta"=>"company","s.code_compta_fournisseur"=>"company","f.facnumber"=>"invoice");
$this->export_special_array[$r]=array('b.amount'=>'NULLIFNEG');
$this->export_sql_start[$r]='SELECT DISTINCT ';
- $this->export_sql_end[$r] =' FROM ('.MAIN_DB_PREFIX.'bank_account as ba, '.MAIN_DB_PREFIX.'bank as b)';
+ $this->export_sql_end[$r] =' FROM ('.MAIN_DB_PREFIX.'bordereau_cheque as bch, '.MAIN_DB_PREFIX.'bank_account as ba, '.MAIN_DB_PREFIX.'bank as b)';
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX."bank_url as bu ON (bu.fk_bank = b.rowid AND bu.type = 'company')";
- $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'societe as s ON bu.url_id = s.rowid';
- $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'bordereau_cheque as bch ON (bch.rowid = b.fk_bordereau and bch.fk_bank_account=ba.rowid)';
- $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiement as p ON b.rowid = p.fk_bank ';
- $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiement_facture as pf ON p.rowid = pf.fk_paiement ';
- $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'facture as f ON f.rowid = pf.fk_facture ';
- $this->export_sql_end[$r] .=' WHERE ba.rowid = b.fk_account';
+ $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiement as p ON b.rowid = p.fk_bank';
+ $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'paiement_facture as pf ON p.rowid = pf.fk_paiement';
+ $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'facture as f ON f.rowid = pf.fk_facture';
+ $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'societe as s ON f.fk_soc = s.rowid';
+ $this->export_sql_end[$r] .=' WHERE ba.rowid = b.fk_account AND bch.rowid = b.fk_bordereau and bch.fk_bank_account=ba.rowid';
$this->export_sql_end[$r] .=' AND b.fk_type = "CHQ"';
$this->export_sql_end[$r] .=' AND p.fk_paiement = 7';
$this->export_sql_end[$r] .=' AND ba.entity = '.$conf->entity;
diff --git a/htdocs/langs/en_US/agenda.lang b/htdocs/langs/en_US/agenda.lang
index c0db78b409c..4bf19f453b8 100644
--- a/htdocs/langs/en_US/agenda.lang
+++ b/htdocs/langs/en_US/agenda.lang
@@ -78,4 +78,4 @@ ExtSitesEnableThisTool=Show external calendars into agenda
ExtSitesNbOfAgenda=Number of calendars
AgendaExtNb=Calendar nb %s
ExtSiteUrlAgenda=URL to access .ical file
-ExtSiteNoLabel=No Description
\ No newline at end of file
+ExtSiteNoLabel=No Description
diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang
index 913f8f71b5a..7c182f17360 100644
--- a/htdocs/langs/en_US/errors.lang
+++ b/htdocs/langs/en_US/errors.lang
@@ -125,6 +125,7 @@ ErrorToConnectToMysqlCheckInstance=Connect to database fails. Check Mysql server
ErrorFailedToAddContact=Failed to add contact
ErrorDateMustBeBeforeToday=The date can not be greater than today
ErrorPaymentModeDefinedToWithoutSetup=A payment mode was set to type %s but setup of module Invoice was not completed to define information to show for this payment mode.
+ErrorPHPNeedModule=Error, your PHP must have module %s installed to use this feature.
# Warnings
WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined
diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang
index 70ae324d46b..d133620fb16 100644
--- a/htdocs/langs/fr_FR/errors.lang
+++ b/htdocs/langs/fr_FR/errors.lang
@@ -125,6 +125,7 @@ ErrorToConnectToMysqlCheckInstance=Echec de la connection au serveur de base de
ErrorFailedToAddContact=Echec à l'ajout du contact
ErrorDateMustBeBeforeToday=La date ne peut pas être supérieure à aujourd'hui
ErrorPaymentModeDefinedToWithoutSetup=Un mode de paiement a été défini de type %s mais la configuration du module Facture n'a pas été complété pour définir les informations afficher pour ce mode de paiment.
+ErrorPHPNeedModule=Erreur, votre PHP doit avoir le module %s installé pour utiliser cette fonctionnalité.
# Warnings
WarningMandatorySetupNotComplete=Les informations de configuration obligatoire doivent être renseignées