diff --git a/ChangeLog b/ChangeLog index 2ef52f1354a..c0eb78120b0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -36,7 +36,20 @@ For users: - New: Add module Opensurvey. - New: Default aprrover for holidays i sby default hierchical parent. - First change to prepare feature "click to print" (IPP) for PDF. - +- New: [ task #350 ] Merge tab customer and prospect +- New: [ task #710 ] Add substitution into mailing send (and HTML is now valid) +- New: [ task #711 ] Add combobox for contact as done for product/thirdparty +- New: [ task #714 ] In Emailing module admin autogenerate security key of READRECIEPT +- New: [ task #743 ] GED : Add aministration option to disabled autotree to display +- New: [ task #767 ] Customer Address fallback when a contact doesn't have an address +- New: [ task #768 ] WYSIWYG for all mail +- New: [ task #773 ] Add Project document in GED(ECM) modules +- New: [ task #783 ] Add checkbox and radio into extrafield feature +- New: [ task #798 ] Add range limit date on product/services as it is done on order and invoice +- New: [ task #814 ] Add extrafield feature into Project/project tasks module +- New: [ task #770 ] Add ODT document generation for Projects module +- New: [ task #741 ] Add intervention box + For translators: - Update language files. @@ -59,6 +72,8 @@ For developers: - 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 @@ -85,7 +100,10 @@ WARNING: If you used external modules, some of them may need to be upgraded due - Fix: Orderstoinvoice didn't act as expected when no order was checked - Fix: Bad link to all proposals into Third party card if customer is prospect - Fix: [ bug #789 ] VAT not being calculated in POS - +- Fix: [ bug #794 ] Lost filter on zipcode in prospect list +- Fix: [ bug #774 ] Bug on creating event with box "all day" crossed +- Fix: [ bug #810 ] Cannot update ODT template path +- Fix: [ bug #824 ] MAIN_DB_PREFIX not use into dictionnary ***** ChangeLog for 3.3.1 compared to 3.3 ***** @@ -95,6 +113,7 @@ WARNING: If you used external modules, some of them may need to be upgraded due - Fix: [ bug #736 ] Missing column in llx_c_chargesociales - Fix: Localtax2 for Spain must be based into buyer - Fix: [ bug #762 ] Bad profit calculation in Reporting +- Fix: bug dictionnary with wrong prefix table diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index 4df22736021..cf93f472019 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -139,7 +139,7 @@ $tabsql[6] = "SELECT a.id as rowid, a.code as code, a.libelle AS libelle, a.t $tabsql[7] = "SELECT a.id as rowid, a.code as code, a.libelle AS libelle, a.accountancy_code as accountancy_code, a.deductible, p.code as country_code, p.libelle as country, a.fk_pays as country_id, a.active FROM ".MAIN_DB_PREFIX."c_chargesociales AS a, ".MAIN_DB_PREFIX."c_pays as p WHERE a.fk_pays=p.rowid and p.active=1"; $tabsql[8] = "SELECT id as rowid, code, libelle, active FROM ".MAIN_DB_PREFIX."c_typent"; $tabsql[9] = "SELECT code_iso as code, label, unicode, active FROM ".MAIN_DB_PREFIX."c_currencies"; -$tabsql[10]= "SELECT t.rowid, t.taux, t.localtax1_type, t.localtax1, t.localtax2_type, t.localtax2, p.libelle as country, p.code as country_code, t.fk_pays as country_id, t.recuperableonly, t.note, t.active, t.accountancy_code_sell, t.accountancy_code_buy FROM ".MAIN_DB_PREFIX."c_tva as t, llx_c_pays as p WHERE t.fk_pays=p.rowid"; +$tabsql[10]= "SELECT t.rowid, t.taux, t.localtax1_type, t.localtax1, t.localtax2_type, t.localtax2, p.libelle as country, p.code as country_code, t.fk_pays as country_id, t.recuperableonly, t.note, t.active, t.accountancy_code_sell, t.accountancy_code_buy FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_pays as p WHERE t.fk_pays=p.rowid"; $tabsql[11]= "SELECT t.rowid as rowid, element, source, code, libelle, active FROM ".MAIN_DB_PREFIX."c_type_contact AS t"; $tabsql[12]= "SELECT c.rowid as rowid, code, sortorder, c.libelle, c.libelle_facture, nbjour, fdm, decalage, active FROM ".MAIN_DB_PREFIX.'c_payment_term AS c'; $tabsql[13]= "SELECT id as rowid, code, c.libelle, type, active FROM ".MAIN_DB_PREFIX."c_paiement AS c"; @@ -154,7 +154,7 @@ $tabsql[21]= "SELECT c.rowid as rowid, code, label, active FROM ".MAIN_DB_PREFIX $tabsql[22]= "SELECT rowid as rowid, code, label, active FROM ".MAIN_DB_PREFIX."c_input_reason"; $tabsql[23]= "SELECT rowid as rowid, fk_pcg_version, pcg_type, pcg_subtype, account_number as accountancy_code, account_parent, label, active FROM ".MAIN_DB_PREFIX."accountingaccount"; $tabsql[24]= "SELECT s.rowid as rowid, pcg_version, s.fk_pays as country_id, p.code as country_code, p.libelle as pays, s.label, s.active FROM ".MAIN_DB_PREFIX."accounting_system as s, ".MAIN_DB_PREFIX."c_pays as p WHERE s.fk_pays=p.rowid and p.active=1"; -$tabsql[25]= "SELECT t.rowid, t.taux, p.libelle as country, p.code as country_code, t.fk_pays as country_id, t.note, t.active, t.accountancy_code_sell, t.accountancy_code_buy FROM ".MAIN_DB_PREFIX."c_revenuestamp as t, llx_c_pays as p WHERE t.fk_pays=p.rowid"; +$tabsql[25]= "SELECT t.rowid, t.taux, p.libelle as country, p.code as country_code, t.fk_pays as country_id, t.note, t.active, t.accountancy_code_sell, t.accountancy_code_buy FROM ".MAIN_DB_PREFIX."c_revenuestamp as t, ".MAIN_DB_PREFIX."c_pays as p WHERE t.fk_pays=p.rowid"; // Critere de tri du dictionnaire $tabsqlsort=array(); diff --git a/htdocs/comm/action/listactions.php b/htdocs/comm/action/listactions.php index b603792b957..9e7a7a959bb 100644 --- a/htdocs/comm/action/listactions.php +++ b/htdocs/comm/action/listactions.php @@ -238,7 +238,7 @@ if ($resql) $i = 0; print '
| trans("FormatDateShortJava")."')\""; + echo " onClick=\"dpClickDay(".$mydate["year"].",parseInt('".dol_print_date($thedate,"%m")."',10),".$mydate["mday"].",'".$langs->trans("FormatDateShortJavaInput")."')\""; echo ">".sprintf("%02s",$mydate["mday"])." | "; $cols++; diff --git a/htdocs/core/get_menudiv.php b/htdocs/core/get_menudiv.php index 0d9e3c0a54b..51bda89ffd0 100644 --- a/htdocs/core/get_menudiv.php +++ b/htdocs/core/get_menudiv.php @@ -40,11 +40,6 @@ $langs->load("main"); $right=($langs->trans("DIRECTION")=='rtl'?'left':'right'); $left=($langs->trans("DIRECTION")=='rtl'?'right':'left'); -//var_dump($langs->defaultlang); -//var_dump($conf->format_date_short_java); -//var_dump($langs->trans("FormatDateShortJava")); - - /* * View diff --git a/htdocs/core/lib/functions.lib.php b/htdocs/core/lib/functions.lib.php index 7ea8087613e..46f65283a3e 100644 --- a/htdocs/core/lib/functions.lib.php +++ b/htdocs/core/lib/functions.lib.php @@ -3105,12 +3105,16 @@ function get_default_npr($thirdparty_seller, $thirdparty_buyer, $idprod=0, $idpr if ($idprodfournprice > 0) { + if (! class_exists('ProductFournisseur')) + require DOL_DOCUMENT_ROOT . '/fourn/class/fournisseur.product.class.php'; $prodprice = new ProductFournisseur($db); $prodprice->fetch_product_fournisseur_price($idprodfournprice); return $prodprice->fourn_tva_npr; } elseif ($idprod > 0) { + if (! class_exists('Product')) + require DOL_DOCUMENT_ROOT . '/product/class/product.class.php'; $prod = new Product($db); $prod->fetch($idprod); return $prod->tva_npr; diff --git a/htdocs/core/modules/modCron.class.php b/htdocs/core/modules/modCron.class.php index 7f17b07503e..2080767e00c 100644 --- a/htdocs/core/modules/modCron.class.php +++ b/htdocs/core/modules/modCron.class.php @@ -25,6 +25,7 @@ */ include_once DOL_DOCUMENT_ROOT .'/core/modules/DolibarrModules.class.php'; + /** * Class to describe a Cron module */ @@ -122,8 +123,8 @@ class modCron extends DolibarrModules $r=0; $this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=home,fk_leftmenu=modulesadmintools', // Use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode 'type'=>'left', // This is a Left menu entry - 'titre'=>'CronListActive', - 'url'=>'/cron/list.php?status=1', + 'titre'=>'CronList', + 'url'=>'/cron/list.php?status=-1', 'langs'=>'cron', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. 'position'=>200, 'enabled'=>'$leftmenu==\'modulesadmintools\'', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected. @@ -131,18 +132,6 @@ class modCron extends DolibarrModules 'target'=>'', 'user'=>2); // 0=Menu for internal users, 1=external users, 2=both $r++; - - $this->menu[$r]=array( 'fk_menu'=>'fk_mainmenu=home,fk_leftmenu=modulesadmintools', // Use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode - 'type'=>'left', // This is a Left menu entry - 'titre'=>'CronListInactive', - 'url'=>'/cron/list.php?status=0', - 'langs'=>'cron', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. - 'position'=>201, - 'enabled'=>'$leftmenu==\'modulesadmintools\'', // Define condition to show or hide menu entry. Use '$conf->mymodule->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected. - 'perms'=>'$user->rights->cron->read', // Use 'perms'=>'$user->rights->mymodule->level1->level2' if you want your menu with a permission rules - 'target'=>'', - 'user'=>2); // 0=Menu for internal users, 1=external users, 2=both - $r++; } diff --git a/htdocs/core/modules/modFicheinter.class.php b/htdocs/core/modules/modFicheinter.class.php index 96c0b6b012a..52a90179b95 100644 --- a/htdocs/core/modules/modFicheinter.class.php +++ b/htdocs/core/modules/modFicheinter.class.php @@ -89,6 +89,7 @@ class modFicheinter extends DolibarrModules // Boites $this->boxes = array(); + $this->boxes[0][1] = "box_ficheinter.php"; // Permissions $this->rights = array(); diff --git a/htdocs/core/search_page.php b/htdocs/core/search_page.php index 3cab48155ae..fe21a82c56f 100644 --- a/htdocs/core/search_page.php +++ b/htdocs/core/search_page.php @@ -40,11 +40,6 @@ $langs->load("main"); $right=($langs->trans("DIRECTION")=='rtl'?'left':'right'); $left=($langs->trans("DIRECTION")=='rtl'?'right':'left'); -//var_dump($langs->defaultlang); -//var_dump($conf->format_date_short_java); -//var_dump($langs->trans("FormatDateShortJava")); - - /* * View diff --git a/htdocs/cron/class/cronjob.class.php b/htdocs/cron/class/cronjob.class.php index 60514e73942..454eb457517 100644 --- a/htdocs/cron/class/cronjob.class.php +++ b/htdocs/cron/class/cronjob.class.php @@ -393,10 +393,9 @@ class Cronjob extends CommonObject $sql.= " t.note,"; $sql.= " t.nbrun"; - $sql.= " FROM ".MAIN_DB_PREFIX."cronjob as t"; - $status = (empty($status))?'0':'1'; - $sql.= " WHERE t.status=".$status; + $sql.= " WHERE 1 = 1"; + if ($status >= 0) $sql.= " AND t.status = ".(empty($status)?'0':'1'); //Manage filter if (is_array($filter) && count($filter)>0) { foreach($filter as $key => $value) { @@ -404,7 +403,6 @@ class Cronjob extends CommonObject } } - $sql.= " ORDER BY $sortfield $sortorder "; if (!empty($limit) && !empty($offset)) { $sql.= $this->db->plimit($limit + 1,$offset); @@ -836,7 +834,7 @@ class Cronjob extends CommonObject $error=0; $now=dol_now(); - + $langs->load('cron'); if (empty($userlogin)) { diff --git a/htdocs/cron/list.php b/htdocs/cron/list.php index a78b037d68b..42b41d0ed4f 100644 --- a/htdocs/cron/list.php +++ b/htdocs/cron/list.php @@ -108,8 +108,9 @@ if ($action == 'confirm_execute' && $confirm == "yes" && $user->rights->cron->ex $form = new Form($db); -if (!empty($status)) $pagetitle=$langs->trans("CronListActive"); -else $pagetitle=$langs->trans("CronListInactive"); +//if (! empty($status)) $pagetitle=$langs->trans("CronListActive"); +//else $pagetitle=$langs->trans("CronListInactive"); +$pagetitle=$langs->trans("CronList"); llxHeader('',$pagetitle); @@ -155,8 +156,8 @@ if (count($object->lines)>0) { print_liste_field_titre($langs->trans("CronNbRun"),$_SERVEUR['PHP_SELF'],"t.nbrun","",$arg_url,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("CronLastResult"),$_SERVEUR['PHP_SELF'],"t.lastresult","",$arg_url,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("CronLastOutput"),$_SERVEUR['PHP_SELF'],"t.lastoutput","",$arg_url,'',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Active"),$_SERVEUR['PHP_SELF'],"t.status","",$arg_url,'align="center"',$sortfield,$sortorder); print ''; - print ' |