From 4f4c6d904ef03cf03c54fd84519be5107062915b Mon Sep 17 00:00:00 2001 From: Bahfir Abbes Date: Sun, 20 Dec 2015 13:37:46 +0100 Subject: [PATCH 001/116] Update edit.php allow cherry-pick of a sub-menu by changing its parent identifier --- htdocs/admin/menus/edit.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/admin/menus/edit.php b/htdocs/admin/menus/edit.php index f4f1bbb96bf..60fc9758987 100644 --- a/htdocs/admin/menus/edit.php +++ b/htdocs/admin/menus/edit.php @@ -75,6 +75,7 @@ if ($action == 'update') $menu->perms=$_POST['perms']; $menu->target=$_POST['target']; $menu->user=$_POST['user']; + $menu->fk_menu=$_POST['fk_menu']; $result=$menu->update($user); if ($result > 0) { @@ -415,7 +416,7 @@ elseif ($action == 'edit') print ''.$langs->trans('Type').''.$langs->trans(ucfirst($menu->type)).''.$langs->trans('DetailType').''; // MenuId Parent - print ''.$langs->trans('MenuIdParent').''; + print ''; //$menu_handler //print ''; print ''.$menu->fk_menu.''; From 61ef9921bd3e8f6a0ea5223b61323b3494f8c25c Mon Sep 17 00:00:00 2001 From: Bahfir Abbes Date: Sun, 27 Dec 2015 17:50:29 +0100 Subject: [PATCH 002/116] correction of precedent commit I do not kow how I deleted a line instead of another. Sorry for it. Hope it's resolved --- htdocs/admin/menus/edit.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/menus/edit.php b/htdocs/admin/menus/edit.php index 60fc9758987..e29b47daeab 100644 --- a/htdocs/admin/menus/edit.php +++ b/htdocs/admin/menus/edit.php @@ -416,10 +416,10 @@ elseif ($action == 'edit') print ''.$langs->trans('Type').''.$langs->trans(ucfirst($menu->type)).''.$langs->trans('DetailType').''; // MenuId Parent + print ''.$langs->trans('MenuIdParent').''; print ''; //$menu_handler //print ''; - print ''.$menu->fk_menu.''; print ''.$langs->trans('DetailMenuIdParent').''; // Niveau From 0467dac43d22fcb5f5c23d756c449ee1a2e321f0 Mon Sep 17 00:00:00 2001 From: Sergio Sanchis Climent Date: Tue, 5 Jan 2016 09:47:14 +0100 Subject: [PATCH 003/116] Fix userlocaltax Is posible userlocaltax1_rate or userlocaltax2_rate have value 0.0000 and no enter in if, now check if diferent 0 and now enter --- htdocs/core/lib/price.lib.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/core/lib/price.lib.php b/htdocs/core/lib/price.lib.php index 528abfcd6a5..be392fcad91 100644 --- a/htdocs/core/lib/price.lib.php +++ b/htdocs/core/lib/price.lib.php @@ -170,7 +170,7 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt if ($type == 1) $apply_tax = true; break; } - if ($uselocaltax1_rate && $apply_tax) { + if ($uselocaltax1_rate!=0 && $apply_tax) { $result[14] = price2num(($tot_sans_remise_wt * (1 + ( $localtax1_rate / 100))) - $tot_sans_remise_wt, 'MT'); $localtaxes[0] += $result[14]; @@ -193,7 +193,7 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt if ($type == 1) $apply_tax = true; break; } - if ($uselocaltax2_rate && $apply_tax) { + if ($uselocaltax2_rate!=0 && $apply_tax) { $result[15] = price2num(($tot_sans_remise_wt * (1 + ( $localtax2_rate / 100))) - $tot_sans_remise_wt, 'MT'); $localtaxes[0] += $result[15]; @@ -264,7 +264,7 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt if ($type == 1) $apply_tax = true; break; } - if ($uselocaltax1_rate && $apply_tax) { + if ($uselocaltax1_rate!=0 && $apply_tax) { $result[14] = price2num(($tot_sans_remise * (1 + ( $localtax1_rate / 100))) - $tot_sans_remise, 'MT'); // amount tax1 for total_ht_without_discount $result[8] += $result[14]; // total_ttc_without_discount + tax1 @@ -287,7 +287,7 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt if ($type == 1) $apply_tax = true; break; } - if ($uselocaltax2_rate && $apply_tax) { + if ($uselocaltax2_rate!=0 && $apply_tax) { $result[15] = price2num(($tot_sans_remise * (1 + ( $localtax2_rate / 100))) - $tot_sans_remise, 'MT'); // amount tax2 for total_ht_without_discount $result[8] += $result[15]; // total_ttc_without_discount + tax2 From 4d7503968807f97f685401a4c75336e3bd2b9817 Mon Sep 17 00:00:00 2001 From: Sergio Sanchis Climent Date: Thu, 7 Jan 2016 09:37:04 +0100 Subject: [PATCH 004/116] Edited correctly for check values --- htdocs/core/lib/price.lib.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/htdocs/core/lib/price.lib.php b/htdocs/core/lib/price.lib.php index be392fcad91..03eb651e4db 100644 --- a/htdocs/core/lib/price.lib.php +++ b/htdocs/core/lib/price.lib.php @@ -93,10 +93,14 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt //dol_syslog("Price.lib::calcul_price_total qty=".$qty." pu=".$pu." remiserpercent_ligne=".$remise_percent_ligne." txtva=".$txtva." uselocaltax1_rate=".$uselocaltax1_rate." uselocaltax2_rate=".$uselocaltax2_rate.' remise_percent_global='.$remise_percent_global.' price_base_type='.$ice_base_type.' type='.$type.' progress='.$progress); $countryid=$seller->country_id; + + if (is_numeric($uselocaltax1_rate)) $uselocaltax1_rate=(float) $uselocaltax1_rate; + if (is_numeric($uselocaltax2_rate)) $uselocaltax2_rate=(float) $uselocaltax2_rate; + if ($uselocaltax1_rate < 0) $uselocaltax1_rate=$seller->localtax1_assuj; if ($uselocaltax2_rate < 0) $uselocaltax2_rate=$seller->localtax2_assuj; - dol_syslog('Price.lib::calcul_price_total qty='.$qty.' pu='.$pu.' remise_percent_ligne='.$remise_percent_ligne.' txtva='.$txtva.' uselocaltax1_rate='.$uselocaltax1_rate.' uselocaltax2_rate='.$uselocaltax2_rate.' remise_percent_global='.$remise_percent_global.' price_base_type='.$ice_base_type.' type='.$type.' progress='.$progress); + dol_syslog('Price.lib::calcul_price_total qty='.$qty.' pu='.$pu.' remise_percent_ligne='.$remise_percent_ligne.' txtva='.$txtva.' uselocaltax1_rate='.$uselocaltax1_rate.' uselocaltax2_rate='.$uselocaltax2_rate.' remise_percent_global='.$remise_percent_global.' price_base_type='.$price_base_type.' type='.$type.' progress='.$progress); // Now we search localtaxes information ourself (rates and types). $localtax1_type=0; @@ -170,7 +174,7 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt if ($type == 1) $apply_tax = true; break; } - if ($uselocaltax1_rate!=0 && $apply_tax) { + if ($uselocaltax1_rate && $apply_tax) { $result[14] = price2num(($tot_sans_remise_wt * (1 + ( $localtax1_rate / 100))) - $tot_sans_remise_wt, 'MT'); $localtaxes[0] += $result[14]; @@ -193,7 +197,7 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt if ($type == 1) $apply_tax = true; break; } - if ($uselocaltax2_rate!=0 && $apply_tax) { + if ($uselocaltax2_rate && $apply_tax) { $result[15] = price2num(($tot_sans_remise_wt * (1 + ( $localtax2_rate / 100))) - $tot_sans_remise_wt, 'MT'); $localtaxes[0] += $result[15]; @@ -264,7 +268,7 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt if ($type == 1) $apply_tax = true; break; } - if ($uselocaltax1_rate!=0 && $apply_tax) { + if ($uselocaltax1_rate && $apply_tax) { $result[14] = price2num(($tot_sans_remise * (1 + ( $localtax1_rate / 100))) - $tot_sans_remise, 'MT'); // amount tax1 for total_ht_without_discount $result[8] += $result[14]; // total_ttc_without_discount + tax1 @@ -287,7 +291,7 @@ function calcul_price_total($qty, $pu, $remise_percent_ligne, $txtva, $uselocalt if ($type == 1) $apply_tax = true; break; } - if ($uselocaltax2_rate!=0 && $apply_tax) { + if ($uselocaltax2_rate && $apply_tax) { $result[15] = price2num(($tot_sans_remise * (1 + ( $localtax2_rate / 100))) - $tot_sans_remise, 'MT'); // amount tax2 for total_ht_without_discount $result[8] += $result[15]; // total_ttc_without_discount + tax2 From 236d4d777184dcdf012ff52df591f334bb911871 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 10 Jan 2016 13:05:22 +0100 Subject: [PATCH 005/116] Fix add Croatia into list of country in EEC --- htdocs/core/class/commonobject.class.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index cd3386d5d90..78f544cc8ab 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -2918,6 +2918,7 @@ abstract class CommonObject /** * Return if a country is inside the EEC (European Economic Community) + * TODO Add a field into dictionary * * @return boolean true = country inside EEC, false = country outside EEC */ @@ -2939,7 +2940,8 @@ abstract class CommonObject 'FR', // France 'GB', // United Kingdom 'GR', // Greece - 'NL', // Holland + 'HR', // Croatia + 'NL', // Holland 'HU', // Hungary 'IE', // Ireland 'IM', // Isle of Man - Included in UK @@ -2949,7 +2951,7 @@ abstract class CommonObject 'LV', // Latvia 'MC', // Monaco - Included in France 'MT', // Malta - //'NO', // Norway + //'NO', // Norway 'PL', // Poland 'PT', // Portugal 'RO', // Romania From 988c0131d211138e32f265cc470c2286b435038f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 10 Jan 2016 18:28:50 +0100 Subject: [PATCH 006/116] Fix: markRate can be 100 --- htdocs/core/tpl/objectline_edit.tpl.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/tpl/objectline_edit.tpl.php b/htdocs/core/tpl/objectline_edit.tpl.php index 4316ab0b318..2b693573df2 100644 --- a/htdocs/core/tpl/objectline_edit.tpl.php +++ b/htdocs/core/tpl/objectline_edit.tpl.php @@ -341,7 +341,7 @@ if (! empty($conf->margin->enabled)) setTimeout(function () { rate.focus() }, 50); return false; } - if (npRate == "np_markRate" && rate.val() >= 100) + if (npRate == "np_markRate" && rate.val() > 100) { alert('transnoentitiesnoconv("markRateShouldBeLesserThan100"); ?>'); e.stopPropagation(); From 217fef3d49fa608d4227708fad27deb4dee5cfdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= Date: Fri, 8 Jan 2016 06:50:16 +0100 Subject: [PATCH 007/116] FIX #4291 Correctly filter bank card GETPOSTs --- htdocs/compta/bank/card.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/compta/bank/card.php b/htdocs/compta/bank/card.php index dbe0722c77d..8a2ee5bce35 100644 --- a/htdocs/compta/bank/card.php +++ b/htdocs/compta/bank/card.php @@ -276,7 +276,7 @@ if ($action == 'create') // Label print ''.$langs->trans("LabelBankCashAccount").''; - print ''; + print ''; // Type print ''.$langs->trans("AccountType").''; @@ -477,19 +477,19 @@ if ($action == 'create') if (! empty($conf->global->MAIN_BANK_ACCOUNTANCY_CODE_ALWAYS_REQUIRED)) { print ''.$langs->trans("AccountancyCode").''; - print 'account_number).'">'; + print 'account_number).'">'; } else { print ''.$langs->trans("AccountancyCode").''; - print 'account_number).'">'; + print 'account_number).'">'; } // Accountancy journal if (! empty($conf->accounting->enabled)) { print ''.$langs->trans("AccountancyJournal").''; - print 'accountancy_journal).'">'; + print 'accountancy_journal).'">'; } print ''; From 7e1c3d9f1bcba2b16967fbb4c20f54df078febae Mon Sep 17 00:00:00 2001 From: aspangaro Date: Mon, 11 Jan 2016 21:18:12 +0100 Subject: [PATCH 008/116] Fix: #4394 Untranslated label in list of expense reports --- htdocs/expensereport/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index fe775139362..8a58541772a 100644 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -222,7 +222,7 @@ if ($resql) print_liste_field_titre($langs->trans("TotalHT"),$_SERVER["PHP_SELF"],"d.total_ht","",$param,'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("TotalVAT"),$_SERVER["PHP_SELF"],"d.total_tva","",$param,'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("TotalTTC"),$_SERVER["PHP_SELF"],"d.total_ttc","",$param,'align="right"',$sortfield,$sortorder); - print_liste_field_titre($langs->trans("Statut"),$_SERVER["PHP_SELF"],"","",$param,'align="right"',$sortfield,$sortorder); + print_liste_field_titre($langs->trans("Status"),$_SERVER["PHP_SELF"],"","",$param,'align="right"',$sortfield,$sortorder); print_liste_field_titre('',$_SERVER["PHP_SELF"],"",'','','',$sortfield,$sortorder,'maxwidthsearch '); print "\n"; From 0993ac90ebf69dc6110b30ecfa8d68b31b150fc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Tue, 12 Jan 2016 10:09:02 +0100 Subject: [PATCH 009/116] Update facture.php --- htdocs/compta/facture.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index de1cba15e17..eb3f969890b 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -3667,7 +3667,7 @@ else if ($id > 0 || ! empty($ref)) } else { - print ''; + print ''; } } From 605d830d107d0fc104dbfd6585ad8bd7311ca387 Mon Sep 17 00:00:00 2001 From: phf Date: Tue, 12 Jan 2016 11:09:47 +0100 Subject: [PATCH 010/116] FIX if we dont use SUPPLIER_ORDER_USE_HOUR_FOR_DELIVERY_DATE the hour is displayed on pdf --- htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php b/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php index 006b349c965..b881f45dab0 100644 --- a/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php +++ b/htdocs/core/modules/supplier_order/pdf/pdf_muscadet.modules.php @@ -1088,7 +1088,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders $pdf->SetTextColor(0,0,60); $usehourmin='day'; - if (empty($conf->global->SUPPLIER_ORDER_USE_HOUR_FOR_DELIVERY_DATE)) $usehourmin='dayhour'; + if (!empty($conf->global->SUPPLIER_ORDER_USE_HOUR_FOR_DELIVERY_DATE)) $usehourmin='dayhour'; if (! empty($object->date_livraison)) { $posy+=4; From 81f91487615deca5988952c4a4a095564b383176 Mon Sep 17 00:00:00 2001 From: phf Date: Wed, 13 Jan 2016 14:41:32 +0100 Subject: [PATCH 011/116] FIX can't clone event --- htdocs/comm/action/class/actioncomm.class.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index 68eb6994e5a..e91ffe18d45 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -421,6 +421,20 @@ class ActionComm extends CommonObject $this->id=0; + if (!is_object($fuser)) + { + if ($fuser > 0) + { + $u = new User($db); + $u->fetch($fuser); + $fuser = $u; + } + else + { + $fuser = $user; + } + } + // Create clone $result=$this->add($fuser); if ($result < 0) $error++; From d0aca962d69d022b7eb20ebfb6c1b4574b6a7c98 Mon Sep 17 00:00:00 2001 From: Regis Houssin Date: Wed, 13 Jan 2016 15:44:26 +0100 Subject: [PATCH 012/116] Fix: ajax error with multicompany module --- htdocs/opensurvey/wizard/index.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/htdocs/opensurvey/wizard/index.php b/htdocs/opensurvey/wizard/index.php index 68f75f3bce7..0fdde4bbe40 100644 --- a/htdocs/opensurvey/wizard/index.php +++ b/htdocs/opensurvey/wizard/index.php @@ -1,6 +1,7 @@ - * Copyright (C) 2014 Marcos García +/* Copyright (C) 2013 Laurent Destailleur + * Copyright (C) 2014 Marcos García + * Copyright (C) 2016 Regis Houssin * * 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 @@ -22,7 +23,7 @@ //if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1'); //if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL','1'); -if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); +//if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; From b8f52edf8420cf71fb42ec1e038b1838d4ad5a0f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 16 Jan 2016 10:20:14 +0100 Subject: [PATCH 013/116] FIX: Sql syntax error in doc_generic_task_odt --- .../project/task/doc/doc_generic_task_odt.modules.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php b/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php index 31172a32f43..2b60695db51 100644 --- a/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php +++ b/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php @@ -585,9 +585,9 @@ class doc_generic_task_odt extends ModelePDFTask $odfHandler->mergeSegment($listlinestaskres); } - //Time ressources + // Time ressources $sql = "SELECT t.rowid, t.task_date, t.task_duration, t.fk_user, t.note"; - $sql.= ", u.name, u.firstname"; + $sql.= ", u.lastname, u.firstname"; $sql .= " FROM ".MAIN_DB_PREFIX."projet_task_time as t"; $sql .= " , ".MAIN_DB_PREFIX."user as u"; $sql .= " WHERE t.fk_task =".$object->id; @@ -607,6 +607,7 @@ class doc_generic_task_odt extends ModelePDFTask if (!empty($row['fk_user'])) { $objectdetail=new User($this->db); $objectdetail->fetch($row['fk_user']); + // TODO Use a cache to aoid fetch for same user $row['fullcivname']=$objectdetail->getFullName($outputlangs,1); } else { $row['fullcivname']=''; From f64615da62eab4c5b4bc7ae7e4ca6a897506f685 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 16 Jan 2016 17:41:17 +0100 Subject: [PATCH 014/116] Complete demo samples --- dev/initdata/img/applepieproduct.jpg | Bin 0 -> 15410 bytes dev/initdata/img/dolidroid_114x114.png | Bin 0 -> 8406 bytes dev/initdata/img/dolidroid_512x512_en.png | Bin 0 -> 83178 bytes .../dolidroid_screenshot_home_720x1280.png | Bin 0 -> 33693 bytes dev/initdata/img/genericcustomer.png | Bin 0 -> 7472 bytes dev/initdata/img/indiancompany.png | Bin 0 -> 4229 bytes dev/initdata/img/logo_nltechno_94x100.png | Bin 0 -> 4251 bytes dev/initdata/img/nocountrycomp.png | Bin 0 -> 3761 bytes dev/initdata/img/pearpieproduct.jpg | Bin 0 -> 19420 bytes dev/initdata/img/pinkdressproduct.jpg | Bin 0 -> 18005 bytes dev/initdata/img/printcompany.png | Bin 105005 -> 20188 bytes dev/initdata/img/rolluproduct.jpg | Bin 0 -> 14319 bytes dev/initdata/img/spanishcompany.png | Bin 0 -> 6865 bytes dev/initdata/img/swisstouch.png | Bin 0 -> 5766 bytes dev/initdata/img/teclibcompany.png | Bin 0 -> 26702 bytes 15 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 dev/initdata/img/applepieproduct.jpg create mode 100644 dev/initdata/img/dolidroid_114x114.png create mode 100644 dev/initdata/img/dolidroid_512x512_en.png create mode 100644 dev/initdata/img/dolidroid_screenshot_home_720x1280.png create mode 100644 dev/initdata/img/genericcustomer.png create mode 100644 dev/initdata/img/indiancompany.png create mode 100644 dev/initdata/img/logo_nltechno_94x100.png create mode 100644 dev/initdata/img/nocountrycomp.png create mode 100644 dev/initdata/img/pearpieproduct.jpg create mode 100644 dev/initdata/img/pinkdressproduct.jpg create mode 100644 dev/initdata/img/rolluproduct.jpg create mode 100644 dev/initdata/img/spanishcompany.png create mode 100644 dev/initdata/img/swisstouch.png create mode 100644 dev/initdata/img/teclibcompany.png diff --git a/dev/initdata/img/applepieproduct.jpg b/dev/initdata/img/applepieproduct.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f63ddacc7702dbd9dd12886f5663d3ad796d6ac8 GIT binary patch literal 15410 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 literal 0 HcmV?d00001 diff --git a/dev/initdata/img/dolidroid_114x114.png b/dev/initdata/img/dolidroid_114x114.png new file mode 100644 index 0000000000000000000000000000000000000000..88c6bf0c3da46ec8c7628c24c48f2073ca1de37e GIT binary patch literal 8406 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 literal 0 HcmV?d00001 diff --git a/dev/initdata/img/dolidroid_512x512_en.png b/dev/initdata/img/dolidroid_512x512_en.png new file mode 100644 index 0000000000000000000000000000000000000000..9de25fb5ce9698fcdac2435fac43ba3909c42ea3 GIT binary patch literal 83178 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 VxA}3gu`vSvQR#IHubLm*$ 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 e$IUns`GoWp-7LDE=(9!gj;0AuCW6ZrxF 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 z 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 literal 0 HcmV?d00001 diff --git a/dev/initdata/img/pearpieproduct.jpg b/dev/initdata/img/pearpieproduct.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3eb696c54bfad7b3c3263ec559bbfcf4d2c55fc1 GIT binary patch literal 19420 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 literal 0 HcmV?d00001 diff --git a/dev/initdata/img/pinkdressproduct.jpg b/dev/initdata/img/pinkdressproduct.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f38b413f8e5ca765e8e5709884462d762cace871 GIT binary patch literal 18005 zcmb4KRa6`>mmb`T3=V_4ySuv;cXx+Di@SSqDGtTm-QB%FnL$e_QoKmF|L#8Q>n1PB zx%cGeQ7#J9U!oLpq`wlRZb8xny0K0j6TGwcI^L|vHyo(NW;O^$xOz^+1=g^Y-a6g0|uK}`kTqQ zd3t%f`m>mE3UYCP*&N;N{(b{U0}$a65E0-J5fKoPkPwkku~1P_P*8C(Fh5`s;1UuN z;Ns&GlhTqCgQ!XH@hMm+sOjh#nHY)4Svgo4IA|Fd8UC{f3=$F&Dl#e#Dk=^GF+MTF z|GWJi0sxU=bpgw8FjN3oAPgK3=I z-ZG*M{Jk%*;9{V6Z}RONZ*^IKLM z`6M^5_9(6_C?l*a*hEvItillBthvK`5+VB+(4%pBlp_xEg8xL1ChJcl*^ud#`z8Ls z+{eHpRSr@?kRXp*9v#*wrW*>w88ZRlRP`9OEY9jg51vsV#_*|%L_ZIMJ)>Z|S0YYQ zg6X-J|BPF@?`=cCjx772qq)uEEK(f)@$0$__M<&YHBIW8Wa+K z)ft!pE163T%mhOjh$QuoDtje%?J9IE*zx5yj5Mohcz=0~a9cC8WmJ(Facx*@=}^T+ zcAhGeXG(4P^bhh9@r`%NwbGJZ$~9b&WyFpdk9D&eXSl$xSUtK0nR=kZRQH^gw0%o5 z*3=|Xv>pWZSSxDC6JxWMW22ePmJoUum4Znpz>*)&#ltg}* z=h9l{FCddF>1~G46ltuP6*C3-wJN_laQ)Frz?d!6>exOoautT$r#q@OUU-YPb|OO* zT=`%Z&)I)yWlo)8CTnyZ_cVwYazp4~J%VmJBwah_Wq8VwY)D6Mo87Y5FZ_9za8@<4Th>XI6klET{aXPRx;jy)`5w^Gmcbv(b&{w0(d zEaj<%L3kW4FOdO;f}MuA8H&JkiPgq-hB8;sZyDJ?@P~D})e(w(!HQ|PK~p@S*3~=> zP(Zt!ym-2?Hg{t`4d&(Qk&{CUO8G%^+8@aR`O&6SSXYCDU6DL-&!*0r?Kdjk#V^rv z6N1OX$0eoHd#U*TX#LKo#?VlalI%8iL?w4-i3z6(c zTN_5roLN;Y`LpI%KDQeZBa1Bh4?|fer|Tv@q0>mH4k;>^z`T_<4X-;jE6%0<6q{T? z?RguIP=i@SKE|%IN9?yReQ=^WpmRM9-+gbgfXYd!)3byt3dx@r5;(t93rn;GY0|ot zgfJAM+b!TqzpvKdRm=Zo=q|((qBioUNmG>fjOdqGhnJ<)sR2s?6z`tskf*-SgzGg0 zEJ*<2GO6qPmj7uOy^2q?`9S%QCah$QSc>;yj1nRk|SPJ>7?!S z%D%ll%ls5K-b#$pJIMN%^do4EoL5_-o)Le@KSd=DjmA$%3&+G$5MzGq(hRVk&W#v3 zbiV-aMP~Q;3b_P!2WX5Qx^MM;&>E+PvtHu6M=H71(aG$@9BZ#f_t(`rXu53^=+tVB zJ`blm-ZpZ7HpwdVYH4qaf?R7rE+z?)a_hAM<!Natu~q(^@Ojf%VUjPBwZp^kB}$)V0^F zu8!THW1}xJp(tz4>0V2hSqL~481}Vks%boqwYv$d5f$`84)Zh-jTE5@OPhJ{-fOhP zrLjqm5>(w8HPlr!$E4{J1GY;ju$_&b;&#JCB#+3T^BjJ=-=Beh0Ra@D0Lpg%i>@)?$Q=^Cm?hpM?=vYT$6I_MC-f0gm|l`2J(o*Rze~!0rA9Mzhl-e; z@&2jnv?eo}gxEK>CCde}-|5!9czs}WaB`DgHjo(FDRGPeGB-6kh0-=|?N65GheOk{ zVP6_7tg6p4-D1-}iB9_Pyexd*Z8esCs*J%&SWv8ofq&Kgf|)py6+=WEIL{Q!$cFM; z!6GhdxA0E|rJ=fQ>0&aw`+6GAncA10m9UeVUh!xz0S7ui%9XT?_tg66Z_muhE}AAY zG2?i!nTDnhu})Tb_V`6(I>n{HtTGUcWvWbAV>(i%o^}&|Lobz3VJdQoBu#SM(rS<5 zfC9X5$x+z1xk$T3Z5i;Y7hp=fDcr;#7Ylubx-)f~;Y?&1XS2StRIohl>pJVu4ogqD zCA>4NhP0a0a=gO$VvPf|a9Y$5{7|m2C;N$t7zuAkcI+C*f{tezG5NJBBc^oNeE}E` zF{vGf+&G{7-Zn(Bnvkv*Fa2R|XlY^2ow*a@N@mIKHEn)b?rK{kt7+90n4@Wi;+2MZ z&%arHYe?4-*1tjn?@z8n`qS2w(K(67@DeX{v=<3}MTV3TVI#@+;~B1 z7>Nn89}T{;LGh8~rpn?eDZ&XbJxYv4UwESB^VYp!WO$M!Vfz`anl+A`5Zr3I4hUDM zT|q!dJ(b5_zx|)MClGM{|zPZ8*^1ZGI zA6+ljrf6{wx8?Y8H)QiBpuLH>>dfx(;(L`gxrKylPmsuRry{t3kJjvE$Sw}ye0+A&5 zB`ipN9@T1cH*V@+w@0$`5Zq(z^VgC#7O*afd^Dfm7aFz~Dbe?ubo%MA@gO~{&7&qn zSJNUz{X(m+Y^1&)PZIHWicV0dogiS-)%l+4l;t&T!TTcS%H;0w(i{|BF#q8)GR2%1 z$~`{QUS!8PfTgSPLQ>F=P9-&*ek5~+ zwnw|P2&ps#kW~YlYTDq(CFOCf$A?KZGToP)$CDGxJEfS zcsZsF<2m$5?DvyiNs52=FHV(d{AP{VTfu{-#Hzg%(IXuNXB_rS-xAUBqchy_y<2_i zYwgU>C;)}Mn9}+?{v{qiYS6@@tgFlXpyNc3=i*I4xLT}XfrM-6PA>6P8E`nYuie*2MkY%?s?xM9 zdE>M%yt{a63)o1IrK3A=No-*yW3Sv@&|PdfyBxZg@Yqmp{QUIiOo`j;hKJcW2e=nw z)O%Z^Vn@#;k86rJ=Y{x);)(-RSYhPBg~HLc(aG5kQ(6;qy)k@(|6+`KB$p4&4&ISoH*~xK0T{@=Fo$>c}ff(phSLUy(4o)JtOy>st zQ>xk4`FE5*XEblHtqn3v`|~LWW{Z=J-9|tgqxq$l{kFu;S?yw02GrVhvEq;M6zgB{ ztkUfV?^(&Qq^tt6pC~hSLS0jC15(u<)y{&EDJXdyS~!x^qhCU_cd(5b z^AxYYwQs#6Xf_iRyH!e;*voI;@_ITiAq%-I3rY4F2>o9c`cVb)HzkLbUKv5 z3b36iTBg5s zMR)jjeo~zd2;1bW;D^ldvF_-J9WwhS!t56J4FKUaHxFhX*gi-LD0fJ4o$7UaYA?4! zY9*cZmKEL{@&RZ`3G<7{q@hX^`)IU}Yv2j4sHbfBxRjba?$GQ{LDdpiHE}3BnX87; zKzLtx=+9jZ(V)f6$3mP4Zh@@i(DOzWRvYV{=3AXt$*@w%iiDEDRj9!LBeRTrF9s$C z<#^wt@z3O#4-VkVT~;qLMl8<0PCh#ucl(_wVirC7rnj}a46AA~>;mew z*KM4J3K^STqyGYO9n8v|h|g!gyiqIeUdK#{!)-a$i!kpa#Uzf$BP=)> z@Ih5EV~P#FSIFC3JW$T#8_5J9Gb;}bG+f((5AA8N}_aI9^AY$&q`;lfbq*-x$&rdt#zKfY-XY)?y zEgx^>=U;&L=uthOxt%$MJ$Q^*lI*UgUNdw+8#}a}fdWn0%K3~}3H=QF&~-oop^4fz zCRkDDhk{_$GKXVd;fH zPG!Z$#3*D~&E(2jHV~WQb7P)|s3mtl4@7>f?NaX;hl;l66jnTWv$*o%SsVkBoPvdv zF|x}d+swLPlw@7r`R332p99xT;W)Vv6YDqX9I8v}Ihuzi+8e>Q`jp*$V&j^8Ur9$z zK`Oi(ZEe{WMUVUfC0@weYNK*0kTPyVmeuI#krf*BR06;!*V@EioRP_PV-G6CM%uH) zQRb8s;i@y0B3r;3Jq&O3r5EX!#R>SC{YGJh|XV?(Hn-tHKN#F<`5Llqp%?i## zN1Ky;e~V|M;y9aPaX67ghH$M~ppiWGg)WZ3l*qUSt|Qq~TIER(p~u?Vx7v)cy5UD9 zIR&@U`^g^LyZ-Z`xszBw%=US*kBezsJ7<@boCt<3FRyRq&5sMAe=h0_v7AlTo}$Af z7Z%uy@?NDpQ*ZlP^C$w+L;KTPK1DVyFO|f#AggghHD)hWp_P{w;yD)u@K&5Iu~{iN zJs3(Lzld9xn~!A51&X`n;2ss$kg^ox1OI0D(<-Kf{R^)bueVQqr3MYt8y6~7S@ z82ttK^kAZx&)B642d-E3?lF(4|!T{Z08fL8% zw1F-1Jn0hzHa!+gnN^UtA|VB#?zZW$FW%j$5w*&Nq5x)K7+5(mGTlx0_c~+Kqj};! zDbu_C!OQqR<8V%-f#j%g9|CKvIPLr!w=41 zPwc=hGtg6V+?0(;+1jy@12RIj$aVDRx=SHW_;8UEDeoI}Z7r*(6TGx((6tt(P>;@Cc3!wxm34xzi0$No`kErJb z$BooeJzH8E3Irxsd|0;_IkaTh6mHN{G1@SSzOTDbIBSST^LICtcx+f?)de!!EDn60 z^dD;ix)r%EiILa*C}77UV~)K3QD77_i&)K*o-AR`5TeQOzPR#_)7xfkv`XKi# zt-9ni^nLERrdwK?HSwP=r-k@EKhs|e#2Uh@xhL+MKbnX?Fe}u{O|augioH8n?bLGU zcO53xgR9en{{l31zG!x4HwycAm+k!GWF~Fb7wMrlHJ

    QEwVf3oDPRgoJs>YPGt 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 literal 0 HcmV?d00001 diff --git a/dev/initdata/img/printcompany.png b/dev/initdata/img/printcompany.png index f3e51e3b5a78f795c822c42aa35d91965adaf627..b745fc77174e9cbf3d6e69aa7dd1a51490cff985 100644 GIT binary patch literal 20188 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

    =WWQ_^3%4@;Qzltjph&4I&h0>y)Q=MFMb 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 DaJEMr literal 105005 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 literal 0 HcmV?d00001 diff --git a/dev/initdata/img/swisstouch.png b/dev/initdata/img/swisstouch.png new file mode 100644 index 0000000000000000000000000000000000000000..49dcb0aeb6df24a179a63afa7b0c61d6e1a7e366 GIT binary patch literal 5766 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 R$Nsx3FQXz|`^7Be{{iJXaQXlM literal 0 HcmV?d00001 From ff94a5ec71503fc90b779da6cf3a1c94e69d0b11 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 17 Jan 2016 17:35:02 +0100 Subject: [PATCH 015/116] Fix missing translation key --- htdocs/langs/en_US/sms.lang | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/langs/en_US/sms.lang b/htdocs/langs/en_US/sms.lang index 4e89bb24730..70066caac96 100644 --- a/htdocs/langs/en_US/sms.lang +++ b/htdocs/langs/en_US/sms.lang @@ -49,5 +49,6 @@ SendSms=Send SMS SmsInfoCharRemain=Nb of remaining characters SmsInfoNumero= (format international ie : +33899701761) DelayBeforeSending=Delay before sending (minutes) +SmsNoPossibleSenderFound=No sender available. Check setup of your SMS provider. SmsNoPossibleRecipientFound=No target available. Check setup of your SMS provider. From c0515a469dc7c2bc369c31dd2f52dded0ec48513 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 18 Jan 2016 14:49:15 +0100 Subject: [PATCH 016/116] FIX Option to disable meteo was not set correctly in edit mode --- htdocs/admin/delais.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/admin/delais.php b/htdocs/admin/delais.php index 7239ee89a4b..b43235ca1ec 100644 --- a/htdocs/admin/delais.php +++ b/htdocs/admin/delais.php @@ -177,7 +177,7 @@ if ($action == 'edit') $var=false; print ''; - print ''.$langs->trans("MAIN_DISABLE_METEO").'' .$form->selectyesno('MAIN_DISABLE_METEO',(isset($conf->global->MAIN_DISABLE_METEO)?1:0),1) . ''; + print ''.$langs->trans("MAIN_DISABLE_METEO").'' .$form->selectyesno('MAIN_DISABLE_METEO',(empty($conf->global->MAIN_DISABLE_METEO)?0:1),1) . ''; print ''; From 7c4a9d140b7cb5c70cc5ff577175f55802898216 Mon Sep 17 00:00:00 2001 From: jfefe Date: Thu, 21 Jan 2016 11:18:29 +0100 Subject: [PATCH 017/116] Replace reserved keyword "Resource" by "DolResource" # Conflicts: # htdocs/resource/list.php --- htdocs/core/lib/functions2.lib.php | 5 + htdocs/core/tpl/resource_add.tpl.php | 2 +- htdocs/resource/add.php | 197 +++++----- htdocs/resource/card.php | 4 +- ...source.class.php => dolresource.class.php} | 10 +- .../class/html.formresource.class.php | 8 +- htdocs/resource/element_resource.php | 338 +++++++++--------- htdocs/resource/list.php | 137 ++++--- 8 files changed, 362 insertions(+), 339 deletions(-) rename htdocs/resource/class/{resource.class.php => dolresource.class.php} (99%) diff --git a/htdocs/core/lib/functions2.lib.php b/htdocs/core/lib/functions2.lib.php index f2b13d79d0f..f61b6ee4073 100644 --- a/htdocs/core/lib/functions2.lib.php +++ b/htdocs/core/lib/functions2.lib.php @@ -1882,6 +1882,11 @@ function getElementProperties($element_type) $module='ficheinter'; $subelement='fichinter'; } + if ($element_type == 'dolresource') { + $classpath = 'resource/class'; + $module='resource'; + $subelement='dolresource'; + } $classfile = strtolower($subelement); $classname = ucfirst($subelement); diff --git a/htdocs/core/tpl/resource_add.tpl.php b/htdocs/core/tpl/resource_add.tpl.php index e2add5fb266..482dad50085 100644 --- a/htdocs/core/tpl/resource_add.tpl.php +++ b/htdocs/core/tpl/resource_add.tpl.php @@ -13,7 +13,7 @@ $out .= ''; $out .= ''; $out .= ''; $out .= ''; -$out .= ''; +$out .= ''; // Place diff --git a/htdocs/resource/add.php b/htdocs/resource/add.php index 679ef545442..cf13c79560f 100644 --- a/htdocs/resource/add.php +++ b/htdocs/resource/add.php @@ -1,7 +1,7 @@ - * Copyright (C) 2015 Alexandre Spangaro - * Copyright (C) 2015 Laurent Destailleur +/* Copyright (C) 2013 Jean-François Ferry + * Copyright (C) 2015 Alexandre Spangaro + * Copyright (C) 2015 Laurent Destailleur * * 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 @@ -18,15 +18,14 @@ */ /** - * \file resource/add.php - * \ingroup resource - * \brief Page to manage resource object - * Initialy built by build_class_from_table on 2013-07-24 16:03 + * \file resource/add.php + * \ingroup resource + * \brief Page to manage resource object */ require '../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/resource/class/resource.class.php'; +require_once DOL_DOCUMENT_ROOT.'/resource/class/dolresource.class.php'; require_once DOL_DOCUMENT_ROOT.'/resource/class/html.formresource.class.php'; // Load traductions files required by page @@ -36,15 +35,15 @@ $langs->load("other"); $langs->load("resource"); // Get parameters -$id = GETPOST('id','int'); -$action = GETPOST('action','alpha'); -$cancel = GETPOST('cancel','alpha'); +$id = GETPOST('id','int'); +$action = GETPOST('action','alpha'); +$cancel = GETPOST('cancel','alpha'); if (empty($sortorder)) $sortorder="DESC"; if (empty($sortfield)) $sortfield="t.rowid"; if (empty($arch)) $arch = 0; if ($page == -1) { - $page = 0 ; + $page = 0 ; } $limit = $conf->global->limit; @@ -56,60 +55,60 @@ $pagenext = $page + 1; // Protection if external user if ($user->societe_id > 0) { - accessforbidden(); + accessforbidden(); } -$object = new Resource($db); +$object = new DolResource($db); if ($action == 'confirm_add_resource') { - if (! $cancel) - { - $error=''; + if (! $cancel) + { + $error=''; - $ref=GETPOST('ref','alpha'); - $description=GETPOST('description','alpha'); - $fk_code_type_resource=GETPOST('fk_code_type_resource','alpha'); + $ref=GETPOST('ref','alpha'); + $description=GETPOST('description','alpha'); + $fk_code_type_resource=GETPOST('fk_code_type_resource','alpha'); - if (empty($ref)) - { - $mesg=$langs->trans("ErrorFieldRequired",$langs->transnoentities("Ref")); - setEventMessages($mesg, null, 'errors'); - $error++; - } + if (empty($ref)) + { + $mesg=$langs->trans("ErrorFieldRequired",$langs->transnoentities("Ref")); + setEventMessages($mesg, null, 'errors'); + $error++; + } - if (! $error) - { - $object=new Resource($db); - $object->ref=$ref; - $object->description=$description; - $object->fk_code_type_resource=$fk_code_type_resource; + if (! $error) + { + $object=new Dolresource($db); + $object->ref=$ref; + $object->description=$description; + $object->fk_code_type_resource=$fk_code_type_resource; - $result=$object->create($user); - if ($result > 0) - { - // Creation OK - $db->commit(); - setEventMessages($langs->trans('ResourceCreatedWithSuccess'), null, 'mesgs'); - Header("Location: card.php?id=" . $object->id); - return; - } - else - { - // Creation KO - setEventMessages($object->error, $object->errors, 'errors'); - $action = ''; - } - } - else - { - $action = ''; - } - } - else - { - Header("Location: list.php"); - } + $result=$object->create($user); + if ($result > 0) + { + // Creation OK + $db->commit(); + setEventMessages($langs->trans('ResourceCreatedWithSuccess'), null, 'mesgs'); + Header("Location: card.php?id=" . $object->id); + return; + } + else + { + // Creation KO + setEventMessages($object->error, $object->errors, 'errors'); + $action = ''; + } + } + else + { + $action = ''; + } + } + else + { + Header("Location: list.php"); + } } @@ -122,58 +121,58 @@ $formresource = new FormResource($db); if (! $action) { - $pagetitle=$langs->trans('AddResource'); - llxHeader('',$pagetitle,''); - print load_fiche_titre($pagetitle,'','title_generic'); + $pagetitle=$langs->trans('AddResource'); + llxHeader('',$pagetitle,''); + print load_fiche_titre($pagetitle,'','title_generic'); - print '

    '; - print ''; + print ''; + print ''; - dol_fiche_head(''); + dol_fiche_head(''); - print ''; + print '
    '; - // Ref / label - $field = 'ref'; - print ''; - print ''; - print ''; - print ''; + // Ref / label + $field = 'ref'; + print ''; + print ''; + print ''; + print ''; - // Type - print ''; - print ''; + // Type + print ''; + print ''; - // Description - $field = 'description'; - print ''; - print ''; - print ''; - print ''; + // Description + $field = 'description'; + print ''; + print ''; + print ''; + print ''; - print '
    '; - print $langs->trans('ResourceFormLabel_'.$field); - print ''; - print ''; - print '
    '; + print $langs->trans('ResourceFormLabel_'.$field); + print ''; + print ''; + print '
    '.$langs->trans("ResourceType").''; - $ret = $formresource->select_types_resource($object->fk_code_type_resource, 'fk_code_type_resource', '', 2, 1); - print '
    '.$langs->trans("ResourceType").''; + $ret = $formresource->select_types_resource($object->fk_code_type_resource, 'fk_code_type_resource', '', 2, 1); + print '
    '; - print $langs->trans('ResourceFormLabel_'.$field); - print ''; - require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; - $doleditor = new DolEditor($field, $$field, 160, '', '', false); - $doleditor->Create(); - print '
    '; + print $langs->trans('ResourceFormLabel_'.$field); + print ''; + require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; + $doleditor = new DolEditor($field, $$field, 160, '', '', false); + $doleditor->Create(); + print '
    '; + print ''; - dol_fiche_end(''); + dol_fiche_end(''); - echo '
    ', - '', - '   ', - '', - '
    '; + echo '
    ', + '', + '   ', + '', + '
    '; - print ''; + print ''; } diff --git a/htdocs/resource/card.php b/htdocs/resource/card.php index 31fb6a955b1..206c2eea644 100644 --- a/htdocs/resource/card.php +++ b/htdocs/resource/card.php @@ -29,7 +29,7 @@ if (! $res) $res=@include("../../main.inc.php"); // For "custom" directory if (! $res) die("Include of main fails"); require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; -require_once 'class/resource.class.php'; +require_once 'class/dolresource.class.php'; require_once 'class/html.formresource.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/resource.lib.php'; @@ -56,7 +56,7 @@ if ($user->societe_id > 0) if( ! $user->rights->resource->read) accessforbidden(); -$object = new Resource($db); +$object = new Dolresource($db); $hookmanager->initHooks(array('resource_card','globalcard')); $parameters=array('resource_id'=>$id); diff --git a/htdocs/resource/class/resource.class.php b/htdocs/resource/class/dolresource.class.php similarity index 99% rename from htdocs/resource/class/resource.class.php rename to htdocs/resource/class/dolresource.class.php index c323ad17e69..de4d25854f3 100644 --- a/htdocs/resource/class/resource.class.php +++ b/htdocs/resource/class/dolresource.class.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2013-2015 Jean-François Ferry * * 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 @@ -28,7 +28,7 @@ require_once DOL_DOCUMENT_ROOT."/core/lib/functions2.lib.php"; /** * DAO Resource object */ -class Resource extends CommonObject +class Dolresource extends CommonObject { var $element='resource'; //!< Id that identify managed objects var $table_element='resource'; //!< Name of table without prefix where object is stored @@ -414,7 +414,7 @@ class Resource extends CommonObject while ($i < $num) { $obj = $this->db->fetch_object($resql); - $line = new Resource($this->db); + $line = new Dolresource($this->db); $line->id = $obj->rowid; $line->ref = $obj->ref; $line->description = $obj->description; @@ -488,7 +488,7 @@ class Resource extends CommonObject while ($i < $num) { $obj = $this->db->fetch_object($resql); - $line = new Resource($this->db); + $line = new Dolresource($this->db); $line->id = $obj->rowid; $line->resource_id = $obj->resource_id; $line->resource_type = $obj->resource_type; @@ -574,7 +574,7 @@ class Resource extends CommonObject while ($i < $num) { $obj = $this->db->fetch_object($resql); - $line = new Resource($this->db); + $line = new Dolresource($this->db); $line->id = $obj->rowid; $line->resource_id = $obj->resource_id; $line->resource_type = $obj->resource_type; diff --git a/htdocs/resource/class/html.formresource.class.php b/htdocs/resource/class/html.formresource.class.php index 4128de6fead..82b0ebe7d1a 100644 --- a/htdocs/resource/class/html.formresource.class.php +++ b/htdocs/resource/class/html.formresource.class.php @@ -1,5 +1,5 @@ +/* Copyright (C) - 2013-2015 Jean-François FERRY * * 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 @@ -17,7 +17,7 @@ */ /** - * \file place/class/html.place.class.php + * \file place/class/html.formresource.class.php * \ingroup core * \brief Class file to manage forms into resource module */ @@ -75,7 +75,7 @@ class FormResource $out=''; $outarray=array(); - $resourcestat = new Resource($this->db); + $resourcestat = new Dolresource($this->db); $resources_used = $resourcestat->fetch_all('ASC', 't.rowid', $limit, $offset, $filter=''); @@ -159,7 +159,7 @@ class FormResource { global $langs,$user; - $resourcestat = new Resource($this->db); + $resourcestat = new Dolresource($this->db); dol_syslog(get_class($this)."::select_types_resource ".$selected.", ".$htmlname.", ".$filtertype.", ".$format,LOG_DEBUG); diff --git a/htdocs/resource/element_resource.php b/htdocs/resource/element_resource.php index e4477e1674a..62caa43f428 100644 --- a/htdocs/resource/element_resource.php +++ b/htdocs/resource/element_resource.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2013 Jean-François Ferry * * 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 @@ -16,18 +16,18 @@ */ /** - * \file resource/element_resource.php - * \ingroup resource - * \brief Page to show and manage linked resources to an element + * \file resource/element_resource.php + * \ingroup resource + * \brief Page to show and manage linked resources to an element */ $res=0; -$res=@include("../main.inc.php"); // For root directory -if (! $res) $res=@include("../../main.inc.php"); // For "custom" directory +$res=@include("../main.inc.php"); // For root directory +if (! $res) $res=@include("../../main.inc.php"); // For "custom" directory if (! $res) die("Include of main fails"); -require 'class/resource.class.php'; +require 'class/dolresource.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; // Load traductions files requiredby by page @@ -35,92 +35,92 @@ $langs->load("resource"); $langs->load("other"); /* -$sortorder = GETPOST('sortorder','alpha'); -$sortfield = GETPOST('sortfield','alpha'); -$page = GETPOST('page','int'); +$sortorder = GETPOST('sortorder','alpha'); +$sortfield = GETPOST('sortfield','alpha'); +$page = GETPOST('page','int'); */ if( ! $user->rights->resource->read) - accessforbidden(); + accessforbidden(); -$object=new Resource($db); +$object=new Dolresource($db); $hookmanager->initHooks(array('element_resource')); -$object->available_resources = array('resource'); +$object->available_resources = array('dolresource'); // Get parameters -$id = GETPOST('id','int'); -$action = GETPOST('action','alpha'); -$mode = GETPOST('mode','alpha'); -$lineid = GETPOST('lineid','int'); -$element = GETPOST('element','alpha'); // element_type -$element_id = GETPOST('element_id','int'); -$resource_id = GETPOST('fk_resource','int'); -$resource_type = GETPOST('resource_type','alpha'); -$busy = GETPOST('busy','int'); -$mandatory = GETPOST('mandatory','int'); -$cancel = GETPOST('cancel','alpha'); -$confirm = GETPOST('confirm','alpha'); -$socid = GETPOST('socid','int'); +$id = GETPOST('id','int'); +$action = GETPOST('action','alpha'); +$mode = GETPOST('mode','alpha'); +$lineid = GETPOST('lineid','int'); +$element = GETPOST('element','alpha'); // element_type +$element_id = GETPOST('element_id','int'); +$resource_id = GETPOST('fk_resource','int'); +$resource_type = GETPOST('resource_type','alpha'); +$busy = GETPOST('busy','int'); +$mandatory = GETPOST('mandatory','int'); +$cancel = GETPOST('cancel','alpha'); +$confirm = GETPOST('confirm','alpha'); +$socid = GETPOST('socid','int'); -if ($socid > 0) +if ($socid > 0) { $element_id = $socid; $element = 'societe'; } - - + + /* * Actions */ if ($action == 'add_element_resource' && ! $cancel) { - $error++; - $res = 0; - if (! ($resource_id > 0)) - { - $error++; + $error++; + $res = 0; + if (! ($resource_id > 0)) + { + $error++; setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Resource")), null, 'errors'); $action=''; - } - else - { + } + else + { $objstat = fetchObjectByElement($element_id, $element); - + $res = $objstat->add_element_resource($resource_id, $resource_type, $busy, $mandatory); - } - if (! $error && $res > 0) - { - setEventMessages($langs->trans('ResourceLinkedWithSuccess'), null, 'mesgs'); - header("Location: ".$_SERVER['PHP_SELF'].'?element='.$element.'&element_id='.$element_id); - exit; - } + } + if (! $error && $res > 0) + { + setEventMessages($langs->trans('ResourceLinkedWithSuccess'), null, 'mesgs'); + header("Location: ".$_SERVER['PHP_SELF'].'?element='.$element.'&element_id='.$element_id); + exit; + } } // Update ressource if ($action == 'update_linked_resource' && $user->rights->resource->write && !GETPOST('cancel') ) { - $res = $object->fetch_element_resource($lineid); - if($res) - { - $object->busy = $busy; - $object->mandatory = $mandatory; + $res = $object->fetch_element_resource($lineid); + if($res) + { + $object->busy = $busy; + $object->mandatory = $mandatory; - $result = $object->update_element_resource($user); + $result = $object->update_element_resource($user); - if ($result >= 0) - { - setEventMessages($langs->trans('RessourceLineSuccessfullyUpdated'), null, 'mesgs'); - header("Location: ".$_SERVER['PHP_SELF']."?element=".$element."&element_id=".$element_id); - exit; - } - else - { - setEventMessages($object->error, $object->errors, 'errors'); - } - } + if ($result >= 0) + { + setEventMessages($langs->trans('RessourceLineSuccessfullyUpdated'), null, 'mesgs'); + header("Location: ".$_SERVER['PHP_SELF']."?element=".$element."&element_id=".$element_id); + exit; + } + else + { + setEventMessages($object->error, $object->errors, 'errors'); + } + } } // Delete a resource linked to an element @@ -134,7 +134,7 @@ if ($action == 'confirm_delete_linked_resource' && $user->rights->resource->dele header("Location: ".$_SERVER['PHP_SELF']."?element=".$element."&element_id=".$element_id); exit; } - else + else { setEventMessages($object->error, $object->errors, 'errors'); } @@ -164,149 +164,149 @@ llxHeader('',$pagetitle,''); // Load available resource, declared by modules $ret = count($object->available_resources); if($ret == -1) { - dol_print_error($db,$object->error); - exit; + dol_print_error($db,$object->error); + exit; } if(!$ret) { - print '
    '.$langs->trans('NoResourceInDatabase').'
    '; + print '
    '.$langs->trans('NoResourceInDatabase').'
    '; } else { - // Confirmation suppression resource line - if ($action == 'delete_resource') - { - print $form->formconfirm("element_resource.php?element=".$element."&element_id=".$element_id."&id=".$id."&lineid=".$lineid,$langs->trans("DeleteResource"),$langs->trans("ConfirmDeleteResourceElement"),"confirm_delete_linked_resource",'','',1); - } + // Confirmation suppression resource line + if ($action == 'delete_resource') + { + print $form->formconfirm("element_resource.php?element=".$element."&element_id=".$element_id."&id=".$id."&lineid=".$lineid,$langs->trans("DeleteResource"),$langs->trans("ConfirmDeleteResourceElement"),"confirm_delete_linked_resource",'','',1); + } - /* - * Specific to agenda module - */ - if ($element_id && $element == 'action') - { - require_once DOL_DOCUMENT_ROOT.'/core/lib/agenda.lib.php'; + /* + * Specific to agenda module + */ + if ($element_id && $element == 'action') + { + require_once DOL_DOCUMENT_ROOT.'/core/lib/agenda.lib.php'; - $act = fetchObjectByElement($element_id,$element); - if (is_object($act)) - { + $act = fetchObjectByElement($element_id,$element); + if (is_object($act)) + { - $head=actions_prepare_head($act); + $head=actions_prepare_head($act); - dol_fiche_head($head, 'resources', $langs->trans("Action"),0,'action'); + dol_fiche_head($head, 'resources', $langs->trans("Action"),0,'action'); - // Affichage fiche action en mode visu - print ''; + // Affichage fiche action en mode visu + print '
    '; - $linkback = ''.$langs->trans("BackToList").''; + $linkback = ''.$langs->trans("BackToList").''; - // Ref - print ''; + // Ref + print ''; - // Type - if (! empty($conf->global->AGENDA_USE_EVENT_TYPE)) - { - print ''; - } + // Type + if (! empty($conf->global->AGENDA_USE_EVENT_TYPE)) + { + print ''; + } - // Title - print ''; - print '
    '.$langs->trans("Ref").''; - print $form->showrefnav($act, 'id', $linkback, ($user->societe_id?0:1), 'id', 'ref', ''); - print '
    '.$langs->trans("Ref").''; + print $form->showrefnav($act, 'id', $linkback, ($user->societe_id?0:1), 'id', 'ref', ''); + print '
    '.$langs->trans("Type").''.$act->type.'
    '.$langs->trans("Type").''.$act->type.'
    '.$langs->trans("Title").''.$act->label.'
    '; + // Title + print ''.$langs->trans("Title").''.$act->label.''; + print ''; - dol_fiche_end(); - } - } + dol_fiche_end(); + } + } - /* - * Specific to thirdparty module - */ - if ($element_id && $element == 'societe') - { - $socstatic = fetchObjectByElement($element_id,$element); - if (is_object($socstatic)) - { - $savobject = $object; - - $object = $socstatic; - - require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; - $head = societe_prepare_head($socstatic); + /* + * Specific to thirdparty module + */ + if ($element_id && $element == 'societe') + { + $socstatic = fetchObjectByElement($element_id,$element); + if (is_object($socstatic)) + { + $savobject = $object; - dol_fiche_head($head, 'resources', $langs->trans("ThirdParty"),0,'company'); + $object = $socstatic; + + require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; + $head = societe_prepare_head($socstatic); + + dol_fiche_head($head, 'resources', $langs->trans("ThirdParty"),0,'company'); dol_banner_tab($socstatic, 'socid', '', ($user->societe_id?0:1), 'rowid', 'nom'); - - print '
    '; - + + print '
    '; + print '
    '; - print ''; - - // Alias name (commercial, trademark or alias name) - print '"; - - print '
    '.$langs->trans('AliasNames').''; - print $socstatic->name_alias; - print "
    '; + print ''; - print ''; - - dol_fiche_end(); - - $object = $savobject; - } - } + // Alias name (commercial, trademark or alias name) + print '"; + + print '
    '.$langs->trans('AliasNames').''; + print $socstatic->name_alias; + print "
    '; + + print '
    '; + + dol_fiche_end(); + + $object = $savobject; + } + } - //print load_fiche_titre($langs->trans('ResourcesLinkedToElement'),'',''); + //print load_fiche_titre($langs->trans('ResourcesLinkedToElement'),'',''); - foreach ($object->available_resources as $modresources => $resources) - { - $resources=(array) $resources; // To be sure $resources is an array - foreach($resources as $resource_obj) - { - $element_prop = getElementProperties($resource_obj); + foreach ($object->available_resources as $modresources => $resources) + { + $resources=(array) $resources; // To be sure $resources is an array + foreach($resources as $resource_obj) + { + $element_prop = getElementProperties($resource_obj); - //print '/'.$modresources.'/class/'.$resource_obj.'.class.php
    '; + //print '/'.$modresources.'/class/'.$resource_obj.'.class.php
    '; - $path = ''; - if(strpos($resource_obj,'@')) - $path .= '/'.$element_prop['module']; + $path = ''; + if(strpos($resource_obj,'@')) + $path .= '/'.$element_prop['module']; - $linked_resources = $object->getElementResources($element,$element_id,$resource_obj); + $linked_resources = $object->getElementResources($element,$element_id,$resource_obj); - // If we have a specific template we use it - if(file_exists(dol_buildpath($path.'/core/tpl/resource_'.$element_prop['element'].'_add.tpl.php'))) - { - $res=include dol_buildpath($path.'/core/tpl/resource_'.$element_prop['element'].'_add.tpl.php'); - } - else - { - $res=include DOL_DOCUMENT_ROOT . '/core/tpl/resource_add.tpl.php'; - } + // If we have a specific template we use it + if(file_exists(dol_buildpath($path.'/core/tpl/resource_'.$element_prop['element'].'_add.tpl.php'))) + { + $res=include dol_buildpath($path.'/core/tpl/resource_'.$element_prop['element'].'_add.tpl.php'); + } + else + { + $res=include DOL_DOCUMENT_ROOT . '/core/tpl/resource_add.tpl.php'; + } //var_dump($element_id); - if ($mode != 'add' || $resource_obj != $resource_type) - { - //print load_fiche_titre($langs->trans(ucfirst($element_prop['element']).'Singular')); + if ($mode != 'add' || $resource_obj != $resource_type) + { + //print load_fiche_titre($langs->trans(ucfirst($element_prop['element']).'Singular')); - // If we have a specific template we use it - if(file_exists(dol_buildpath($path.'/core/tpl/resource_'.$element_prop['element'].'_view.tpl.php'))) - { - $res=@include dol_buildpath($path.'/core/tpl/resource_'.$element_prop['element'].'_view.tpl.php'); + // If we have a specific template we use it + if(file_exists(dol_buildpath($path.'/core/tpl/resource_'.$element_prop['element'].'_view.tpl.php'))) + { + $res=@include dol_buildpath($path.'/core/tpl/resource_'.$element_prop['element'].'_view.tpl.php'); - } - else - { - $res=include DOL_DOCUMENT_ROOT . '/core/tpl/resource_view.tpl.php'; - } - } - } - } + } + else + { + $res=include DOL_DOCUMENT_ROOT . '/core/tpl/resource_view.tpl.php'; + } + } + } + } } llxFooter(); diff --git a/htdocs/resource/list.php b/htdocs/resource/list.php index 9bfa7309167..d5b56cc9781 100644 --- a/htdocs/resource/list.php +++ b/htdocs/resource/list.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2013-2014 Jean-François Ferry * * 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 @@ -16,34 +16,34 @@ */ /** - * \file resource/index.php - * \ingroup resource - * \brief Page to manage resource objects + * \file resource/index.php + * \ingroup resource + * \brief Page to manage resource objects */ require '../main.inc.php'; -require_once DOL_DOCUMENT_ROOT.'/resource/class/resource.class.php'; +require_once DOL_DOCUMENT_ROOT.'/resource/class/dolresource.class.php'; -// Load translations files requiredby by page +// Load translations files required by page $langs->load("resource"); $langs->load("companies"); $langs->load("other"); // Get parameters -$id = GETPOST('id','int'); -$action = GETPOST('action','alpha'); +$id = GETPOST('id','int'); +$action = GETPOST('action','alpha'); -$lineid = GETPOST('lineid','int'); -$element = GETPOST('element','alpha'); -$element_id = GETPOST('element_id','int'); -$resource_id = GETPOST('resource_id','int'); +$lineid = GETPOST('lineid','int'); +$element = GETPOST('element','alpha'); +$element_id = GETPOST('element_id','int'); +$resource_id = GETPOST('resource_id','int'); -$sortorder = GETPOST('sortorder','alpha'); -$sortfield = GETPOST('sortfield','alpha'); -$page = GETPOST('page','int'); +$sortorder = GETPOST('sortorder','alpha'); +$sortfield = GETPOST('sortfield','alpha'); +$page = GETPOST('page','int'); -$object = new Resource($db); +$object = new Dolresource($db); $hookmanager->initHooks(array('resource_list')); @@ -52,7 +52,7 @@ if (empty($sortfield)) $sortfield="t.rowid"; if (empty($arch)) $arch = 0; if ($page == -1) { - $page = 0 ; + $page = 0 ; } $limit = GETPOST('limit')?GETPOST('limit','int'):$conf->liste_limit; @@ -61,7 +61,7 @@ $pageprev = $page - 1; $pagenext = $page + 1; if( ! $user->rights->resource->read) - accessforbidden(); + accessforbidden(); /* @@ -86,72 +86,91 @@ llxHeader('',$pagetitle,''); // Confirmation suppression resource line if ($action == 'delete_resource') { - print $form->formconfirm($_SERVER['PHP_SELF']."?element=".$element."&element_id=".$element_id."&lineid=".$lineid,$langs->trans("DeleteResource"),$langs->trans("ConfirmDeleteResourceElement"),"confirm_delete_resource",'','',1); + print $form->formconfirm($_SERVER['PHP_SELF']."?element=".$element."&element_id=".$element_id."&lineid=".$lineid,$langs->trans("DeleteResource"),$langs->trans("ConfirmDeleteResourceElement"),"confirm_delete_resource",'','',1); } // Load object list $ret = $object->fetch_all($sortorder, $sortfield, $limit, $offset); if($ret == -1) { - dol_print_error($db,$object->error); - exit; + dol_print_error($db,$object->error); + exit; } else { print_barre_liste($pagetitle, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $ret+1, $object->num_all,'title_generic.png'); } if(!$ret) { - print '
    '.$langs->trans('NoResourceInDatabase').'
    '; + print '
    '.$langs->trans('NoResourceInDatabase').'
    '; } else { - $var=true; + $var=true; - print ''."\n"; - print ''; - print_liste_field_titre($langs->trans('Id'),$_SERVER['PHP_SELF'],'t.rowid','',$param,'',$sortfield,$sortorder); - print_liste_field_titre($langs->trans('Ref'),$_SERVER['PHP_SELF'],'t.ref','',$param,'',$sortfield,$sortorder); - print_liste_field_titre($langs->trans('ResourceType'),$_SERVER['PHP_SELF'],'ty.code','',$param,'',$sortfield,$sortorder); - print_liste_field_titre($langs->trans('Action'),"","","","",'width="60" align="center"',"",""); - print "\n"; + print '
    '."\n"; + print ''; + print_liste_field_titre($langs->trans('Id'),$_SERVER['PHP_SELF'],'t.rowid','',$param,'',$sortfield,$sortorder); + print_liste_field_titre($langs->trans('Ref'),$_SERVER['PHP_SELF'],'t.ref','',$param,'',$sortfield,$sortorder); + print_liste_field_titre($langs->trans('ResourceType'),$_SERVER['PHP_SELF'],'ty.code','',$param,'',$sortfield,$sortorder); + print_liste_field_titre($langs->trans('Action'),"","","","",'width="60" align="center"',"",""); + print "\n"; - foreach ($object->lines as $resource) - { - $var=!$var; + foreach ($object->lines as $resource) + { + $var=!$var; - $style=''; - if($resource->id == GETPOST('lineid')) - $style='style="background: orange;"'; + $style=''; + if($resource->id == GETPOST('lineid')) + $style='style="background: orange;"'; - print ''; + print ''; - print ''; + print ''; - print ''; + print ''; - print ''; + print ''; - print ''; - } + print ''; + } - print '
    '; - print ''.$resource->id.''; - print '
    '; + print ''.$resource->id.''; + print ''; - print $resource->ref; - print ''; + print $resource->ref; + print ''; - print $resource->type_label; - print ''; + print $resource->type_label; + print ''; - print ''; - print img_edit(); - print ''; - print ' '; - print ''; - print img_delete(); - print ''; - print ''; + print ''; + print img_edit(); + print ''; + print ' '; + print ''; + print img_delete(); + print ''; + print '
    '; + print ''; } +/* + * Boutons actions +*/ +print '
    '; +$parameters = array(); +$reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been +// modified by hook +if (empty($reshook)) +{ + if ($action != "edit" ) + { + // Edit resource + if($user->rights->resource->write) + { + print '
    '; + print ''.$langs->trans('AddResource').''; + print '
    '; + } + } +} +print '
    '; llxFooter(); $db->close(); - - From 581ea0f36b3bd90b3c9f271136c2f353ce8339ab Mon Sep 17 00:00:00 2001 From: PeartreeG Date: Sun, 31 Jan 2016 12:17:45 +0100 Subject: [PATCH 018/116] adding resource in contact type list --- htdocs/admin/dict.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index 17033845f8c..f52a29249ea 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -466,6 +466,7 @@ if ($id == 11) 'propal' => $langs->trans('Proposal'), 'commande' => $langs->trans('Order'), 'facture' => $langs->trans('Bill'), + 'resource' => $langs->trans('Resource'), // 'facture_fourn' => $langs->trans('SupplierBill'), 'fichinter' => $langs->trans('InterventionCard') ); From 4c025d432316ac7958faf3605b29625500b1c1c9 Mon Sep 17 00:00:00 2001 From: PeartreeG Date: Sun, 31 Jan 2016 12:23:05 +0100 Subject: [PATCH 019/116] Adding additional tabs --- htdocs/core/lib/resource.lib.php | 40 ++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/htdocs/core/lib/resource.lib.php b/htdocs/core/lib/resource.lib.php index e92d59dcac7..b56f361110a 100644 --- a/htdocs/core/lib/resource.lib.php +++ b/htdocs/core/lib/resource.lib.php @@ -1,6 +1,7 @@ + * Copyright (C) 2016 Gilles Poirier * * 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 @@ -28,7 +29,7 @@ * @param Object $object Object * @return array Array of head entries */ -function resourcePrepareHead($object) +function resource_prepare_head($object) { global $langs, $conf, $user; $h = 0; @@ -36,15 +37,50 @@ function resourcePrepareHead($object) $head[$h][0] = dol_buildpath('/resource/card.php',1).'?id='.$object->id; $head[$h][1] = $langs->trans("ResourceCard"); - $head[$h][2] = 'resource'; + $head[$h][2] = 'resource'; $h++; + if (empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) + { + $head[$h][0] = DOL_URL_ROOT.'/resource/contact.php?id='.$object->id; + $head[$h][1] = $langs->trans('Contact'); + $head[$h][2] = 'contact'; + $h++; + } + // Show more tabs from modules // Entries must be declared in modules descriptor with line // $this->tabs = array('entity:+tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to add new tab // $this->tabs = array('entity:-tabname:Title:@mymodule:/mymodule/mypage.php?id=__ID__'); to remove a tab complete_head_from_modules($conf,$langs,$object,$head,$h,'resource'); + if (empty($conf->global->MAIN_DISABLE_NOTES_TAB)) + { + $nbNote = 0; + if(!empty($object->note_private)) $nbNote++; + if(!empty($object->note_public)) $nbNote++; + $head[$h][0] = DOL_URL_ROOT.'/fichinter/note.php?id='.$object->id; + $head[$h][1] = $langs->trans('Notes'); + if ($nbNote > 0) $head[$h][1].= ' '.$nbNote.''; + $head[$h][2] = 'note'; + $h++; + } + + require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + $upload_dir = $conf->ficheinter->dir_output . "/" . dol_sanitizeFileName($object->ref); + $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$')); + $head[$h][0] = DOL_URL_ROOT.'/fichinter/document.php?id='.$object->id; + $head[$h][1] = $langs->trans("Documents"); + if($nbFiles > 0) $head[$h][1].= ' '.$nbFiles.''; + $head[$h][2] = 'documents'; + $h++; + + $head[$h][0] = DOL_URL_ROOT.'/fichinter/info.php?id='.$object->id; + $head[$h][1] = $langs->trans('Info'); + $head[$h][2] = 'info'; + $h++; + + complete_head_from_modules($conf,$langs,$object,$head,$h,'intervention','remove'); return $head; } From d1018760dfdd3e233707e09cb2aa461f56e54e7f Mon Sep 17 00:00:00 2001 From: PeartreeG Date: Sun, 31 Jan 2016 12:24:19 +0100 Subject: [PATCH 020/116] Update resource.lib.php --- htdocs/core/lib/resource.lib.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/htdocs/core/lib/resource.lib.php b/htdocs/core/lib/resource.lib.php index b56f361110a..dd7b7ef699f 100644 --- a/htdocs/core/lib/resource.lib.php +++ b/htdocs/core/lib/resource.lib.php @@ -57,30 +57,30 @@ function resource_prepare_head($object) if (empty($conf->global->MAIN_DISABLE_NOTES_TAB)) { $nbNote = 0; - if(!empty($object->note_private)) $nbNote++; + if(!empty($object->note_private)) $nbNote++; if(!empty($object->note_public)) $nbNote++; - $head[$h][0] = DOL_URL_ROOT.'/fichinter/note.php?id='.$object->id; + $head[$h][0] = DOL_URL_ROOT.'/resource/note.php?id='.$object->id; $head[$h][1] = $langs->trans('Notes'); if ($nbNote > 0) $head[$h][1].= ' '.$nbNote.''; $head[$h][2] = 'note'; $h++; } - + require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; - $upload_dir = $conf->ficheinter->dir_output . "/" . dol_sanitizeFileName($object->ref); + $upload_dir = $conf->resource->dir_output . "/" . dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$')); - $head[$h][0] = DOL_URL_ROOT.'/fichinter/document.php?id='.$object->id; + $head[$h][0] = DOL_URL_ROOT.'/resource/document.php?id='.$object->id; $head[$h][1] = $langs->trans("Documents"); if($nbFiles > 0) $head[$h][1].= ' '.$nbFiles.''; $head[$h][2] = 'documents'; $h++; - - $head[$h][0] = DOL_URL_ROOT.'/fichinter/info.php?id='.$object->id; + + $head[$h][0] = DOL_URL_ROOT.'/resource/info.php?id='.$object->id; $head[$h][1] = $langs->trans('Info'); $head[$h][2] = 'info'; $h++; - complete_head_from_modules($conf,$langs,$object,$head,$h,'intervention','remove'); + complete_head_from_modules($conf,$langs,$object,$head,$h,'resource', 'remove'); return $head; } From c34fd7b354c2b21227beadcabcc884c16c152564 Mon Sep 17 00:00:00 2001 From: PeartreeG Date: Sun, 31 Jan 2016 12:26:12 +0100 Subject: [PATCH 021/116] add contact tabs on resource --- htdocs/resource/contact.php | 159 ++++++++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 htdocs/resource/contact.php diff --git a/htdocs/resource/contact.php b/htdocs/resource/contact.php new file mode 100644 index 00000000000..70c64568bf6 --- /dev/null +++ b/htdocs/resource/contact.php @@ -0,0 +1,159 @@ + + * Copyright (C) 2007-2009 Laurent Destailleur + * Copyright (C) 2012 Juanjo Menent + * Copyright (C) 2016 Gilles Poirier + + * + * 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 3 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, see . + */ + +/** + * \file htdocs/resource/contact.php + * \ingroup resource + * \brief Onglet de gestion des contacts des resources + */ + +require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/resource/class/resource.class.php'; +require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/resource.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; + +$langs->load("resource"); +$langs->load("sendings"); +$langs->load("companies"); + +$id = GETPOST('id','int'); +$ref = GETPOST('ref', 'alpha'); +$action = GETPOST('action','alpha'); + +// Security check +if ($user->societe_id) $socid=$user->societe_id; +$result = restrictedArea($user, 'resource', $id, 'resource'); + +$object = new Resource($db); +$result = $object->fetch($id,$ref); + + +/* + * Ajout d'un nouveau contact + */ + +if ($action == 'addcontact' && $user->rights->resource->write) +{ + if ($result > 0 && $id > 0) + { + $contactid = (GETPOST('userid','int') ? GETPOST('userid','int') : GETPOST('contactid','int')); + $result = $object->add_contact($contactid, GETPOST('type','int'), GETPOST('source','alpha')); + } + + if ($result >= 0) + { + header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); + exit; + } + else + { + if ($object->error == 'DB_ERROR_RECORD_ALREADY_EXISTS') { + $langs->load("errors"); + $mesg = $langs->trans("ErrorThisContactIsAlreadyDefinedAsThisType"); + } else { + $mesg = $object->error; + } + + setEventMessage($mesg, 'errors'); + } +} + +// bascule du statut d'un contact +else if ($action == 'swapstatut' && $user->rights->resource->write) +{ + $result=$object->swapContactStatus(GETPOST('ligne','int')); +} + +// Efface un contact +else if ($action == 'deletecontact' && $user->rights->resource->write) +{ + $result = $object->delete_contact(GETPOST('lineid','int')); + + if ($result >= 0) + { + header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); + exit; + } + else { + dol_print_error($db); + } +} + + +/* + * View + */ + +$form = new Form($db); +$formcompany = new FormCompany($db); +$contactstatic=new Contact($db); +$userstatic=new User($db); + +llxHeader('',$langs->trans("Resource")); + +// Mode vue et edition + +if ($id > 0 || ! empty($ref)) +{ + $soc = new Societe($db); + $soc->fetch($object->socid); + + + $head = resource_prepare_head($object); + dol_fiche_head($head, 'contact', $langs->trans("ResourceSingular"), 0, 'resource@resource'); + + + /* + * Resource synthese pour rappel + */ + print ''; + + print ''; + print ''; + + // Resource type + print ''; + print ''; + print ''; + print ''; + + print '
    '.$langs->trans("ResourceFormLabel_ref").''; + $linkback = $objet->ref.' '.$langs->trans("BackToList").''; + print $form->showrefnav($object, 'id', $linkback,1,"rowid"); + print '
    ' . $langs->trans("ResourceType") . ''; + print $object->type_label; + print '
    '; + print '
    '; + + print '
    '; + + if (! empty($conf->global->RESOURCE_HIDE_ADD_CONTACT_USER)) $hideaddcontactforuser=1; + if (! empty($conf->global->RESOURCE_HIDE_ADD_CONTACT_THIPARTY)) $hideaddcontactforthirdparty=1; + + $permission=1; + // Contacts lines + include DOL_DOCUMENT_ROOT.'/core/tpl/contacts.tpl.php'; +} + + +llxFooter(); +$db->close(); From 265f01806cdcd6eb61b38f3d7ff1d81363e973f4 Mon Sep 17 00:00:00 2001 From: PeartreeG Date: Sun, 31 Jan 2016 12:27:46 +0100 Subject: [PATCH 022/116] add document feature on resource modules --- htdocs/resource/document.php | 141 +++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 htdocs/resource/document.php diff --git a/htdocs/resource/document.php b/htdocs/resource/document.php new file mode 100644 index 00000000000..cbe53be0ad1 --- /dev/null +++ b/htdocs/resource/document.php @@ -0,0 +1,141 @@ + + * Copyright (C) 2004-2010 Laurent Destailleur + * Copyright (C) 2005 Marc Barilley / Ocebo + * Copyright (C) 2005-2009 Regis Houssin + * Copyright (C) 2005 Simon TOSSER + * Copyright (C) 2011-2012 Juanjo Menent + * Copyright (C) 2013 Cédric Salvador + * Copyright (C) 2016 Gilles Poirier + * + * 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 3 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, see . + */ + +/** + * \file htdocs/resource/document.php + * \ingroup resource + * \brief Page des documents joints sur les resources + */ + +require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/resource/class/resource.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/resource.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; + +$langs->load("other"); +$langs->load("resource"); +$langs->load("companies"); + +$id = GETPOST('id','int'); +$ref = GETPOST('ref', 'alpha'); +$action = GETPOST('action','alpha'); +$confirm = GETPOST('confirm','alpha'); + +// Security check +if ($user->societe_id) $socid=$user->societe_id; +$result = restrictedArea($user, 'resource', $id, 'resource'); + + +// Get parameters +$sortfield = GETPOST('sortfield','alpha'); +$sortorder = GETPOST('sortorder','alpha'); +$page = GETPOST('page','int'); +if ($page == -1) { $page = 0; } +$offset = $conf->liste_limit * $page; +$pageprev = $page - 1; +$pagenext = $page + 1; +if (! $sortorder) $sortorder="ASC"; +if (! $sortfield) $sortfield="name"; + + +$object = new Resource($db); +$object->fetch($id, $ref); + +$upload_dir = $conf->resource->dir_output.'/'.dol_sanitizeFileName($object->ref); +$modulepart='fichinter'; + + +/* + * Actions + */ + +include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_pre_headers.tpl.php'; + + +/* + * View + */ + +$form = new Form($db); + +llxHeader('',$langs->trans("Resource")); + +if ($object->id) +{ + $object->fetch_thirdparty(); + + $head=resource_prepare_head($object); + + dol_fiche_head($head, 'documents', $langs->trans("ResourceSingular"), 0, 'resource'); + + + // Construit liste des fichiers + $filearray=dol_dir_list($upload_dir,"files",0,'','(\.meta|_preview\.png)$',$sortfield,(strtolower($sortorder)=='desc'?SORT_DESC:SORT_ASC),1); + $totalsize=0; + foreach($filearray as $key => $file) + { + $totalsize+=$file['size']; + } + + + print ''; + + + print ''; + print ''; + + // Resource type + print ''; + print ''; + print ''; + print ''; + + print ''; + print ''; + print '
    '.$langs->trans("ResourceFormLabel_ref").''; + $linkback = $objet->ref.' '.$langs->trans("BackToList").''; + print $form->showrefnav($object, 'id', $linkback,1,"rowid"); + print '
    ' . $langs->trans("ResourceType") . ''; + print $object->type_label; + print '
    '.$langs->trans("NbOfAttachedFiles").''.count($filearray).'
    '.$langs->trans("TotalSizeOfAttachedFiles").''.$totalsize.' '.$langs->trans("bytes").'
    '; + + print ''; + + $modulepart = 'ficheinter'; + $permission = $user->rights->ficheinter->creer; + $param = '&id=' . $object->id; + include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_post_headers.tpl.php'; + +} +else +{ + print $langs->trans("ErrorUnknown"); +} + + +llxFooter(); + +$db->close(); From f4a6945aa099b8c2de8358503cfe10c968e0d3d0 Mon Sep 17 00:00:00 2001 From: PeartreeG Date: Sun, 31 Jan 2016 12:30:15 +0100 Subject: [PATCH 023/116] add note feature on resource module --- htdocs/resource/note.php | 90 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 htdocs/resource/note.php diff --git a/htdocs/resource/note.php b/htdocs/resource/note.php new file mode 100644 index 00000000000..f3da12c0b49 --- /dev/null +++ b/htdocs/resource/note.php @@ -0,0 +1,90 @@ + + * Copyright (C) 2011-2012 Juanjo Menent + * Copyright (C) 2013 Florian Henry + * Copyright (C) 2016 Gilles Poirier + * + * 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 3 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, see . + */ + +/** + * \file htdocs/resource/note.php + * \ingroup fichinter + * \brief Fiche d'information sur une resource + */ + +require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/resource/class/resource.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/resource.lib.php'; + +$langs->load('companies'); +$langs->load("interventions"); + +$id = GETPOST('id','int'); +$ref = GETPOST('ref', 'alpha'); +$action=GETPOST('action','alpha'); + +// Security check +if ($user->societe_id) $socid=$user->societe_id; +$result = restrictedArea($user, 'resource', $id, 'resource'); + +$object = new Resource($db); +$object->fetch($id,$ref); + +$permissionnote=$user->rights->resource->write; // Used by the include of actions_setnotes.inc.php + +/* + * Actions + */ + +include DOL_DOCUMENT_ROOT.'/core/actions_setnotes.inc.php'; // Must be include, not includ_once + + +/* + * View + */ + +llxHeader(); + +$form = new Form($db); + +if ($id > 0 || ! empty($ref)) +{ + $head = resource_prepare_head($object); + dol_fiche_head($head, 'note', $langs->trans('ResourceSingular'), 0, 'resource@resource'); + + print ''; + print ''; + print ''; + + // Resource type + print ''; + print ''; + print ''; + print ''; print "
    '.$langs->trans("ResourceFormLabel_ref").''; + $linkback = $objet->ref.' '.$langs->trans("BackToList").''; + print $form->showrefnav($object, 'id', $linkback,1,"rowid"); + print '
    ' . $langs->trans("ResourceType") . ''; + print $object->type_label; + print '
    "; + + print '
    '; + $permission=$user->rights->resource->write; + include DOL_DOCUMENT_ROOT.'/core/tpl/notes.tpl.php'; + + dol_fiche_end(); +} + +llxFooter(); +$db->close(); From 91e46b1d35385a4b2722a5a13bd56a8fa664cf1c Mon Sep 17 00:00:00 2001 From: PeartreeG Date: Sun, 31 Jan 2016 12:37:03 +0100 Subject: [PATCH 024/116] add somes fields on resource --- htdocs/install/mysql/tables/llx_resource.sql | 25 +++++++++++++------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/htdocs/install/mysql/tables/llx_resource.sql b/htdocs/install/mysql/tables/llx_resource.sql index 0d67075f1ea..37e0fbc7494 100755 --- a/htdocs/install/mysql/tables/llx_resource.sql +++ b/htdocs/install/mysql/tables/llx_resource.sql @@ -16,12 +16,21 @@ CREATE TABLE llx_resource ( - rowid integer AUTO_INCREMENT PRIMARY KEY, - entity integer DEFAULT 1 NOT NULL, - ref varchar(255), - description text, + rowid integer AUTO_INCREMENT PRIMARY KEY, + entity integer DEFAULT 1 NOT NULL, + ref varchar(255), + asset_number varchar(255), + description text, fk_code_type_resource varchar(32), - note_public text, - note_private text, - tms timestamp -)ENGINE=innodb; \ No newline at end of file + datec datetime DEFAULT NULL, + date_valid datetime DEFAULT NULL, + fk_user_author integer DEFAULT NULL, + fk_user_modif integer DEFAULT NULL, + fk_user_valid integer DEFAULT NULL, + fk_statut smallint NOT NULL DEFAULT '0', + note_public text, + note_private text, + import_key varchar(14), + extraparams varchar(255), -- for stock other parameters with json format + tms timestamp +)ENGINE=innodb; From b47065862a3f0f125f3ec457dc43832219aaab94 Mon Sep 17 00:00:00 2001 From: PeartreeG Date: Sun, 31 Jan 2016 12:38:05 +0100 Subject: [PATCH 025/116] Update llx_resource.sql --- htdocs/install/mysql/tables/llx_resource.sql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/htdocs/install/mysql/tables/llx_resource.sql b/htdocs/install/mysql/tables/llx_resource.sql index 37e0fbc7494..afb73e9fd5f 100755 --- a/htdocs/install/mysql/tables/llx_resource.sql +++ b/htdocs/install/mysql/tables/llx_resource.sql @@ -1,5 +1,6 @@ -- Module to manage resources into Dolibarr ERP/CRM --- Copyright (C) 2013 Jean-François Ferry +-- Copyright (C) 2013 Jean-François Ferry +-- Copyright (C) 2016 Gilles Poirier -- -- 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 From 1fbfdbfefd33a979bf5250c28ed730cf814fedad Mon Sep 17 00:00:00 2001 From: PeartreeG Date: Sun, 31 Jan 2016 12:47:18 +0100 Subject: [PATCH 026/116] add new ressources fields --- htdocs/install/mysql/migration/3.9.0-4.0.0.sql | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/htdocs/install/mysql/migration/3.9.0-4.0.0.sql b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql index f2b3ff181cc..e2cad614d91 100644 --- a/htdocs/install/mysql/migration/3.9.0-4.0.0.sql +++ b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql @@ -39,4 +39,14 @@ ALTER TABLE llx_cronjob MODIFY COLUMN unitfrequency varchar(255) NOT NULL DEFAUL ALTER TABLE llx_facture ADD INDEX idx_facture_fk_statut (fk_statut); UPDATE llx_projet as p set p.opp_percent = (SELECT percent FROM llx_c_lead_status as cls WHERE cls.rowid = p.fk_opp_status) WHERE p.opp_percent IS NULL AND p.fk_opp_status IS NOT NULL; - \ No newline at end of file + +ALTER TABLE llx_resource ADD COLUMN asset_number varchar(255) after ref; +ALTER TABLE llx_resource ADD COLUMN datec datetime DEFAULT NULL; +ALTER TABLE llx_resource ADD COLUMN date_valid datetime DEFAULT NULL; +ALTER TABLE llx_resource ADD COLUMN fk_user_author integer DEFAULT NULL; +ALTER TABLE llx_resource ADD COLUMN fk_user_modif integer DEFAULT NULL; +ALTER TABLE llx_resource ADD COLUMN fk_user_valid integer DEFAULT NULL; +ALTER TABLE llx_resource ADD COLUMN fk_statut smallint NOT NULL DEFAULT '0'; +ALTER TABLE llx_resource ADD COLUMN import_key varchar(14); +ALTER TABLE llx_resource ADD COLUMN extraparams varchar(255); + From f6dc4757d0f4115aead107a1cd13cf457293190e Mon Sep 17 00:00:00 2001 From: PeartreeG Date: Sun, 31 Jan 2016 18:13:14 +0100 Subject: [PATCH 027/116] add fields for resource tracking --- htdocs/install/mysql/tables/llx_element_resources.sql | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/htdocs/install/mysql/tables/llx_element_resources.sql b/htdocs/install/mysql/tables/llx_element_resources.sql index 9c67a0d52af..4fac28de4b1 100644 --- a/htdocs/install/mysql/tables/llx_element_resources.sql +++ b/htdocs/install/mysql/tables/llx_element_resources.sql @@ -26,6 +26,10 @@ CREATE TABLE llx_element_resources resource_type varchar(64), -- resource or user busy integer, mandatory integer, + dateo date, -- date start of using ressource + datee date, -- date end of using ressource + datet date, -- date terminaison of using ressource + duree real, -- total duration of using ressource fk_user_create integer, tms timestamp )ENGINE=innodb; From e2404b57b3d78bbe17b4ed2e6f15ec2d568a2c1b Mon Sep 17 00:00:00 2001 From: PeartreeG Date: Sun, 31 Jan 2016 18:15:11 +0100 Subject: [PATCH 028/116] adding additionnal fields for tracking resource use --- htdocs/install/mysql/migration/3.9.0-4.0.0.sql | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/htdocs/install/mysql/migration/3.9.0-4.0.0.sql b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql index e2cad614d91..b7e5ab28c76 100644 --- a/htdocs/install/mysql/migration/3.9.0-4.0.0.sql +++ b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql @@ -50,3 +50,7 @@ ALTER TABLE llx_resource ADD COLUMN fk_statut smallint NOT NULL DEFAULT '0 ALTER TABLE llx_resource ADD COLUMN import_key varchar(14); ALTER TABLE llx_resource ADD COLUMN extraparams varchar(255); +ALTER TABLE llx_element_resources ADD COLUMN dateo date, -- date start of using ressource +ALTER TABLE llx_element_resources ADD COLUMN datee date, -- date end of using ressource +ALTER TABLE llx_element_resources ADD COLUMN datet date, -- date terminaison of using ressource +ALTER TABLE llx_element_resources ADD COLUMN duree real, -- total duration of using ressource From ceb1cd57984f77be68ab736b9839a6a2172b48d4 Mon Sep 17 00:00:00 2001 From: PeartreeG Date: Sun, 31 Jan 2016 18:16:53 +0100 Subject: [PATCH 029/116] Update 3.9.0-4.0.0.sql --- htdocs/install/mysql/migration/3.9.0-4.0.0.sql | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/htdocs/install/mysql/migration/3.9.0-4.0.0.sql b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql index b7e5ab28c76..352d950ef02 100644 --- a/htdocs/install/mysql/migration/3.9.0-4.0.0.sql +++ b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql @@ -50,7 +50,7 @@ ALTER TABLE llx_resource ADD COLUMN fk_statut smallint NOT NULL DEFAULT '0 ALTER TABLE llx_resource ADD COLUMN import_key varchar(14); ALTER TABLE llx_resource ADD COLUMN extraparams varchar(255); -ALTER TABLE llx_element_resources ADD COLUMN dateo date, -- date start of using ressource -ALTER TABLE llx_element_resources ADD COLUMN datee date, -- date end of using ressource -ALTER TABLE llx_element_resources ADD COLUMN datet date, -- date terminaison of using ressource -ALTER TABLE llx_element_resources ADD COLUMN duree real, -- total duration of using ressource +ALTER TABLE llx_element_resources ADD COLUMN dateo date; -- date start of using ressource +ALTER TABLE llx_element_resources ADD COLUMN datee date; -- date end of using ressource +ALTER TABLE llx_element_resources ADD COLUMN datet date; -- date terminaison of using ressource +ALTER TABLE llx_element_resources ADD COLUMN duree real; -- total duration of using ressource From acc9879c7c9b19a5b0932ce2395dfb56fff78e6a Mon Sep 17 00:00:00 2001 From: fmarcet Date: Mon, 1 Feb 2016 13:05:14 +0100 Subject: [PATCH 030/116] FIX: It doesn't check if there is enough stock to update the lines of orders/invoices --- htdocs/commande/class/commande.class.php | 23 ++++++++++++++++++- htdocs/compta/facture/class/facture.class.php | 14 +++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index 5d2907041b2..d807d67cb1e 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -8,6 +8,7 @@ * Copyright (C) 2012-2014 Christophe Battarel * Copyright (C) 2013 Florian Henry * Copyright (C) 2014 Marcos García + * Copyright (C) 2016 Ferran Marcet * * 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 @@ -2372,7 +2373,7 @@ class Commande extends CommonOrder */ function updateline($rowid, $desc, $pu, $qty, $remise_percent, $txtva, $txlocaltax1=0.0,$txlocaltax2=0.0, $price_base_type='HT', $info_bits=0, $date_start='', $date_end='', $type=0, $fk_parent_line=0, $skip_update_total=0, $fk_fournprice=null, $pa_ht=0, $label='', $special_code=0, $array_option=0) { - global $conf, $mysoc; + global $conf, $mysoc, $langs; dol_syslog(get_class($this)."::updateline id=$rowid, desc=$desc, pu=$pu, qty=$qty, remise_percent=$remise_percent, txtva=$txtva, txlocaltax1=$txlocaltax1, txlocaltax2=$txlocaltax2, price_base_type=$price_base_type, info_bits=$info_bits, date_start=$date_start, date_end=$date_end, type=$type, fk_parent_line=$fk_parent_line, pa_ht=$pa_ht, special_code=$special_code"); include_once DOL_DOCUMENT_ROOT.'/core/lib/price.lib.php'; @@ -2426,6 +2427,26 @@ class Commande extends CommonOrder $line = new OrderLine($this->db); $line->fetch($rowid); + if (!empty($line->fk_product)) + { + $product=new Product($this->db); + $result=$product->fetch($line->fk_product); + $product_type=$product->type; + + if (! empty($conf->global->STOCK_MUST_BE_ENOUGH_FOR_ORDER) && $product_type == 0 && $product->stock_reel < $qty) + { + $this->error=$langs->trans('ErrorStockIsNotEnough'); + dol_syslog(get_class($this)."::addline error=Product ".$product->ref.": ".$this->error, LOG_ERR); + $this->db->rollback(); + unset($_POST['productid']); + unset($_POST['tva_tx']); + unset($_POST['price_ht']); + unset($_POST['qty']); + unset($_POST['buying_price']); + return self::STOCK_NOT_ENOUGH_FOR_ORDER; + } + } + $staticline = clone $line; $line->oldline = $staticline; diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index b1ec15f7536..705a52074c9 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -12,6 +12,7 @@ * Copyright (C) 2012-2014 Marcos García * Copyright (C) 2013 Cedric Gross * Copyright (C) 2013 Florian Henry + * Copyright (C) 2016 Ferran Marcet * * 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 @@ -2199,6 +2200,19 @@ class Facture extends CommonInvoice $line = new FactureLigne($this->db); $line->fetch($rowid); + if (!empty($line->fk_product)) + { + $product=new Product($this->db); + $result=$product->fetch($line->fk_product); + $product_type=$product->type; + + if (! empty($conf->global->STOCK_MUST_BE_ENOUGH_FOR_INVOICE) && $product_type == 0 && $product->stock_reel < $qty) { + $this->error=$langs->trans('ErrorStockIsNotEnough'); + $this->db->rollback(); + return -3; + } + } + $staticline = clone $line; $line->oldline = $staticline; From d6cda60ed1c1f239ee7e76e6fc48430870d1948a Mon Sep 17 00:00:00 2001 From: fmarcet Date: Mon, 1 Feb 2016 13:40:02 +0100 Subject: [PATCH 031/116] FIX: Check stock of product by warehouse if $entrepot_id defined on shippings --- htdocs/expedition/class/expedition.class.php | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 4ed4a061358..88d25121ade 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -8,6 +8,7 @@ * Copyright (C) 2014 Cedric GROSS * Copyright (C) 2014 Marcos García * Copyright (C) 2014 Francis Appels + * Copyright (C) 2016 Ferran Marcet * * 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 @@ -763,13 +764,19 @@ class Expedition extends CommonObject return -1; } - if ($conf->global->STOCK_MUST_BE_ENOUGH_FOR_SHIPMENT) // FIXME Check is done for stock of product, it must be done for stock of product into warehouse if $entrepot_id defined + if ($conf->global->STOCK_MUST_BE_ENOUGH_FOR_SHIPMENT) { $product=new Product($this->db); $result=$product->fetch($fk_product); + if ($entrepot_id > 0) { + $product->load_stock(); + $product_stock = $product->stock_warehouse[$entrepot_id]->real; + } + else + $product_stock = $product->stock_reel; $product_type=$product->type; - if ($product_type == 0 && $product->stock_reel < $qty) + if ($product_type == 0 && $product_stock < $qty) { $this->error=$langs->trans('ErrorStockIsNotEnough'); $this->db->rollback(); From 4e83abba30d11a3c7ce99f8949cbaed2219fda2b Mon Sep 17 00:00:00 2001 From: PeartreeG Date: Mon, 1 Feb 2016 15:40:16 +0100 Subject: [PATCH 032/116] Update element_resource.php --- htdocs/resource/element_resource.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/htdocs/resource/element_resource.php b/htdocs/resource/element_resource.php index e4477e1674a..4193ee44749 100644 --- a/htdocs/resource/element_resource.php +++ b/htdocs/resource/element_resource.php @@ -257,6 +257,10 @@ else } } + // hook for other elements linked + $parameters=array('element'=>$element, 'element_id'=>$element_id ); + $reshook=$hookmanager->executeHooks('printElementTab',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks + if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); //print load_fiche_titre($langs->trans('ResourcesLinkedToElement'),'',''); From c1ff21c30a860bcf9431f0a537bacb7b140d89fc Mon Sep 17 00:00:00 2001 From: PeartreeG Date: Mon, 1 Feb 2016 16:09:58 +0100 Subject: [PATCH 033/116] add fichinter link to resources --- htdocs/core/lib/fichinter.lib.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/htdocs/core/lib/fichinter.lib.php b/htdocs/core/lib/fichinter.lib.php index a6f68800dc4..ff67de88132 100644 --- a/htdocs/core/lib/fichinter.lib.php +++ b/htdocs/core/lib/fichinter.lib.php @@ -2,6 +2,8 @@ /* Copyright (C) 2006-2007 Laurent Destailleur * Copyright (C) 2007 Rodolphe Quiedeville * Copyright (C) 2012 Regis Houssin + * Copyright (C) 2016 Gilles Poirier + * * 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 @@ -65,6 +67,15 @@ function fichinter_prepare_head($object) // $this->tabs = array('entity:-tabname); to remove a tab complete_head_from_modules($conf,$langs,$object,$head,$h,'intervention'); + // Tab to link resources + if ($conf->resource->enabled) + { + $head[$h][0] = DOL_URL_ROOT.'/resource/element_resource.php?element=ficheinter&element_id='.$object->id; + $head[$h][1] = $langs->trans("Resources"); + $head[$h][2] = 'resource'; + $h++; + } + if (empty($conf->global->MAIN_DISABLE_NOTES_TAB)) { $nbNote = 0; From 62b35ffa455acbf9e80a26172d3f076b92b490cc Mon Sep 17 00:00:00 2001 From: PeartreeG Date: Mon, 1 Feb 2016 16:15:30 +0100 Subject: [PATCH 034/116] add fichinter tabs on resource element link --- htdocs/resource/element_resource.php | 40 +++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/htdocs/resource/element_resource.php b/htdocs/resource/element_resource.php index 4193ee44749..80c9f1f97a7 100644 --- a/htdocs/resource/element_resource.php +++ b/htdocs/resource/element_resource.php @@ -1,5 +1,6 @@ +/* Copyright (C) 2013 Jean-François Ferry + * Copyright (C) 2016 Gilles Poirier * * 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 @@ -257,6 +258,43 @@ else } } + /* + * Specific to agenda module + */ + if ($element_id && $element == 'ficheinter') + { + require_once DOL_DOCUMENT_ROOT.'/core/lib/fichinter.lib.php'; + + $fichinter = fetchObjectByElement($element_id, $element); + if (is_object($fichinter)) + { + $head=fichinter_prepare_head($fichinter); + dol_fiche_head($head, 'resources', $langs->trans("InterventionCard"),0,'intervention'); + + // Affichage fiche action en mode visu + print ''; + + $linkback = ''.$langs->trans("BackToList").''; + + // Ref + print ''; + + + // Customer + if ( is_null($fichinter->client) ) + $fichinter->fetch_thirdparty(); + + print ""; + print ''; + print "
    '.$langs->trans("Ref").''; + print $form->showrefnav($fichinter, 'id', $linkback, ($user->societe_id?0:1), 'ref', 'ref', ''); + print '
    ".$langs->trans("Company")."'.$fichinter->client->getNomUrl(1).'
    "; + + dol_fiche_end(); + } + } + + // hook for other elements linked $parameters=array('element'=>$element, 'element_id'=>$element_id ); $reshook=$hookmanager->executeHooks('printElementTab',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks From 6bb6e66e134efb3cf53a5e332db25da4482250bb Mon Sep 17 00:00:00 2001 From: PeartreeG Date: Tue, 2 Feb 2016 14:05:35 +0100 Subject: [PATCH 035/116] element name used to create the clas... --- htdocs/resource/element_resource.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/resource/element_resource.php b/htdocs/resource/element_resource.php index 80c9f1f97a7..6ac787bc359 100644 --- a/htdocs/resource/element_resource.php +++ b/htdocs/resource/element_resource.php @@ -259,9 +259,9 @@ else } /* - * Specific to agenda module + * Specific to fichinter module */ - if ($element_id && $element == 'ficheinter') + if ($element_id && $element == 'fichinter') { require_once DOL_DOCUMENT_ROOT.'/core/lib/fichinter.lib.php'; From 4c0f29d23460d27b1b4824d1fdb04af3d64e846f Mon Sep 17 00:00:00 2001 From: PeartreeG Date: Tue, 2 Feb 2016 14:05:58 +0100 Subject: [PATCH 036/116] Update fichinter.lib.php --- htdocs/core/lib/fichinter.lib.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/lib/fichinter.lib.php b/htdocs/core/lib/fichinter.lib.php index ff67de88132..390a7e14435 100644 --- a/htdocs/core/lib/fichinter.lib.php +++ b/htdocs/core/lib/fichinter.lib.php @@ -70,7 +70,7 @@ function fichinter_prepare_head($object) // Tab to link resources if ($conf->resource->enabled) { - $head[$h][0] = DOL_URL_ROOT.'/resource/element_resource.php?element=ficheinter&element_id='.$object->id; + $head[$h][0] = DOL_URL_ROOT.'/resource/element_resource.php?element=fichinter&element_id='.$object->id; $head[$h][1] = $langs->trans("Resources"); $head[$h][2] = 'resource'; $h++; From 835c2725c517527cd09031cca6cb0181f2156896 Mon Sep 17 00:00:00 2001 From: PeartreeG Date: Tue, 2 Feb 2016 14:14:01 +0100 Subject: [PATCH 037/116] Update element_resource.php --- htdocs/resource/element_resource.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/resource/element_resource.php b/htdocs/resource/element_resource.php index 6ac787bc359..7dbcd3a5522 100644 --- a/htdocs/resource/element_resource.php +++ b/htdocs/resource/element_resource.php @@ -269,7 +269,7 @@ else if (is_object($fichinter)) { $head=fichinter_prepare_head($fichinter); - dol_fiche_head($head, 'resources', $langs->trans("InterventionCard"),0,'intervention'); + dol_fiche_head($head, 'resource', $langs->trans("InterventionCard"),0,'intervention'); // Affichage fiche action en mode visu print ''; From b0579cc39b8a8b1574e867c6a5ccb2c43e08867d Mon Sep 17 00:00:00 2001 From: PeartreeG Date: Tue, 2 Feb 2016 18:05:00 +0100 Subject: [PATCH 038/116] Update 3.9.0-4.0.0.sql --- htdocs/install/mysql/migration/3.9.0-4.0.0.sql | 3 --- 1 file changed, 3 deletions(-) diff --git a/htdocs/install/mysql/migration/3.9.0-4.0.0.sql b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql index 352d950ef02..d8e42cff15f 100644 --- a/htdocs/install/mysql/migration/3.9.0-4.0.0.sql +++ b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql @@ -50,7 +50,4 @@ ALTER TABLE llx_resource ADD COLUMN fk_statut smallint NOT NULL DEFAULT '0 ALTER TABLE llx_resource ADD COLUMN import_key varchar(14); ALTER TABLE llx_resource ADD COLUMN extraparams varchar(255); -ALTER TABLE llx_element_resources ADD COLUMN dateo date; -- date start of using ressource -ALTER TABLE llx_element_resources ADD COLUMN datee date; -- date end of using ressource -ALTER TABLE llx_element_resources ADD COLUMN datet date; -- date terminaison of using ressource ALTER TABLE llx_element_resources ADD COLUMN duree real; -- total duration of using ressource From cc8af4fba118481eb86eac8e840da86cc791a7ca Mon Sep 17 00:00:00 2001 From: PeartreeG Date: Tue, 2 Feb 2016 18:05:24 +0100 Subject: [PATCH 039/116] Update llx_element_resources.sql --- htdocs/install/mysql/tables/llx_element_resources.sql | 3 --- 1 file changed, 3 deletions(-) diff --git a/htdocs/install/mysql/tables/llx_element_resources.sql b/htdocs/install/mysql/tables/llx_element_resources.sql index 4fac28de4b1..d619626d3d7 100644 --- a/htdocs/install/mysql/tables/llx_element_resources.sql +++ b/htdocs/install/mysql/tables/llx_element_resources.sql @@ -26,9 +26,6 @@ CREATE TABLE llx_element_resources resource_type varchar(64), -- resource or user busy integer, mandatory integer, - dateo date, -- date start of using ressource - datee date, -- date end of using ressource - datet date, -- date terminaison of using ressource duree real, -- total duration of using ressource fk_user_create integer, tms timestamp From ea5b8a409c243ce45159792bcee21bbd80d0791e Mon Sep 17 00:00:00 2001 From: PeartreeG Date: Tue, 2 Feb 2016 18:37:54 +0100 Subject: [PATCH 040/116] little forget... --- htdocs/resource/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/resource/card.php b/htdocs/resource/card.php index 31fb6a955b1..59862a811ba 100644 --- a/htdocs/resource/card.php +++ b/htdocs/resource/card.php @@ -152,7 +152,7 @@ $formresource = new FormResource($db); if ( $object->fetch($id) > 0 ) { - $head=resourcePrepareHead($object); + $head=resource_prepare_head($object); if ($action == 'edit' ) From 0166d2ec3a374da8035fd7ab31f36f62c19c0df9 Mon Sep 17 00:00:00 2001 From: Benlo Date: Mon, 7 Mar 2016 17:49:26 +0100 Subject: [PATCH 041/116] FR4763 add possibility to export contacts/thirdparty categories --- .../core/modules/export/export_csv.modules.php | 2 +- .../core/modules/export/export_excel.modules.php | 2 +- .../core/modules/export/export_tsv.modules.php | 2 +- htdocs/core/modules/modSociete.class.php | 16 ++++++++++------ htdocs/exports/class/export.class.php | 6 +++--- 5 files changed, 16 insertions(+), 12 deletions(-) diff --git a/htdocs/core/modules/export/export_csv.modules.php b/htdocs/core/modules/export/export_csv.modules.php index 3da80b1cc96..e8977c11789 100644 --- a/htdocs/core/modules/export/export_csv.modules.php +++ b/htdocs/core/modules/export/export_csv.modules.php @@ -240,7 +240,7 @@ class ExportCsv extends ModeleExports $this->col=0; foreach($array_selected_sorted as $code => $value) { - if (strpos($code,' as ') == 0) $alias=str_replace(array('.','-'),'_',$code); + if (strpos($code,' as ') == 0) $alias=str_replace(array('.','-','(',')'),'_',$code); else $alias=substr($code, strpos($code, ' as ') + 4); if (empty($alias)) dol_print_error('','Bad value for field with key='.$code.'. Try to redefine export.'); diff --git a/htdocs/core/modules/export/export_excel.modules.php b/htdocs/core/modules/export/export_excel.modules.php index ede00733695..91f78522973 100644 --- a/htdocs/core/modules/export/export_excel.modules.php +++ b/htdocs/core/modules/export/export_excel.modules.php @@ -319,7 +319,7 @@ class ExportExcel extends ModeleExports foreach($array_selected_sorted as $code => $value) { - if (strpos($code,' as ') == 0) $alias=str_replace(array('.','-'),'_',$code); + if (strpos($code,' as ') == 0) $alias=str_replace(array('.','-','(',')'),'_',$code); else $alias=substr($code, strpos($code, ' as ') + 4); if (empty($alias)) dol_print_error('','Bad value for field with code='.$code.'. Try to redefine export.'); $newvalue=$objp->$alias; diff --git a/htdocs/core/modules/export/export_tsv.modules.php b/htdocs/core/modules/export/export_tsv.modules.php index dad3a4b67f9..2945c5095b8 100644 --- a/htdocs/core/modules/export/export_tsv.modules.php +++ b/htdocs/core/modules/export/export_tsv.modules.php @@ -215,7 +215,7 @@ class ExportTsv extends ModeleExports $this->col=0; foreach($array_selected_sorted as $code => $value) { - if (strpos($code,' as ') == 0) $alias=str_replace(array('.','-'),'_',$code); + if (strpos($code,' as ') == 0) $alias=str_replace(array('.','-','(',')'),'_',$code); else $alias=substr($code, strpos($code, ' as ') + 4); if (empty($alias)) dol_print_error('','Bad value for field with code='.$code.'. Try to redefine export.'); diff --git a/htdocs/core/modules/modSociete.class.php b/htdocs/core/modules/modSociete.class.php index f2ce7ebf0da..7a3224dea7a 100644 --- a/htdocs/core/modules/modSociete.class.php +++ b/htdocs/core/modules/modSociete.class.php @@ -253,13 +253,13 @@ class modSociete extends DolibarrModules $this->export_label[$r]='ExportDataset_company_1'; $this->export_icon[$r]='company'; $this->export_permission[$r]=array(array("societe","export")); - $this->export_fields_array[$r]=array('s.rowid'=>"Id",'s.nom'=>"Name",'s.status'=>"Status",'s.client'=>"Customer",'s.fournisseur'=>"Supplier",'s.datec'=>"DateCreation",'s.tms'=>"DateLastModification",'s.code_client'=>"CustomerCode",'s.code_fournisseur'=>"SupplierCode",'s.code_compta'=>"AccountancyCode",'s.code_compta_fournisseur'=>"SupplierAccountancyCode",'s.address'=>"Address",'s.zip'=>"Zip",'s.town'=>"Town",'d.nom'=>'State','c.label'=>"Country",'c.code'=>"CountryCode",'s.phone'=>"Phone",'s.fax'=>"Fax",'s.url'=>"Url",'s.email'=>"Email",'s.default_lang'=>"DefaultLang",'s.siren'=>"ProfId1",'s.siret'=>"ProfId2",'s.ape'=>"ProfId3",'s.idprof4'=>"ProfId4",'s.idprof5'=>"ProfId5",'s.idprof6'=>"ProfId6",'s.tva_intra'=>"VATIntraShort",'s.capital'=>"Capital",'s.note_private'=>"NotePrivate",'s.note_public'=>"NotePublic",'t.libelle'=>"ThirdPartyType",'ce.code'=>"Staff","cfj.libelle"=>"JuridicalStatus",'s.fk_prospectlevel'=>'ProspectLevel','st.code'=>'ProspectStatus'); + $this->export_fields_array[$r]=array('s.rowid'=>"Id",'s.nom'=>"Name",'s.status'=>"Status",'s.client'=>"Customer",'s.fournisseur'=>"Supplier",'s.datec'=>"DateCreation",'s.tms'=>"DateLastModification",'s.code_client'=>"CustomerCode",'s.code_fournisseur'=>"SupplierCode",'s.code_compta'=>"AccountancyCode",'s.code_compta_fournisseur'=>"SupplierAccountancyCode",'s.address'=>"Address",'s.zip'=>"Zip",'s.town'=>"Town",'d.nom'=>'State','c.label'=>"Country",'c.code'=>"CountryCode",'s.phone'=>"Phone",'s.fax'=>"Fax",'s.url'=>"Url",'s.email'=>"Email",'s.default_lang'=>"DefaultLang",'s.siren'=>"ProfId1",'s.siret'=>"ProfId2",'s.ape'=>"ProfId3",'s.idprof4'=>"ProfId4",'s.idprof5'=>"ProfId5",'s.idprof6'=>"ProfId6",'s.tva_intra'=>"VATIntraShort",'s.capital'=>"Capital",'s.note_private'=>"NotePrivate",'s.note_public'=>"NotePublic",'t.libelle'=>"ThirdPartyType",'ce.code'=>"Staff","cfj.libelle"=>"JuridicalStatus",'s.fk_prospectlevel'=>'ProspectLevel','st.code'=>'ProspectStatus','group_concat(cat.label)'=>'Categories'); if (! empty($conf->global->SOCIETE_USEPREFIX)) $this->export_fields_array[$r]['s.prefix']='Prefix'; $keyforselect='societe'; $keyforelement='company'; $keyforaliasextra='extra'; include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; $this->export_fields_array[$r]+=array('u.login'=>'SaleRepresentativeLogin','u.firstname'=>'SaleRepresentativeFirstname', 'u.lastname'=>'SaleRepresentativeLastname'); //$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:nom",'s.nom'=>"Text",'s.status'=>"Text",'s.client'=>"Boolean",'s.fournisseur'=>"Boolean",'s.datec'=>"Date",'s.tms'=>"Date",'s.code_client'=>"Text",'s.code_fournisseur'=>"Text",'s.address'=>"Text",'s.zip'=>"Text",'s.town'=>"Text",'c.label'=>"List:c_country:label:label",'c.code'=>"Text",'s.phone'=>"Text",'s.fax'=>"Text",'s.url'=>"Text",'s.email'=>"Text",'s.default_lang'=>"Text",'s.siret'=>"Text",'s.siren'=>"Text",'s.ape'=>"Text",'s.idprof4'=>"Text",'s.idprof5'=>"Text",'s.idprof6'=>"Text",'s.tva_intra'=>"Text",'s.capital'=>"Numeric",'s.note'=>"Text",'t.libelle'=>"Text",'ce.code'=>"List:c_effectif:libelle:code","cfj.libelle"=>"Text",'s.fk_prospectlevel'=>'List:c_prospectlevel:label:code','s.fk_stcomm'=>'List:c_stcomm:libelle:code','d.nom'=>'List:c_departements:nom:rowid'); - $this->export_TypeFields_array[$r]=array('s.nom'=>"Text",'s.status'=>"Numeric",'s.client'=>"Numeric",'s.fournisseur'=>"Boolean",'s.datec'=>"Date",'s.tms'=>"Date",'s.code_client'=>"Text",'s.code_fournisseur'=>"Text",'s.code_compta'=>"Text",'s.code_compta_fournisseur'=>"Text",'s.address'=>"Text",'s.zip'=>"Text",'s.town'=>"Text",'c.label'=>"List:c_country:label:label",'c.code'=>"Text",'s.phone'=>"Text",'s.fax'=>"Text",'s.url'=>"Text",'s.email'=>"Text",'s.default_lang'=>"Text",'s.siret'=>"Text",'s.siren'=>"Text",'s.ape'=>"Text",'s.idprof4'=>"Text",'s.idprof5'=>"Text",'s.idprof6'=>"Text",'s.tva_intra'=>"Text",'s.capital'=>"Numeric",'s.note_private'=>"Text",'s.note_public'=>"Text",'t.libelle'=>"Text",'ce.code'=>"List:c_effectif:libelle:code","cfj.libelle"=>"Text",'s.fk_prospectlevel'=>'List:c_prospectlevel:label:code','st.code'=>'List:c_stcomm:libelle:code','d.nom'=>'Text','u.login'=>'Text','u.firstname'=>'Text','u.lastname'=>'Text'); + $this->export_TypeFields_array[$r]=array('s.nom'=>"Text",'s.status'=>"Numeric",'s.client'=>"Numeric",'s.fournisseur'=>"Boolean",'s.datec'=>"Date",'s.tms'=>"Date",'s.code_client'=>"Text",'s.code_fournisseur'=>"Text",'s.code_compta'=>"Text",'s.code_compta_fournisseur'=>"Text",'s.address'=>"Text",'s.zip'=>"Text",'s.town'=>"Text",'c.label'=>"List:c_country:label:label",'c.code'=>"Text",'s.phone'=>"Text",'s.fax'=>"Text",'s.url'=>"Text",'s.email'=>"Text",'s.default_lang'=>"Text",'s.siret'=>"Text",'s.siren'=>"Text",'s.ape'=>"Text",'s.idprof4'=>"Text",'s.idprof5'=>"Text",'s.idprof6'=>"Text",'s.tva_intra'=>"Text",'s.capital'=>"Numeric",'s.note_private'=>"Text",'s.note_public'=>"Text",'t.libelle'=>"Text",'ce.code'=>"List:c_effectif:libelle:code","cfj.libelle"=>"Text",'s.fk_prospectlevel'=>'List:c_prospectlevel:label:code','st.code'=>'List:c_stcomm:libelle:code','d.nom'=>'Text','u.login'=>'Text','u.firstname'=>'Text','u.lastname'=>'Text','group_concat(cat.label)'=>'Text'); $this->export_entities_array[$r]=array('u.login'=>'user','u.firstname'=>'user','u.lastname'=>'user'); // We define here only fields that use another picto $this->export_examplevalues_array[$r]=array('s.client'=>'0 (no customer no prospect)/1 (customer)/2 (prospect)/3 (customer and prospect)','s.fournisseur'=>'0 (not a supplier) or 1 (supplier)'); $this->export_sql_start[$r]='SELECT DISTINCT '; @@ -272,7 +272,9 @@ class modSociete extends DolibarrModules $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_departements as d ON s.fk_departement = d.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_stcomm as st ON s.fk_stcomm = st.id'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'societe_commerciaux as sc ON sc.fk_soc = s.rowid LEFT JOIN '.MAIN_DB_PREFIX.'user as u ON sc.fk_user = u.rowid'; - $this->export_sql_end[$r] .=' WHERE s.entity IN ('.getEntity('societe', 1).')'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_societe as cs on s.rowid=cs.fk_soc '; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'categorie as cat on cs.fk_categorie=cat.rowid'; + $this->export_sql_end[$r] .=' WHERE s.entity IN ('.getEntity('societe', 1).') GROUP BY s.rowid'; // Export list of contacts and attributes $r++; @@ -280,9 +282,9 @@ class modSociete extends DolibarrModules $this->export_label[$r]='ExportDataset_company_2'; $this->export_icon[$r]='contact'; $this->export_permission[$r]=array(array("societe","contact","export")); - $this->export_fields_array[$r]=array('c.rowid'=>"IdContact",'c.civility'=>"CivilityCode",'c.lastname'=>'Lastname','c.firstname'=>'Firstname','c.poste'=>'PostOrFunction','c.datec'=>"DateCreation",'c.tms'=>"DateLastModification",'c.priv'=>"ContactPrivate",'c.address'=>"Address",'c.zip'=>"Zip",'c.town'=>"Town",'d.nom'=>'State','co.label'=>"Country",'co.code'=>"CountryCode",'c.phone'=>"Phone",'c.fax'=>"Fax",'c.phone_mobile'=>"Mobile",'c.email'=>"EMail",'s.rowid'=>"IdCompany",'s.nom'=>"CompanyName",'s.status'=>"Status",'s.code_client'=>"CustomerCode",'s.code_fournisseur'=>"SupplierCode", 's.client'=>'Customer','s.fournisseur'=>'Supplier'); + $this->export_fields_array[$r]=array('c.rowid'=>"IdContact",'c.civility'=>"CivilityCode",'c.lastname'=>'Lastname','c.firstname'=>'Firstname','c.poste'=>'PostOrFunction','c.datec'=>"DateCreation",'c.tms'=>"DateLastModification",'c.priv'=>"ContactPrivate",'c.address'=>"Address",'c.zip'=>"Zip",'c.town'=>"Town",'d.nom'=>'State','co.label'=>"Country",'co.code'=>"CountryCode",'c.phone'=>"Phone",'c.fax'=>"Fax",'c.phone_mobile'=>"Mobile",'c.email'=>"EMail",'s.rowid'=>"IdCompany",'s.nom'=>"CompanyName",'s.status'=>"Status",'s.code_client'=>"CustomerCode",'s.code_fournisseur'=>"SupplierCode", 's.client'=>'Customer','s.fournisseur'=>'Supplier','group_concat(cat.label)'=>'Categories'); $this->export_examplevalues_array[$r]=array('s.client'=>'0 (no customer no prospect)/1 (customer)/2 (prospect)/3 (customer and prospect)','s.fournisseur'=>'0 (not a supplier) or 1 (supplier)'); - $this->export_TypeFields_array[$r]=array('c.civility'=>"List:c_civility:label:code",'c.lastname'=>'Text','c.firstname'=>'Text','c.poste'=>'Text','c.datec'=>"Date",'c.priv'=>"Boolean",'c.address'=>"Text",'c.zip'=>"Text",'c.town'=>"Text",'d.nom'=>'Text','co.label'=>"List:c_country:label:rowid",'co.code'=>"Text",'c.phone'=>"Text",'c.fax'=>"Text",'c.email'=>"Text",'s.rowid'=>"List:societe:nom",'s.nom'=>"Text",'s.status'=>"Status",'s.code_client'=>"Text",'s.code_fournisseur'=>"Text",'s.client'=>"Text",'s.fournisseur'=>"Text"); + $this->export_TypeFields_array[$r]=array('c.civility'=>"List:c_civility:label:code",'c.lastname'=>'Text','c.firstname'=>'Text','c.poste'=>'Text','c.datec'=>"Date",'c.priv'=>"Boolean",'c.address'=>"Text",'c.zip'=>"Text",'c.town'=>"Text",'d.nom'=>'Text','co.label'=>"List:c_country:label:rowid",'co.code'=>"Text",'c.phone'=>"Text",'c.fax'=>"Text",'c.email'=>"Text",'s.rowid'=>"List:societe:nom",'s.nom'=>"Text",'s.status'=>"Status",'s.code_client'=>"Text",'s.code_fournisseur'=>"Text",'s.client'=>"Text",'s.fournisseur'=>"Text",'group_concat(cat.label)'=>'Text'); $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>"company", 's.status'=>'company', 's.code_client'=>"company",'s.code_fournisseur'=>"company", 's.client'=>"company", 's.fournisseur'=>"company"); // We define here only fields that use another picto if (empty($conf->fournisseur->enabled)) { @@ -297,7 +299,9 @@ class modSociete extends DolibarrModules $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_departements as d ON c.fk_departement = d.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as co ON c.fk_pays = co.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'socpeople_extrafields as extra ON extra.fk_object = c.rowid'; - $this->export_sql_end[$r] .=' WHERE c.entity IN ('.getEntity("societe", 1).')'; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_contact as cs on s.rowid=cs.fk_socpeople '; + $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'categorie as cat on cs.fk_categorie=cat.rowid'; + $this->export_sql_end[$r] .=' WHERE c.entity IN ('.getEntity("societe", 1).') GROUP BY s.rowid'; // Imports diff --git a/htdocs/exports/class/export.class.php b/htdocs/exports/class/export.class.php index 7912b4f189f..6632f050550 100644 --- a/htdocs/exports/class/export.class.php +++ b/htdocs/exports/class/export.class.php @@ -225,7 +225,7 @@ class Export else $i++; if (strpos($key, ' as ')===false) { - $newfield=$key.' as '.str_replace(array('.', '-'),'_',$key); + $newfield=$key.' as '.str_replace(array('.', '-','(',')'),'_',$key); } else { $newfield=$key; } @@ -587,14 +587,14 @@ class Export if ($this->array_export_special[$indice][$key]=='NULLIFNEG') { //$alias=$this->array_export_alias[$indice][$key]; - $alias=str_replace(array('.', '-'),'_',$key); + $alias=str_replace(array('.', '-','(',')'),'_',$key); if ($objp->$alias < 0) $objp->$alias=''; } // Operation ZEROIFNEG if ($this->array_export_special[$indice][$key]=='ZEROIFNEG') { //$alias=$this->array_export_alias[$indice][$key]; - $alias=str_replace(array('.', '-'),'_',$key); + $alias=str_replace(array('.', '-','(',')'),'_',$key); if ($objp->$alias < 0) $objp->$alias='0'; } } From aa64266c2f0059e679d18db11c5b65cfe26e908b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a=20de=20La=20Fuente?= Date: Sat, 16 Apr 2016 18:44:31 +0200 Subject: [PATCH 042/116] FIX #5008 SQL error when editing the reference of a supplier invoice that already exists Close #5008 --- htdocs/fourn/class/fournisseur.facture.class.php | 13 +++++++++++-- htdocs/fourn/facture/card.php | 7 +++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index 42418184c4f..a4799bc53fe 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -7,7 +7,7 @@ * Copyright (C) 2010-2015 Juanjo Menent * Copyright (C) 2013 Philippe Grand * Copyright (C) 2013 Florian Henry - * Copyright (C) 2014-2015 Marcos García + * Copyright (C) 2014-2016 Marcos García * Copyright (C) 2015 Bahfir Abbes * * This program is free software; you can redistribute it and/or modify @@ -646,7 +646,16 @@ class FactureFournisseur extends CommonInvoice dol_syslog(get_class($this)."::update", LOG_DEBUG); $resql = $this->db->query($sql); - if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); } + + if (!$resql) { + $error++; + + if ($this->db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') { + $this->errors[] = $langs->trans('ErrorRefAlreadyExists'); + } else { + $this->errors[] = "Error ".$this->db->lasterror(); + } + } if (! $error) { diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index f70ca50c902..d8e8cbe39e3 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -238,8 +238,11 @@ if (empty($reshook)) // Set supplier ref if ($action == 'setref_supplier' && $user->rights->fournisseur->commande->creer) { - $result=$object->setValueFrom('ref_supplier',GETPOST('ref_supplier','alpha')); - if ($result < 0) dol_print_error($db, $object->error); + $object->ref_supplier = GETPOST('ref_supplier', 'alpha'); + + if ($object->update() < 0) { + setEventMessage($object->error, 'errors'); + } } // conditions de reglement From ee9f1f32c16f15cd3bd012cab98a459c2099d51f Mon Sep 17 00:00:00 2001 From: Fixit Management Date: Tue, 19 Apr 2016 12:43:50 +0200 Subject: [PATCH 043/116] Update conf --- htdocs/core/modules/modSociete.class.php | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/htdocs/core/modules/modSociete.class.php b/htdocs/core/modules/modSociete.class.php index 7a3224dea7a..6bf33dcc451 100644 --- a/htdocs/core/modules/modSociete.class.php +++ b/htdocs/core/modules/modSociete.class.php @@ -253,13 +253,17 @@ class modSociete extends DolibarrModules $this->export_label[$r]='ExportDataset_company_1'; $this->export_icon[$r]='company'; $this->export_permission[$r]=array(array("societe","export")); - $this->export_fields_array[$r]=array('s.rowid'=>"Id",'s.nom'=>"Name",'s.status'=>"Status",'s.client'=>"Customer",'s.fournisseur'=>"Supplier",'s.datec'=>"DateCreation",'s.tms'=>"DateLastModification",'s.code_client'=>"CustomerCode",'s.code_fournisseur'=>"SupplierCode",'s.code_compta'=>"AccountancyCode",'s.code_compta_fournisseur'=>"SupplierAccountancyCode",'s.address'=>"Address",'s.zip'=>"Zip",'s.town'=>"Town",'d.nom'=>'State','c.label'=>"Country",'c.code'=>"CountryCode",'s.phone'=>"Phone",'s.fax'=>"Fax",'s.url'=>"Url",'s.email'=>"Email",'s.default_lang'=>"DefaultLang",'s.siren'=>"ProfId1",'s.siret'=>"ProfId2",'s.ape'=>"ProfId3",'s.idprof4'=>"ProfId4",'s.idprof5'=>"ProfId5",'s.idprof6'=>"ProfId6",'s.tva_intra'=>"VATIntraShort",'s.capital'=>"Capital",'s.note_private'=>"NotePrivate",'s.note_public'=>"NotePublic",'t.libelle'=>"ThirdPartyType",'ce.code'=>"Staff","cfj.libelle"=>"JuridicalStatus",'s.fk_prospectlevel'=>'ProspectLevel','st.code'=>'ProspectStatus','group_concat(cat.label)'=>'Categories'); + $this->export_fields_array[$r]=array('s.rowid'=>"Id",'s.nom'=>"Name",'s.status'=>"Status",'s.client'=>"Customer",'s.fournisseur'=>"Supplier",'s.datec'=>"DateCreation",'s.tms'=>"DateLastModification",'s.code_client'=>"CustomerCode",'s.code_fournisseur'=>"SupplierCode",'s.code_compta'=>"AccountancyCode",'s.code_compta_fournisseur'=>"SupplierAccountancyCode",'s.address'=>"Address",'s.zip'=>"Zip",'s.town'=>"Town",'d.nom'=>'State','c.label'=>"Country",'c.code'=>"CountryCode",'s.phone'=>"Phone",'s.fax'=>"Fax",'s.url'=>"Url",'s.email'=>"Email",'s.default_lang'=>"DefaultLang",'s.siren'=>"ProfId1",'s.siret'=>"ProfId2",'s.ape'=>"ProfId3",'s.idprof4'=>"ProfId4",'s.idprof5'=>"ProfId5",'s.idprof6'=>"ProfId6",'s.tva_intra'=>"VATIntraShort",'s.capital'=>"Capital",'s.note_private'=>"NotePrivate",'s.note_public'=>"NotePublic",'t.libelle'=>"ThirdPartyType",'ce.code'=>"Staff","cfj.libelle"=>"JuridicalStatus",'s.fk_prospectlevel'=>'ProspectLevel','st.code'=>'ProspectStatus'); + if (! empty($conf->global->EXPORTTOOL_CATEGORIES)) $this->export_fields_array[$r]=array_merge($this->export_fields_array[$r],array('group_concat(cat.label)'=>'Categories')); + if (! empty($conf->global->SOCIETE_USEPREFIX)) $this->export_fields_array[$r]['s.prefix']='Prefix'; $keyforselect='societe'; $keyforelement='company'; $keyforaliasextra='extra'; include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; $this->export_fields_array[$r]+=array('u.login'=>'SaleRepresentativeLogin','u.firstname'=>'SaleRepresentativeFirstname', 'u.lastname'=>'SaleRepresentativeLastname'); //$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:nom",'s.nom'=>"Text",'s.status'=>"Text",'s.client'=>"Boolean",'s.fournisseur'=>"Boolean",'s.datec'=>"Date",'s.tms'=>"Date",'s.code_client'=>"Text",'s.code_fournisseur'=>"Text",'s.address'=>"Text",'s.zip'=>"Text",'s.town'=>"Text",'c.label'=>"List:c_country:label:label",'c.code'=>"Text",'s.phone'=>"Text",'s.fax'=>"Text",'s.url'=>"Text",'s.email'=>"Text",'s.default_lang'=>"Text",'s.siret'=>"Text",'s.siren'=>"Text",'s.ape'=>"Text",'s.idprof4'=>"Text",'s.idprof5'=>"Text",'s.idprof6'=>"Text",'s.tva_intra'=>"Text",'s.capital'=>"Numeric",'s.note'=>"Text",'t.libelle'=>"Text",'ce.code'=>"List:c_effectif:libelle:code","cfj.libelle"=>"Text",'s.fk_prospectlevel'=>'List:c_prospectlevel:label:code','s.fk_stcomm'=>'List:c_stcomm:libelle:code','d.nom'=>'List:c_departements:nom:rowid'); - $this->export_TypeFields_array[$r]=array('s.nom'=>"Text",'s.status'=>"Numeric",'s.client'=>"Numeric",'s.fournisseur'=>"Boolean",'s.datec'=>"Date",'s.tms'=>"Date",'s.code_client'=>"Text",'s.code_fournisseur'=>"Text",'s.code_compta'=>"Text",'s.code_compta_fournisseur'=>"Text",'s.address'=>"Text",'s.zip'=>"Text",'s.town'=>"Text",'c.label'=>"List:c_country:label:label",'c.code'=>"Text",'s.phone'=>"Text",'s.fax'=>"Text",'s.url'=>"Text",'s.email'=>"Text",'s.default_lang'=>"Text",'s.siret'=>"Text",'s.siren'=>"Text",'s.ape'=>"Text",'s.idprof4'=>"Text",'s.idprof5'=>"Text",'s.idprof6'=>"Text",'s.tva_intra'=>"Text",'s.capital'=>"Numeric",'s.note_private'=>"Text",'s.note_public'=>"Text",'t.libelle'=>"Text",'ce.code'=>"List:c_effectif:libelle:code","cfj.libelle"=>"Text",'s.fk_prospectlevel'=>'List:c_prospectlevel:label:code','st.code'=>'List:c_stcomm:libelle:code','d.nom'=>'Text','u.login'=>'Text','u.firstname'=>'Text','u.lastname'=>'Text','group_concat(cat.label)'=>'Text'); + $this->export_TypeFields_array[$r]=array('s.nom'=>"Text",'s.status'=>"Numeric",'s.client'=>"Numeric",'s.fournisseur'=>"Boolean",'s.datec'=>"Date",'s.tms'=>"Date",'s.code_client'=>"Text",'s.code_fournisseur'=>"Text",'s.code_compta'=>"Text",'s.code_compta_fournisseur'=>"Text",'s.address'=>"Text",'s.zip'=>"Text",'s.town'=>"Text",'c.label'=>"List:c_country:label:label",'c.code'=>"Text",'s.phone'=>"Text",'s.fax'=>"Text",'s.url'=>"Text",'s.email'=>"Text",'s.default_lang'=>"Text",'s.siret'=>"Text",'s.siren'=>"Text",'s.ape'=>"Text",'s.idprof4'=>"Text",'s.idprof5'=>"Text",'s.idprof6'=>"Text",'s.tva_intra'=>"Text",'s.capital'=>"Numeric",'s.note_private'=>"Text",'s.note_public'=>"Text",'t.libelle'=>"Text",'ce.code'=>"List:c_effectif:libelle:code","cfj.libelle"=>"Text",'s.fk_prospectlevel'=>'List:c_prospectlevel:label:code','st.code'=>'List:c_stcomm:libelle:code','d.nom'=>'Text','u.login'=>'Text','u.firstname'=>'Text','u.lastname'=>'Text'); + if (! empty($conf->global->EXPORT_TOOL_CATEGORIES)) $this->export_TypeFields_array[$r]=array_merge($this->export_TypeFields_array[$r],array('group_concat(cat.label)'=>'Text')); + $this->export_entities_array[$r]=array('u.login'=>'user','u.firstname'=>'user','u.lastname'=>'user'); // We define here only fields that use another picto $this->export_examplevalues_array[$r]=array('s.client'=>'0 (no customer no prospect)/1 (customer)/2 (prospect)/3 (customer and prospect)','s.fournisseur'=>'0 (not a supplier) or 1 (supplier)'); $this->export_sql_start[$r]='SELECT DISTINCT '; @@ -272,10 +276,10 @@ class modSociete extends DolibarrModules $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_departements as d ON s.fk_departement = d.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_stcomm as st ON s.fk_stcomm = st.id'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'societe_commerciaux as sc ON sc.fk_soc = s.rowid LEFT JOIN '.MAIN_DB_PREFIX.'user as u ON sc.fk_user = u.rowid'; - $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_societe as cs on s.rowid=cs.fk_soc '; - $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'categorie as cat on cs.fk_categorie=cat.rowid'; - $this->export_sql_end[$r] .=' WHERE s.entity IN ('.getEntity('societe', 1).') GROUP BY s.rowid'; - + if (! empty($conf->global->EXPORTTOOL_CATEGORIES)) $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_societe as cs on s.rowid=cs.fk_soc LEFT JOIN '.MAIN_DB_PREFIX.'categorie as cat on cs.fk_categorie=cat.rowid'; + $this->export_sql_end[$r] .=' WHERE s.entity IN ('.getEntity('societe', 1).')'; + if (! empty($conf->global->EXPORTTOOL_CATEGORIES)) $this->export_sql_end[$r] .=' GROUP BY s.rowid'; + print_r($db); // Export list of contacts and attributes $r++; $this->export_code[$r]=$this->rights_class.'_'.$r; @@ -284,7 +288,7 @@ class modSociete extends DolibarrModules $this->export_permission[$r]=array(array("societe","contact","export")); $this->export_fields_array[$r]=array('c.rowid'=>"IdContact",'c.civility'=>"CivilityCode",'c.lastname'=>'Lastname','c.firstname'=>'Firstname','c.poste'=>'PostOrFunction','c.datec'=>"DateCreation",'c.tms'=>"DateLastModification",'c.priv'=>"ContactPrivate",'c.address'=>"Address",'c.zip'=>"Zip",'c.town'=>"Town",'d.nom'=>'State','co.label'=>"Country",'co.code'=>"CountryCode",'c.phone'=>"Phone",'c.fax'=>"Fax",'c.phone_mobile'=>"Mobile",'c.email'=>"EMail",'s.rowid'=>"IdCompany",'s.nom'=>"CompanyName",'s.status'=>"Status",'s.code_client'=>"CustomerCode",'s.code_fournisseur'=>"SupplierCode", 's.client'=>'Customer','s.fournisseur'=>'Supplier','group_concat(cat.label)'=>'Categories'); $this->export_examplevalues_array[$r]=array('s.client'=>'0 (no customer no prospect)/1 (customer)/2 (prospect)/3 (customer and prospect)','s.fournisseur'=>'0 (not a supplier) or 1 (supplier)'); - $this->export_TypeFields_array[$r]=array('c.civility'=>"List:c_civility:label:code",'c.lastname'=>'Text','c.firstname'=>'Text','c.poste'=>'Text','c.datec'=>"Date",'c.priv'=>"Boolean",'c.address'=>"Text",'c.zip'=>"Text",'c.town'=>"Text",'d.nom'=>'Text','co.label'=>"List:c_country:label:rowid",'co.code'=>"Text",'c.phone'=>"Text",'c.fax'=>"Text",'c.email'=>"Text",'s.rowid'=>"List:societe:nom",'s.nom'=>"Text",'s.status'=>"Status",'s.code_client'=>"Text",'s.code_fournisseur'=>"Text",'s.client'=>"Text",'s.fournisseur'=>"Text",'group_concat(cat.label)'=>'Text'); + $this->export_TypeFields_array[$r]=array('c.civility'=>"List:c_civility:label:code",'c.lastname'=>'Text','c.firstname'=>'Text','c.poste'=>'Text','c.datec'=>"Date",'c.priv'=>"Boolean",'c.address'=>"Text",'c.zip'=>"Text",'c.town'=>"Text",'d.nom'=>'Text','co.label'=>"List:c_country:label:rowid",'co.code'=>"Text",'c.phone'=>"Text",'c.fax'=>"Text",'c.email'=>"Text",'s.rowid'=>"List:societe:nom",'s.nom'=>"Text",'s.status'=>"Status",'s.code_client'=>"Text",'s.code_fournisseur'=>"Text",'s.client'=>"Text",'s.fournisseur'=>"Text",'group_concat(cat.label )'=>'Text'); $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>"company", 's.status'=>'company', 's.code_client'=>"company",'s.code_fournisseur'=>"company", 's.client'=>"company", 's.fournisseur'=>"company"); // We define here only fields that use another picto if (empty($conf->fournisseur->enabled)) { From c3a5a7aab81daf21e2837bc89a2d3f5ec1694e03 Mon Sep 17 00:00:00 2001 From: Fixit Management Date: Tue, 19 Apr 2016 12:54:46 +0200 Subject: [PATCH 044/116] Rollback modification in this file --- htdocs/core/modules/modProduct.class.php | 1 + htdocs/core/modules/modSociete.class.php | 13 +++---------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/htdocs/core/modules/modProduct.class.php b/htdocs/core/modules/modProduct.class.php index b775f3dcb15..a36abbf0b0f 100644 --- a/htdocs/core/modules/modProduct.class.php +++ b/htdocs/core/modules/modProduct.class.php @@ -164,6 +164,7 @@ class modProduct extends DolibarrModules if (! empty($conf->barcode->enabled)) $this->export_entities_array[$r]=array_merge($this->export_entities_array[$r],array('p.barcode'=>'product')); if (! empty($conf->fournisseur->enabled)) $this->export_entities_array[$r]=array_merge($this->export_entities_array[$r],array('s.nom'=>'product','pf.ref_fourn'=>'product','pf.unitprice'=>'product')); if (! empty($conf->global->MAIN_MULTILANGS)) $this->export_entities_array[$r]=array_merge($this->export_entities_array[$r],array('l.lang'=>'translation', 'l.label'=>'translation','l.description'=>'translation','l.note'=>'translation')); + if (! empty($conf->global->EXPORTTOOL_CATEGORIES)) $this->export_entities_array[$r]=array_merge($this->export_entities_array[$r],array('group_concat(cat.label)'=>'Categories')); $keyforselect='product'; $keyforelement='product'; $keyforaliasextra='extra'; include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; $this->export_sql_start[$r]='SELECT DISTINCT '; diff --git a/htdocs/core/modules/modSociete.class.php b/htdocs/core/modules/modSociete.class.php index 6bf33dcc451..f478136de09 100644 --- a/htdocs/core/modules/modSociete.class.php +++ b/htdocs/core/modules/modSociete.class.php @@ -254,15 +254,12 @@ class modSociete extends DolibarrModules $this->export_icon[$r]='company'; $this->export_permission[$r]=array(array("societe","export")); $this->export_fields_array[$r]=array('s.rowid'=>"Id",'s.nom'=>"Name",'s.status'=>"Status",'s.client'=>"Customer",'s.fournisseur'=>"Supplier",'s.datec'=>"DateCreation",'s.tms'=>"DateLastModification",'s.code_client'=>"CustomerCode",'s.code_fournisseur'=>"SupplierCode",'s.code_compta'=>"AccountancyCode",'s.code_compta_fournisseur'=>"SupplierAccountancyCode",'s.address'=>"Address",'s.zip'=>"Zip",'s.town'=>"Town",'d.nom'=>'State','c.label'=>"Country",'c.code'=>"CountryCode",'s.phone'=>"Phone",'s.fax'=>"Fax",'s.url'=>"Url",'s.email'=>"Email",'s.default_lang'=>"DefaultLang",'s.siren'=>"ProfId1",'s.siret'=>"ProfId2",'s.ape'=>"ProfId3",'s.idprof4'=>"ProfId4",'s.idprof5'=>"ProfId5",'s.idprof6'=>"ProfId6",'s.tva_intra'=>"VATIntraShort",'s.capital'=>"Capital",'s.note_private'=>"NotePrivate",'s.note_public'=>"NotePublic",'t.libelle'=>"ThirdPartyType",'ce.code'=>"Staff","cfj.libelle"=>"JuridicalStatus",'s.fk_prospectlevel'=>'ProspectLevel','st.code'=>'ProspectStatus'); - if (! empty($conf->global->EXPORTTOOL_CATEGORIES)) $this->export_fields_array[$r]=array_merge($this->export_fields_array[$r],array('group_concat(cat.label)'=>'Categories')); - if (! empty($conf->global->SOCIETE_USEPREFIX)) $this->export_fields_array[$r]['s.prefix']='Prefix'; $keyforselect='societe'; $keyforelement='company'; $keyforaliasextra='extra'; include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; $this->export_fields_array[$r]+=array('u.login'=>'SaleRepresentativeLogin','u.firstname'=>'SaleRepresentativeFirstname', 'u.lastname'=>'SaleRepresentativeLastname'); //$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:nom",'s.nom'=>"Text",'s.status'=>"Text",'s.client'=>"Boolean",'s.fournisseur'=>"Boolean",'s.datec'=>"Date",'s.tms'=>"Date",'s.code_client'=>"Text",'s.code_fournisseur'=>"Text",'s.address'=>"Text",'s.zip'=>"Text",'s.town'=>"Text",'c.label'=>"List:c_country:label:label",'c.code'=>"Text",'s.phone'=>"Text",'s.fax'=>"Text",'s.url'=>"Text",'s.email'=>"Text",'s.default_lang'=>"Text",'s.siret'=>"Text",'s.siren'=>"Text",'s.ape'=>"Text",'s.idprof4'=>"Text",'s.idprof5'=>"Text",'s.idprof6'=>"Text",'s.tva_intra'=>"Text",'s.capital'=>"Numeric",'s.note'=>"Text",'t.libelle'=>"Text",'ce.code'=>"List:c_effectif:libelle:code","cfj.libelle"=>"Text",'s.fk_prospectlevel'=>'List:c_prospectlevel:label:code','s.fk_stcomm'=>'List:c_stcomm:libelle:code','d.nom'=>'List:c_departements:nom:rowid'); $this->export_TypeFields_array[$r]=array('s.nom'=>"Text",'s.status'=>"Numeric",'s.client'=>"Numeric",'s.fournisseur'=>"Boolean",'s.datec'=>"Date",'s.tms'=>"Date",'s.code_client'=>"Text",'s.code_fournisseur'=>"Text",'s.code_compta'=>"Text",'s.code_compta_fournisseur'=>"Text",'s.address'=>"Text",'s.zip'=>"Text",'s.town'=>"Text",'c.label'=>"List:c_country:label:label",'c.code'=>"Text",'s.phone'=>"Text",'s.fax'=>"Text",'s.url'=>"Text",'s.email'=>"Text",'s.default_lang'=>"Text",'s.siret'=>"Text",'s.siren'=>"Text",'s.ape'=>"Text",'s.idprof4'=>"Text",'s.idprof5'=>"Text",'s.idprof6'=>"Text",'s.tva_intra'=>"Text",'s.capital'=>"Numeric",'s.note_private'=>"Text",'s.note_public'=>"Text",'t.libelle'=>"Text",'ce.code'=>"List:c_effectif:libelle:code","cfj.libelle"=>"Text",'s.fk_prospectlevel'=>'List:c_prospectlevel:label:code','st.code'=>'List:c_stcomm:libelle:code','d.nom'=>'Text','u.login'=>'Text','u.firstname'=>'Text','u.lastname'=>'Text'); - if (! empty($conf->global->EXPORT_TOOL_CATEGORIES)) $this->export_TypeFields_array[$r]=array_merge($this->export_TypeFields_array[$r],array('group_concat(cat.label)'=>'Text')); $this->export_entities_array[$r]=array('u.login'=>'user','u.firstname'=>'user','u.lastname'=>'user'); // We define here only fields that use another picto $this->export_examplevalues_array[$r]=array('s.client'=>'0 (no customer no prospect)/1 (customer)/2 (prospect)/3 (customer and prospect)','s.fournisseur'=>'0 (not a supplier) or 1 (supplier)'); @@ -276,9 +273,7 @@ class modSociete extends DolibarrModules $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_departements as d ON s.fk_departement = d.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_stcomm as st ON s.fk_stcomm = st.id'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'societe_commerciaux as sc ON sc.fk_soc = s.rowid LEFT JOIN '.MAIN_DB_PREFIX.'user as u ON sc.fk_user = u.rowid'; - if (! empty($conf->global->EXPORTTOOL_CATEGORIES)) $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_societe as cs on s.rowid=cs.fk_soc LEFT JOIN '.MAIN_DB_PREFIX.'categorie as cat on cs.fk_categorie=cat.rowid'; $this->export_sql_end[$r] .=' WHERE s.entity IN ('.getEntity('societe', 1).')'; - if (! empty($conf->global->EXPORTTOOL_CATEGORIES)) $this->export_sql_end[$r] .=' GROUP BY s.rowid'; print_r($db); // Export list of contacts and attributes $r++; @@ -286,9 +281,9 @@ class modSociete extends DolibarrModules $this->export_label[$r]='ExportDataset_company_2'; $this->export_icon[$r]='contact'; $this->export_permission[$r]=array(array("societe","contact","export")); - $this->export_fields_array[$r]=array('c.rowid'=>"IdContact",'c.civility'=>"CivilityCode",'c.lastname'=>'Lastname','c.firstname'=>'Firstname','c.poste'=>'PostOrFunction','c.datec'=>"DateCreation",'c.tms'=>"DateLastModification",'c.priv'=>"ContactPrivate",'c.address'=>"Address",'c.zip'=>"Zip",'c.town'=>"Town",'d.nom'=>'State','co.label'=>"Country",'co.code'=>"CountryCode",'c.phone'=>"Phone",'c.fax'=>"Fax",'c.phone_mobile'=>"Mobile",'c.email'=>"EMail",'s.rowid'=>"IdCompany",'s.nom'=>"CompanyName",'s.status'=>"Status",'s.code_client'=>"CustomerCode",'s.code_fournisseur'=>"SupplierCode", 's.client'=>'Customer','s.fournisseur'=>'Supplier','group_concat(cat.label)'=>'Categories'); + $this->export_fields_array[$r]=array('c.rowid'=>"IdContact",'c.civility'=>"CivilityCode",'c.lastname'=>'Lastname','c.firstname'=>'Firstname','c.poste'=>'PostOrFunction','c.datec'=>"DateCreation",'c.tms'=>"DateLastModification",'c.priv'=>"ContactPrivate",'c.address'=>"Address",'c.zip'=>"Zip",'c.town'=>"Town",'d.nom'=>'State','co.label'=>"Country",'co.code'=>"CountryCode",'c.phone'=>"Phone",'c.fax'=>"Fax",'c.phone_mobile'=>"Mobile",'c.email'=>"EMail",'s.rowid'=>"IdCompany",'s.nom'=>"CompanyName",'s.status'=>"Status",'s.code_client'=>"CustomerCode",'s.code_fournisseur'=>"SupplierCode", 's.client'=>'Customer','s.fournisseur'=>'Supplier'); $this->export_examplevalues_array[$r]=array('s.client'=>'0 (no customer no prospect)/1 (customer)/2 (prospect)/3 (customer and prospect)','s.fournisseur'=>'0 (not a supplier) or 1 (supplier)'); - $this->export_TypeFields_array[$r]=array('c.civility'=>"List:c_civility:label:code",'c.lastname'=>'Text','c.firstname'=>'Text','c.poste'=>'Text','c.datec'=>"Date",'c.priv'=>"Boolean",'c.address'=>"Text",'c.zip'=>"Text",'c.town'=>"Text",'d.nom'=>'Text','co.label'=>"List:c_country:label:rowid",'co.code'=>"Text",'c.phone'=>"Text",'c.fax'=>"Text",'c.email'=>"Text",'s.rowid'=>"List:societe:nom",'s.nom'=>"Text",'s.status'=>"Status",'s.code_client'=>"Text",'s.code_fournisseur'=>"Text",'s.client'=>"Text",'s.fournisseur'=>"Text",'group_concat(cat.label )'=>'Text'); + $this->export_TypeFields_array[$r]=array('c.civility'=>"List:c_civility:label:code",'c.lastname'=>'Text','c.firstname'=>'Text','c.poste'=>'Text','c.datec'=>"Date",'c.priv'=>"Boolean",'c.address'=>"Text",'c.zip'=>"Text",'c.town'=>"Text",'d.nom'=>'Text','co.label'=>"List:c_country:label:rowid",'co.code'=>"Text",'c.phone'=>"Text",'c.fax'=>"Text",'c.email'=>"Text",'s.rowid'=>"List:societe:nom",'s.nom'=>"Text",'s.status'=>"Status",'s.code_client'=>"Text",'s.code_fournisseur'=>"Text",'s.client'=>"Text",'s.fournisseur'=>"Text"); $this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>"company", 's.status'=>'company', 's.code_client'=>"company",'s.code_fournisseur'=>"company", 's.client'=>"company", 's.fournisseur'=>"company"); // We define here only fields that use another picto if (empty($conf->fournisseur->enabled)) { @@ -303,9 +298,7 @@ class modSociete extends DolibarrModules $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_departements as d ON c.fk_departement = d.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_country as co ON c.fk_pays = co.rowid'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'socpeople_extrafields as extra ON extra.fk_object = c.rowid'; - $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'categorie_contact as cs on s.rowid=cs.fk_socpeople '; - $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'categorie as cat on cs.fk_categorie=cat.rowid'; - $this->export_sql_end[$r] .=' WHERE c.entity IN ('.getEntity("societe", 1).') GROUP BY s.rowid'; + $this->export_sql_end[$r] .=' WHERE c.entity IN ('.getEntity("societe", 1).')'; // Imports From a8aeba3ade7e1620df5799ac0c2c6b84264da80d Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sat, 23 Apr 2016 07:05:16 +0200 Subject: [PATCH 045/116] FIX: For external api, don't use lengt_accountg without module accountancy activated --- htdocs/product/card.php | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 0307c4aed5e..527b457c287 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -8,12 +8,12 @@ * Copyright (C) 2010-2015 Juanjo Menent * Copyright (C) 2013-2014 Marcos García * Copyright (C) 2012-2013 Cédric Salvador - * Copyright (C) 2011-2015 Alexandre Spangaro + * Copyright (C) 2011-2016 Alexandre Spangaro * Copyright (C) 2014 Cédric Gross * Copyright (C) 2014-2015 Ferran Marcet * Copyright (C) 2015 Jean-François Ferry * Copyright (C) 2015 Raphaël Doursenaud - * Copyright (C) 2016 Charlie Benke + * Copyright (C) 2016 Charlie Benke * * 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 @@ -1482,8 +1482,12 @@ else print ''; print '
    '; print ''; - print length_accountg($object->accountancy_code_sell); - print ''; + if (! empty($conf->accounting->enabled)) { + print length_accountg($object->accountancy_code_sell); + } else { + print $object->accountancy_code_sell; + } + print ''; // Accountancy buy code print ''; @@ -1492,7 +1496,11 @@ else print ''; print ''; print ''; - print length_accountg($object->accountancy_code_buy); + if (! empty($conf->accounting->enabled)) { + print length_accountg($object->accountancy_code_buy); + } else { + print $object->accountancy_code_buy; + } print ''; // Status (to sell) From 2a7c7a074810a98304e9ee44d0e8e5670302f8e1 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sat, 23 Apr 2016 08:09:38 +0200 Subject: [PATCH 046/116] Same problem on bank --- htdocs/compta/bank/card.php | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/htdocs/compta/bank/card.php b/htdocs/compta/bank/card.php index e2cecacb83c..102e6a6861a 100644 --- a/htdocs/compta/bank/card.php +++ b/htdocs/compta/bank/card.php @@ -3,7 +3,7 @@ * Copyright (C) 2003 Jean-Louis Bergamo * Copyright (C) 2004-2015 Laurent Destailleur * Copyright (C) 2005-2009 Regis Houssin - * Copyright (C) 2014-2015 Alexandre Spangaro + * Copyright (C) 2014-2016 Alexandre Spangaro * Copyright (C) 2015 Jean-François Ferry * Copyright (C) 2016 Marcos García * @@ -34,8 +34,8 @@ require_once DOL_DOCUMENT_ROOT . '/core/class/html.formcompany.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/html.formbank.class.php'; require_once DOL_DOCUMENT_ROOT . '/compta/bank/class/account.class.php'; require_once DOL_DOCUMENT_ROOT . '/core/class/extrafields.class.php'; -require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php'; -if (! empty($conf->accounting->enabled)) require_once DOL_DOCUMENT_ROOT.'/accountancy/class/html.formventilation.class.php'; +if (! empty($conf->accounting->enabled)) require_once DOL_DOCUMENT_ROOT . '/core/lib/accounting.lib.php'; +if (! empty($conf->accounting->enabled)) require_once DOL_DOCUMENT_ROOT . '/accountancy/class/html.formventilation.class.php'; $langs->load("banks"); $langs->load("bills"); @@ -675,7 +675,13 @@ else print ''; // Accountancy code print ''; - print ''; + print ''; + } else { + print $account->account_number; + } + print ''; // Accountancy journal if (! empty($conf->accounting->enabled)) From df4d016684348fd6ddcc5dae2722da459cf12808 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sat, 23 Apr 2016 13:06:46 +0200 Subject: [PATCH 047/116] New add stats on contacts --- htdocs/contact/class/contact.class.php | 41 ++++++++++++++++++++++++++ htdocs/index.php | 8 +++++ 2 files changed, 49 insertions(+) diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php index 88cd24af359..259918c5aa9 100644 --- a/htdocs/contact/class/contact.class.php +++ b/htdocs/contact/class/contact.class.php @@ -107,6 +107,47 @@ class Contact extends CommonObject $this->db = $db; $this->statut = 1; // By default, status is enabled } + + /** + * Load indicators into this->nb for board + * + * @return int <0 if KO, >0 if OK + */ + function load_state_board() + { + global $user; + + $this->nb=array(); + $clause = "WHERE"; + + $sql = "SELECT count(sp.rowid) as nb"; + $sql.= " FROM ".MAIN_DB_PREFIX."socpeople as sp"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON (sp.fk_soc = s.rowid)"; + if (!$user->rights->societe->client->voir && !$user->societe_id) + { + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON s.rowid = sc.fk_soc"; + $sql.= " WHERE sc.fk_user = " .$user->id; + $clause = "AND"; + } + $sql.= ' '.$clause.' s.entity IN ('.getEntity($this->element, 1).')'; + + $resql=$this->db->query($sql); + if ($resql) + { + while ($obj=$this->db->fetch_object($resql)) + { + $this->nb["contacts"]=$obj->nb; + } + $this->db->free($resql); + return 1; + } + else + { + dol_print_error($this->db); + $this->error=$this->db->lasterror(); + return -1; + } + } /** * Add a contact into database diff --git a/htdocs/index.php b/htdocs/index.php index 332e2ea4483..e55f01ebdf4 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -162,6 +162,7 @@ if (empty($user->societe_id)) ! empty($conf->societe->enabled) && $user->rights->societe->lire && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS_STATS), ! empty($conf->societe->enabled) && $user->rights->societe->lire && empty($conf->global->SOCIETE_DISABLE_PROSPECTS) && empty($conf->global->SOCIETE_DISABLE_PROSPECTS_STATS), ! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->lire && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_STATS), + ! empty($conf->societe->enabled) && $user->rights->societe->contact->lire, ! empty($conf->adherent->enabled) && $user->rights->adherent->lire, ! empty($conf->product->enabled) && $user->rights->produit->lire, ! empty($conf->service->enabled) && $user->rights->service->lire, @@ -181,6 +182,7 @@ if (empty($user->societe_id)) DOL_DOCUMENT_ROOT."/societe/class/client.class.php", DOL_DOCUMENT_ROOT."/societe/class/client.class.php", DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.class.php", + DOL_DOCUMENT_ROOT."/contact/class/contact.class.php", DOL_DOCUMENT_ROOT."/adherents/class/adherent.class.php", DOL_DOCUMENT_ROOT."/product/class/product.class.php", DOL_DOCUMENT_ROOT."/product/class/service.class.php", @@ -199,6 +201,7 @@ if (empty($user->societe_id)) 'Client', 'Client', 'Fournisseur', + 'Contact', 'Adherent', 'Product', 'Service', @@ -217,6 +220,7 @@ if (empty($user->societe_id)) 'customers', 'prospects', 'suppliers', + 'contacts', 'members', 'products', 'services', @@ -235,6 +239,7 @@ if (empty($user->societe_id)) 'company', 'company', 'company', + 'contact', 'user', 'product', 'service', @@ -253,6 +258,7 @@ if (empty($user->societe_id)) "ThirdPartyCustomersStats", "ThirdPartyProspectsStats", "Suppliers", + "Contacts", "Members", "Products", "Services", @@ -272,6 +278,7 @@ if (empty($user->societe_id)) DOL_URL_ROOT.'/societe/list.php?type=c', DOL_URL_ROOT.'/societe/list.php?type=p', DOL_URL_ROOT.'/societe/list.php?type=f', + DOL_URL_ROOT.'/contact/list.php', DOL_URL_ROOT.'/adherents/list.php?statut=1&mainmenu=members', DOL_URL_ROOT.'/product/list.php?type=0&mainmenu=products', DOL_URL_ROOT.'/product/list.php?type=1&mainmenu=products', @@ -290,6 +297,7 @@ if (empty($user->societe_id)) "companies", "prospects", "suppliers", + "companies", "members", "products", "produts", From 4e42e73f602563e2498eea021a954052f28dd94c Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sat, 23 Apr 2016 13:16:19 +0200 Subject: [PATCH 048/116] New add stats on interventions --- htdocs/fichinter/class/fichinter.class.php | 40 ++++++++++++++++++++++ htdocs/index.php | 8 +++++ 2 files changed, 48 insertions(+) diff --git a/htdocs/fichinter/class/fichinter.class.php b/htdocs/fichinter/class/fichinter.class.php index 69f01613f50..66fb1031d6e 100644 --- a/htdocs/fichinter/class/fichinter.class.php +++ b/htdocs/fichinter/class/fichinter.class.php @@ -89,6 +89,46 @@ class Fichinter extends CommonObject $this->statuts_logo[3]='statut4'; } + /** + * Load indicators into this->nb for board + * + * @return int <0 if KO, >0 if OK + */ + function load_state_board() + { + global $user; + + $this->nb=array(); + $clause = "WHERE"; + + $sql = "SELECT count(fi.rowid) as nb"; + $sql.= " FROM ".MAIN_DB_PREFIX."fichinter as fi"; + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON fi.fk_soc = s.rowid"; + if (!$user->rights->societe->client->voir && !$user->societe_id) + { + $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON s.rowid = sc.fk_soc"; + $sql.= " WHERE sc.fk_user = " .$user->id; + $clause = "AND"; + } + $sql.= " ".$clause." fi.entity IN (".getEntity($this->element, 1).")"; + + $resql=$this->db->query($sql); + if ($resql) + { + while ($obj=$this->db->fetch_object($resql)) + { + $this->nb["fichinters"]=$obj->nb; + } + $this->db->free($resql); + return 1; + } + else + { + dol_print_error($this->db); + $this->error=$this->db->error(); + return -1; + } + } /** * Create an intervention into data base diff --git a/htdocs/index.php b/htdocs/index.php index e55f01ebdf4..5e9492d9b50 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -170,6 +170,7 @@ if (empty($user->societe_id)) ! empty($conf->commande->enabled) && $user->rights->commande->lire, ! empty($conf->facture->enabled) && $user->rights->facture->lire, ! empty($conf->contrat->enabled) && $user->rights->contrat->activer, + ! empty($conf->ficheinter->enabled) && $user->rights->ficheinter->lire, ! empty($conf->supplier_order->enabled) && $user->rights->fournisseur->commande->lire && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_ORDERS_STATS), ! empty($conf->supplier_invoice->enabled) && $user->rights->fournisseur->facture->lire && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_INVOICES_STATS), ! empty($conf->supplier_proposal->enabled) && $user->rights->supplier_proposal->lire && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_PROPOSAL_STATS), @@ -190,6 +191,7 @@ if (empty($user->societe_id)) DOL_DOCUMENT_ROOT."/commande/class/commande.class.php", DOL_DOCUMENT_ROOT."/compta/facture/class/facture.class.php", DOL_DOCUMENT_ROOT."/contrat/class/contrat.class.php", + DOL_DOCUMENT_ROOT."/fichinter/class/fichinter.class.php", DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.commande.class.php", DOL_DOCUMENT_ROOT."/fourn/class/fournisseur.facture.class.php", DOL_DOCUMENT_ROOT."/supplier_proposal/class/supplier_proposal.class.php", @@ -209,6 +211,7 @@ if (empty($user->societe_id)) 'Commande', 'Facture', 'Contrat', + 'Fichinter', 'CommandeFournisseur', 'FactureFournisseur', 'SupplierProposal', @@ -228,6 +231,7 @@ if (empty($user->societe_id)) 'orders', 'invoices', 'Contracts', + 'fichinters', 'supplier_orders', 'supplier_invoices', 'askprice', @@ -248,6 +252,7 @@ if (empty($user->societe_id)) 'bill', 'order', 'order', + 'order', 'bill', 'propal', 'trip', @@ -266,6 +271,7 @@ if (empty($user->societe_id)) "CustomersOrders", "BillsCustomers", "Contracts", + "Interventions", "SuppliersOrders", "SuppliersInvoices", "SupplierProposalShort", @@ -286,6 +292,7 @@ if (empty($user->societe_id)) DOL_URL_ROOT.'/commande/list.php?mainmenu=commercial', DOL_URL_ROOT.'/compta/facture/list.php?mainmenu=accountancy', DOL_URL_ROOT.'/contrat/list.php', + DOL_URL_ROOT.'/fichinter/list.php', DOL_URL_ROOT.'/fourn/commande/list.php', DOL_URL_ROOT.'/fourn/facture/list.php', DOL_URL_ROOT.'/supplier_proposal/list.php', @@ -306,6 +313,7 @@ if (empty($user->societe_id)) "bills", "supplier_proposal", "contracts", + "interventions", "trips", "projects" ); From f195107bd179f49382f490575da98e6ee721fe63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garc=C3=ADa=20de=20La=20Fuente?= Date: Sat, 23 Apr 2016 13:25:23 +0200 Subject: [PATCH 049/116] Fixed undefined $user variable in Account::countAccountToReconcile --- htdocs/compta/bank/class/account.class.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php index 123f4537a58..d905a10b260 100644 --- a/htdocs/compta/bank/class/account.class.php +++ b/htdocs/compta/bank/class/account.class.php @@ -1100,9 +1100,12 @@ class Account extends CommonObject */ public static function countAccountToReconcile() { - global $db, $conf, $langs; - - if ($user->societe_id) return 0; // protection pour eviter appel par utilisateur externe + global $db, $conf, $user; + + //Protection against external users + if ($user->societe_id) { + return 0; + } $nb=0; From 867649e9224418d384e98773824f94460cc3b312 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garc=C3=ADa=20de=20La=20Fuente?= Date: Sat, 23 Apr 2016 13:36:12 +0200 Subject: [PATCH 050/116] FIX #4813 Won translation for the key OppStatusWON instead OppStatusWIN Close #4813 --- htdocs/langs/ar_SA/projects.lang | 2 +- htdocs/langs/bn_BD/projects.lang | 2 +- htdocs/langs/bs_BA/projects.lang | 2 +- htdocs/langs/ca_ES/projects.lang | 2 +- htdocs/langs/cs_CZ/projects.lang | 2 +- htdocs/langs/da_DK/projects.lang | 2 +- htdocs/langs/de_DE/projects.lang | 2 +- htdocs/langs/en_US/projects.lang | 2 +- htdocs/langs/es_ES/projects.lang | 2 +- htdocs/langs/et_EE/projects.lang | 2 +- htdocs/langs/eu_ES/projects.lang | 2 +- htdocs/langs/fi_FI/projects.lang | 2 +- htdocs/langs/fr_FR/projects.lang | 2 +- htdocs/langs/he_IL/projects.lang | 2 +- htdocs/langs/hr_HR/projects.lang | 2 +- htdocs/langs/hu_HU/projects.lang | 2 +- htdocs/langs/id_ID/projects.lang | 2 +- htdocs/langs/is_IS/projects.lang | 2 +- htdocs/langs/it_IT/projects.lang | 2 +- htdocs/langs/ka_GE/projects.lang | 2 +- htdocs/langs/kn_IN/projects.lang | 2 +- htdocs/langs/ko_KR/projects.lang | 2 +- htdocs/langs/lo_LA/projects.lang | 2 +- htdocs/langs/lt_LT/projects.lang | 2 +- htdocs/langs/lv_LV/projects.lang | 2 +- htdocs/langs/mk_MK/projects.lang | 2 +- htdocs/langs/nb_NO/projects.lang | 2 +- htdocs/langs/nl_NL/projects.lang | 2 +- htdocs/langs/pl_PL/projects.lang | 2 +- htdocs/langs/pt_BR/projects.lang | 2 +- htdocs/langs/pt_PT/projects.lang | 2 +- htdocs/langs/ro_RO/projects.lang | 2 +- htdocs/langs/ru_RU/projects.lang | 2 +- htdocs/langs/sk_SK/projects.lang | 2 +- htdocs/langs/sl_SI/projects.lang | 2 +- htdocs/langs/sq_AL/projects.lang | 2 +- htdocs/langs/sr_RS/projects.lang | 2 +- htdocs/langs/sv_SE/projects.lang | 2 +- htdocs/langs/sw_SW/projects.lang | 2 +- htdocs/langs/tr_TR/projects.lang | 2 +- htdocs/langs/uk_UA/projects.lang | 2 +- htdocs/langs/uz_UZ/projects.lang | 2 +- htdocs/langs/vi_VN/projects.lang | 2 +- htdocs/langs/zh_CN/projects.lang | 2 +- htdocs/langs/zh_TW/projects.lang | 2 +- 45 files changed, 45 insertions(+), 45 deletions(-) diff --git a/htdocs/langs/ar_SA/projects.lang b/htdocs/langs/ar_SA/projects.lang index bdd7967374a..ab322a4bd05 100644 --- a/htdocs/langs/ar_SA/projects.lang +++ b/htdocs/langs/ar_SA/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=المؤهل العلمى OppStatusPROPO=مقترح OppStatusNEGO=Negociation OppStatusPENDING=بانتظار -OppStatusWIN=فاز +OppStatusWON=فاز OppStatusLOST=ضائع Budget=Budget diff --git a/htdocs/langs/bn_BD/projects.lang b/htdocs/langs/bn_BD/projects.lang index b4a21befd80..982ec36b26b 100644 --- a/htdocs/langs/bn_BD/projects.lang +++ b/htdocs/langs/bn_BD/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/bs_BA/projects.lang b/htdocs/langs/bs_BA/projects.lang index 0b25f6ea67a..fdfcbd408e5 100644 --- a/htdocs/langs/bs_BA/projects.lang +++ b/htdocs/langs/bs_BA/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/ca_ES/projects.lang b/htdocs/langs/ca_ES/projects.lang index 5c2f18593cb..91c1a7cc9db 100644 --- a/htdocs/langs/ca_ES/projects.lang +++ b/htdocs/langs/ca_ES/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualificació OppStatusPROPO=Pressupost OppStatusNEGO=Negociació OppStatusPENDING=Pendent -OppStatusWIN=Guanyat +OppStatusWON=Guanyat OppStatusLOST=Perdut Budget=Budget diff --git a/htdocs/langs/cs_CZ/projects.lang b/htdocs/langs/cs_CZ/projects.lang index 14b67dbb918..cdc3743aee4 100644 --- a/htdocs/langs/cs_CZ/projects.lang +++ b/htdocs/langs/cs_CZ/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/da_DK/projects.lang b/htdocs/langs/da_DK/projects.lang index 0c7ed16673b..618a6e5dc47 100644 --- a/htdocs/langs/da_DK/projects.lang +++ b/htdocs/langs/da_DK/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/de_DE/projects.lang b/htdocs/langs/de_DE/projects.lang index 15fc4080190..c1d58f6d3d6 100644 --- a/htdocs/langs/de_DE/projects.lang +++ b/htdocs/langs/de_DE/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualifikation OppStatusPROPO=Angebot OppStatusNEGO=Verhandlung OppStatusPENDING=Anstehend -OppStatusWIN=Gewonnen +OppStatusWON=Gewonnen OppStatusLOST=Verloren Budget=Budget diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index 979fd4670bb..c68bd370f5a 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -190,6 +190,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget \ No newline at end of file diff --git a/htdocs/langs/es_ES/projects.lang b/htdocs/langs/es_ES/projects.lang index b0965bd080c..3a9fd407875 100644 --- a/htdocs/langs/es_ES/projects.lang +++ b/htdocs/langs/es_ES/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Cualificación OppStatusPROPO=Presupuesto OppStatusNEGO=Negociación OppStatusPENDING=Pendiente -OppStatusWIN=Ganado +OppStatusWON=Ganado OppStatusLOST=Perdido Budget=Budget diff --git a/htdocs/langs/et_EE/projects.lang b/htdocs/langs/et_EE/projects.lang index 7c53e51f80d..31f516ada14 100644 --- a/htdocs/langs/et_EE/projects.lang +++ b/htdocs/langs/et_EE/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/eu_ES/projects.lang b/htdocs/langs/eu_ES/projects.lang index b4a21befd80..982ec36b26b 100644 --- a/htdocs/langs/eu_ES/projects.lang +++ b/htdocs/langs/eu_ES/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/fi_FI/projects.lang b/htdocs/langs/fi_FI/projects.lang index fea93953f69..50177fda449 100644 --- a/htdocs/langs/fi_FI/projects.lang +++ b/htdocs/langs/fi_FI/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/fr_FR/projects.lang b/htdocs/langs/fr_FR/projects.lang index b95fbb3cd56..6389d10abbf 100644 --- a/htdocs/langs/fr_FR/projects.lang +++ b/htdocs/langs/fr_FR/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposition OppStatusNEGO=Négociation OppStatusPENDING=En attente -OppStatusWIN=Gagné +OppStatusWON=Gagné OppStatusLOST=Perdu Budget=Budget diff --git a/htdocs/langs/he_IL/projects.lang b/htdocs/langs/he_IL/projects.lang index fb939aef169..ee8785e6397 100644 --- a/htdocs/langs/he_IL/projects.lang +++ b/htdocs/langs/he_IL/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/hr_HR/projects.lang b/htdocs/langs/hr_HR/projects.lang index 7dae3662584..bd83a40224d 100644 --- a/htdocs/langs/hr_HR/projects.lang +++ b/htdocs/langs/hr_HR/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/hu_HU/projects.lang b/htdocs/langs/hu_HU/projects.lang index 9ab8ab13b05..20a6f143d2a 100644 --- a/htdocs/langs/hu_HU/projects.lang +++ b/htdocs/langs/hu_HU/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/id_ID/projects.lang b/htdocs/langs/id_ID/projects.lang index 83a284cc58c..13798a28b3c 100644 --- a/htdocs/langs/id_ID/projects.lang +++ b/htdocs/langs/id_ID/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/is_IS/projects.lang b/htdocs/langs/is_IS/projects.lang index d41a345caf3..517ab7e2e84 100644 --- a/htdocs/langs/is_IS/projects.lang +++ b/htdocs/langs/is_IS/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/it_IT/projects.lang b/htdocs/langs/it_IT/projects.lang index 9954fb68fd2..8599f5089b5 100644 --- a/htdocs/langs/it_IT/projects.lang +++ b/htdocs/langs/it_IT/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualificazione OppStatusPROPO=Proposta OppStatusNEGO=Negoziazione OppStatusPENDING=In attesa -OppStatusWIN=Vinto +OppStatusWON=Vinto OppStatusLOST=Perso Budget=Budget diff --git a/htdocs/langs/ka_GE/projects.lang b/htdocs/langs/ka_GE/projects.lang index b4a21befd80..982ec36b26b 100644 --- a/htdocs/langs/ka_GE/projects.lang +++ b/htdocs/langs/ka_GE/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/kn_IN/projects.lang b/htdocs/langs/kn_IN/projects.lang index b4a21befd80..982ec36b26b 100644 --- a/htdocs/langs/kn_IN/projects.lang +++ b/htdocs/langs/kn_IN/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/ko_KR/projects.lang b/htdocs/langs/ko_KR/projects.lang index b4a21befd80..982ec36b26b 100644 --- a/htdocs/langs/ko_KR/projects.lang +++ b/htdocs/langs/ko_KR/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/lo_LA/projects.lang b/htdocs/langs/lo_LA/projects.lang index 56cc02c9e82..52ca66a2763 100644 --- a/htdocs/langs/lo_LA/projects.lang +++ b/htdocs/langs/lo_LA/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/lt_LT/projects.lang b/htdocs/langs/lt_LT/projects.lang index 6398f58b129..bc9adc0ef7f 100644 --- a/htdocs/langs/lt_LT/projects.lang +++ b/htdocs/langs/lt_LT/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/lv_LV/projects.lang b/htdocs/langs/lv_LV/projects.lang index d04ece7b84f..000139e853c 100644 --- a/htdocs/langs/lv_LV/projects.lang +++ b/htdocs/langs/lv_LV/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Kvalifikācija OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/mk_MK/projects.lang b/htdocs/langs/mk_MK/projects.lang index b4a21befd80..982ec36b26b 100644 --- a/htdocs/langs/mk_MK/projects.lang +++ b/htdocs/langs/mk_MK/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/nb_NO/projects.lang b/htdocs/langs/nb_NO/projects.lang index c57648d77d1..c69d3c47ee4 100644 --- a/htdocs/langs/nb_NO/projects.lang +++ b/htdocs/langs/nb_NO/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Kvalifikasjon OppStatusPROPO=Tilbud OppStatusNEGO=Forhandling OppStatusPENDING=Venter -OppStatusWIN=Vunnet +OppStatusWON=Vunnet OppStatusLOST=Tapt Budget=Budget diff --git a/htdocs/langs/nl_NL/projects.lang b/htdocs/langs/nl_NL/projects.lang index 93514bd4108..8cf1a0d4684 100644 --- a/htdocs/langs/nl_NL/projects.lang +++ b/htdocs/langs/nl_NL/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/pl_PL/projects.lang b/htdocs/langs/pl_PL/projects.lang index 1479193a7cc..429a664d293 100644 --- a/htdocs/langs/pl_PL/projects.lang +++ b/htdocs/langs/pl_PL/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Kwalifikacja OppStatusPROPO=Wniosek OppStatusNEGO=Negocjacje OppStatusPENDING=W oczekiwaniu -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Zagubiony Budget=Budget diff --git a/htdocs/langs/pt_BR/projects.lang b/htdocs/langs/pt_BR/projects.lang index f8ae458330b..ab92118d1e4 100644 --- a/htdocs/langs/pt_BR/projects.lang +++ b/htdocs/langs/pt_BR/projects.lang @@ -125,5 +125,5 @@ OppStatusQUAL=Qualificação OppStatusPROPO=Proposta OppStatusNEGO=Negociação OppStatusPENDING=Pendente -OppStatusWIN=Ganhou +OppStatusWON=Ganhou OppStatusLOST=Perdido diff --git a/htdocs/langs/pt_PT/projects.lang b/htdocs/langs/pt_PT/projects.lang index c6bc715fada..2df744a5013 100644 --- a/htdocs/langs/pt_PT/projects.lang +++ b/htdocs/langs/pt_PT/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/ro_RO/projects.lang b/htdocs/langs/ro_RO/projects.lang index 301c6242d24..c6fc6cb74e0 100644 --- a/htdocs/langs/ro_RO/projects.lang +++ b/htdocs/langs/ro_RO/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Calificare OppStatusPROPO=Ofertă OppStatusNEGO=Negociere OppStatusPENDING=In asteptarea -OppStatusWIN=Castigat +OppStatusWON=Castigat OppStatusLOST=Pierdut Budget=Budget diff --git a/htdocs/langs/ru_RU/projects.lang b/htdocs/langs/ru_RU/projects.lang index 27c4995d20d..bdee2d2d019 100644 --- a/htdocs/langs/ru_RU/projects.lang +++ b/htdocs/langs/ru_RU/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/sk_SK/projects.lang b/htdocs/langs/sk_SK/projects.lang index 6453fec2772..579d69f1323 100644 --- a/htdocs/langs/sk_SK/projects.lang +++ b/htdocs/langs/sk_SK/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/sl_SI/projects.lang b/htdocs/langs/sl_SI/projects.lang index 81c1c01c46d..38c773a95bb 100644 --- a/htdocs/langs/sl_SI/projects.lang +++ b/htdocs/langs/sl_SI/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/sq_AL/projects.lang b/htdocs/langs/sq_AL/projects.lang index b4a21befd80..982ec36b26b 100644 --- a/htdocs/langs/sq_AL/projects.lang +++ b/htdocs/langs/sq_AL/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/sr_RS/projects.lang b/htdocs/langs/sr_RS/projects.lang index 8ba6046454e..553b7ec80af 100644 --- a/htdocs/langs/sr_RS/projects.lang +++ b/htdocs/langs/sr_RS/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Kvalifikacija OppStatusPROPO=Ponuda OppStatusNEGO=Pregovaranje OppStatusPENDING=Na čekanju -OppStatusWIN=Dobijeno +OppStatusWON=Dobijeno OppStatusLOST=Izgubljeno Budget=Budget diff --git a/htdocs/langs/sv_SE/projects.lang b/htdocs/langs/sv_SE/projects.lang index 77be1874eb2..a75da531dd3 100644 --- a/htdocs/langs/sv_SE/projects.lang +++ b/htdocs/langs/sv_SE/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/sw_SW/projects.lang b/htdocs/langs/sw_SW/projects.lang index b4a21befd80..982ec36b26b 100644 --- a/htdocs/langs/sw_SW/projects.lang +++ b/htdocs/langs/sw_SW/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/tr_TR/projects.lang b/htdocs/langs/tr_TR/projects.lang index dbdfcadfce7..b4a54871c5a 100644 --- a/htdocs/langs/tr_TR/projects.lang +++ b/htdocs/langs/tr_TR/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Nitelendirme OppStatusPROPO=Teklif OppStatusNEGO=Pazarlık OppStatusPENDING=Beklemede -OppStatusWIN=Kazanç +OppStatusWON=Kazanç OppStatusLOST=Kayıp Budget=Budget diff --git a/htdocs/langs/uk_UA/projects.lang b/htdocs/langs/uk_UA/projects.lang index b4a21befd80..982ec36b26b 100644 --- a/htdocs/langs/uk_UA/projects.lang +++ b/htdocs/langs/uk_UA/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/uz_UZ/projects.lang b/htdocs/langs/uz_UZ/projects.lang index b4a21befd80..982ec36b26b 100644 --- a/htdocs/langs/uz_UZ/projects.lang +++ b/htdocs/langs/uz_UZ/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/vi_VN/projects.lang b/htdocs/langs/vi_VN/projects.lang index 174b4a88dc1..7af08a9a5bc 100644 --- a/htdocs/langs/vi_VN/projects.lang +++ b/htdocs/langs/vi_VN/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/zh_CN/projects.lang b/htdocs/langs/zh_CN/projects.lang index bbd8b5cf27d..070c15647e6 100644 --- a/htdocs/langs/zh_CN/projects.lang +++ b/htdocs/langs/zh_CN/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/zh_TW/projects.lang b/htdocs/langs/zh_TW/projects.lang index 2599ab48413..2519f38c954 100644 --- a/htdocs/langs/zh_TW/projects.lang +++ b/htdocs/langs/zh_TW/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget From d98e50e6615c9aef3c6eb53ec3d749c3ab21f657 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garc=C3=ADa=20de=20La=20Fuente?= Date: Sat, 23 Apr 2016 13:44:43 +0200 Subject: [PATCH 051/116] Little change --- htdocs/fourn/facture/card.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index d8e8cbe39e3..1552a1aa0be 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -241,7 +241,7 @@ if (empty($reshook)) $object->ref_supplier = GETPOST('ref_supplier', 'alpha'); if ($object->update() < 0) { - setEventMessage($object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } } From 04fd5a20ef5b28c83bbdeb90baa40d16ce3ea950 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sat, 23 Apr 2016 15:43:28 +0200 Subject: [PATCH 052/116] FIX: Accountancy Work on categories for Report - Add french example --- htdocs/admin/dict.php | 24 ++++++++++----- .../mysql/data/llx_accounting_category.sql | 29 +++++++++++++++++++ .../install/mysql/migration/3.9.0-4.0.0.sql | 5 ++++ htdocs/langs/en_US/accountancy.lang | 3 ++ 4 files changed, 53 insertions(+), 8 deletions(-) create mode 100644 htdocs/install/mysql/data/llx_accounting_category.sql diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index ea745e45df7..8f896969c8b 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -189,7 +189,7 @@ $tabsql[28]= "SELECT h.rowid as rowid, h.code, h.label, h.affect, h.delay, h.new $tabsql[29]= "SELECT rowid as rowid, code, label, percent, position, active FROM ".MAIN_DB_PREFIX."c_lead_status"; $tabsql[30]= "SELECT rowid, code, name, paper_size, orientation, metric, leftmargin, topmargin, nx, ny, spacex, spacey, width, height, font_size, custom_x, custom_y, active FROM ".MAIN_DB_PREFIX."c_format_cards"; $tabsql[31]= "SELECT s.rowid as rowid, pcg_version, s.fk_pays as country_id, c.code as country_code, c.label as country, s.label, s.active FROM ".MAIN_DB_PREFIX."accounting_system as s, ".MAIN_DB_PREFIX."c_country as c WHERE s.fk_pays=c.rowid and c.active=1"; -$tabsql[32]= "SELECT a.rowid as rowid, a.code as code, a.label, a.range_account, a.position, a.fk_country as country_id, c.code as country_code, c.label as country, a.active FROM ".MAIN_DB_PREFIX."c_accounting_category as a, ".MAIN_DB_PREFIX."c_country as c WHERE a.fk_country=c.rowid and c.active=1"; +$tabsql[32]= "SELECT a.rowid as rowid, a.code as code, a.label, a.range_account, a.sens, a.category_type, a.formula, a.position as position, a.fk_country as country_id, c.code as country_code, c.label as country, a.active FROM ".MAIN_DB_PREFIX."c_accounting_category as a, ".MAIN_DB_PREFIX."c_country as c WHERE a.fk_country=c.rowid and c.active=1"; $tabsql[33]= "SELECT rowid, pos, code, label, active FROM ".MAIN_DB_PREFIX."c_hrm_department"; $tabsql[34]= "SELECT rowid, pos, code, label, c_level, active FROM ".MAIN_DB_PREFIX."c_hrm_function"; @@ -226,7 +226,7 @@ $tabsqlsort[28]="country ASC, code ASC"; $tabsqlsort[29]="position ASC"; $tabsqlsort[30]="code ASC"; $tabsqlsort[31]="pcg_version ASC"; -$tabsqlsort[32]="code ASC, label ASC"; +$tabsqlsort[32]="position ASC"; $tabsqlsort[33]="code ASC"; $tabsqlsort[34]="code ASC"; @@ -263,7 +263,7 @@ $tabfield[28]= "code,label,affect,delay,newbymonth,country_id,country"; $tabfield[29]= "code,label,percent,position"; $tabfield[30]= "code,name,paper_size,orientation,metric,leftmargin,topmargin,nx,ny,spacex,spacey,width,height,font_size,custom_x,custom_y"; $tabfield[31]= "pcg_version,country_id,country,label"; -$tabfield[32]= "code,label,range,position,country_id,country"; +$tabfield[32]= "code,label,range_account,sens,category_type,formula,position,country_id,country"; $tabfield[33]= "code,label"; $tabfield[34]= "code,label"; @@ -300,7 +300,7 @@ $tabfieldvalue[28]= "code,label,affect,delay,newbymonth,country"; $tabfieldvalue[29]= "code,label,percent,position"; $tabfieldvalue[30]= "code,name,paper_size,orientation,metric,leftmargin,topmargin,nx,ny,spacex,spacey,width,height,font_size,custom_x,custom_y"; $tabfieldvalue[31]= "pcg_version,country,label"; -$tabfieldvalue[32]= "code,label,range_account,position,country"; +$tabfieldvalue[32]= "code,label,range_account,sens,category_type,formula,position,country"; $tabfieldvalue[33]= "code,label"; $tabfieldvalue[34]= "code,label"; @@ -337,7 +337,7 @@ $tabfieldinsert[28]= "code,label,affect,delay,newbymonth,fk_country"; $tabfieldinsert[29]= "code,label,percent,position"; $tabfieldinsert[30]= "code,name,paper_size,orientation,metric,leftmargin,topmargin,nx,ny,spacex,spacey,width,height,font_size,custom_x,custom_y"; $tabfieldinsert[31]= "pcg_version,fk_pays,label"; -$tabfieldinsert[32]= "code,label,range_account,position,fk_country"; +$tabfieldinsert[32]= "code,label,range_account,sens,category_type,formula,position,fk_country"; $tabfieldinsert[33]= "code,label"; $tabfieldinsert[34]= "code,label"; @@ -585,6 +585,7 @@ if (GETPOST('actionadd') || GETPOST('actionmodify')) if ($value == 'localtax1' && empty($_POST['localtax1_type'])) continue; if ($value == 'localtax2' && empty($_POST['localtax2_type'])) continue; if ($value == 'color' && empty($_POST['color'])) continue; + if ($value == 'formula' && empty($_POST['formula'])) continue; if ((! isset($_POST[$value]) || $_POST[$value]=='') && (! in_array($listfield[$f], array('decalage','module','accountancy_code','accountancy_code_sell','accountancy_code_buy'))) // Fields that are not mandatory ) @@ -605,6 +606,7 @@ if (GETPOST('actionadd') || GETPOST('actionmodify')) if ($fieldnamekey == 'unicode') $fieldnamekey = 'Unicode'; if ($fieldnamekey == 'deductible') $fieldnamekey = 'Deductible'; if ($fieldnamekey == 'sortorder') $fieldnamekey = 'SortOrder'; + if ($fieldnamekey == 'category_type') $fieldnamekey = 'Calculated'; setEventMessages($langs->transnoentities("ErrorFieldRequired", $langs->transnoentities($fieldnamekey)), null, 'errors'); } @@ -999,6 +1001,9 @@ if ($id) if ($fieldlist[$field]=='short_label') { $valuetoshow=$langs->trans("ShortLabel"); } if ($fieldlist[$field]=='type_template') { $valuetoshow=$langs->trans("TypeOfTemplate"); } if ($fieldlist[$field]=='range_account') { $valuetoshow=$langs->trans("Range"); } + if ($fieldlist[$field]=='sens') { $valuetoshow=$langs->trans("Sens"); } + if ($fieldlist[$field]=='category_type') { $valuetoshow=$langs->trans("Calculated"); } + if ($fieldlist[$field]=='formula') { $valuetoshow=$langs->trans("Formula"); } if ($id == 2) // Special cas for state page { @@ -1167,6 +1172,9 @@ if ($id) if ($fieldlist[$field]=='short_label') { $valuetoshow=$langs->trans("ShortLabel"); } if ($fieldlist[$field]=='type_template') { $valuetoshow=$langs->trans("TypeOfTemplate"); } if ($fieldlist[$field]=='range_account') { $valuetoshow=$langs->trans("Range"); } + if ($fieldlist[$field]=='sens') { $valuetoshow=$langs->trans("Sens"); } + if ($fieldlist[$field]=='category_type') { $valuetoshow=$langs->trans("Calculated"); } + if ($fieldlist[$field]=='formula') { $valuetoshow=$langs->trans("Formula"); } // Affiche nom du champ if ($showfield) @@ -1248,7 +1256,7 @@ if ($id) $valuetoshow=($key != "Country".strtoupper($obj->country_code)?$obj->country_code." - ".$key:$obj->country); } } - else if ($fieldlist[$field]=='recuperableonly' || $fieldlist[$field]=='fdm' || $fieldlist[$field] == 'deductible') { + else if ($fieldlist[$field]=='recuperableonly' || $fieldlist[$field]=='fdm' || $fieldlist[$field] == 'deductible' || $fieldlist[$field] == 'category_type') { $valuetoshow=yn($valuetoshow); $align="center"; } @@ -1618,7 +1626,7 @@ function fieldList($fieldlist, $obj='', $tabname='', $context='') print 'user'; print ''; } - elseif ($fieldlist[$field] == 'recuperableonly' || $fieldlist[$field] == 'fdm' || $fieldlist[$field] == 'deductible') { + elseif ($fieldlist[$field] == 'recuperableonly' || $fieldlist[$field] == 'fdm' || $fieldlist[$field] == 'deductible' || $fieldlist[$field] == 'category_type') { print ''; @@ -1697,7 +1705,7 @@ function fieldList($fieldlist, $obj='', $tabname='', $context='') if ($fieldlist[$field]=='position') $size='size="4" '; if ($fieldlist[$field]=='libelle') $size='centpercent'; if ($fieldlist[$field]=='tracking') $class='centpercent'; - if ($fieldlist[$field]=='sortorder') $size='size="2" '; + if ($fieldlist[$field]=='sortorder' || $fieldlist[$field]=='sens' || $fieldlist[$field]=='category_type') $size='size="2" '; print ''; print ''; } diff --git a/htdocs/install/mysql/data/llx_accounting_category.sql b/htdocs/install/mysql/data/llx_accounting_category.sql new file mode 100644 index 00000000000..5769d291563 --- /dev/null +++ b/htdocs/install/mysql/data/llx_accounting_category.sql @@ -0,0 +1,29 @@ +-- Copyright (C) 2016 Alexandre Spangaro +-- +-- 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 3 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, see . +-- +-- + +-- +-- Ne pas placer de commentaire en fin de ligne, ce fichier est parsé lors +-- de l'install et tous les sigles '--' sont supprimés. +-- + +-- +-- Categories compte de résultat Français +-- + +INSERT INTO llx_c_accounting_category (rowid, code, label, range_account, sens, category_type, formula, position, fk_country, active) VALUES ( 1,'VTE','Ventes de marchandises', '707xxx', 0, 0, '', '10', 1, 1); +INSERT INTO llx_c_accounting_category (rowid, code, label, range_account, sens, category_type, formula, position, fk_country, active) VALUES ( 2,'MAR','Coût d\'achats marchandises vendues', '603xxx | 607xxx | 609xxx', 0, 0, '', '20', 1, 1); +INSERT INTO llx_c_accounting_category (rowid, code, label, range_account, sens, category_type, formula, position, fk_country, active) VALUES ( 3,'MARGE','Marge commerciale', '', 0, 1, '1 + 2', '30', 1, 1); \ No newline at end of file diff --git a/htdocs/install/mysql/migration/3.9.0-4.0.0.sql b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql index 002930c276c..db1829d729d 100644 --- a/htdocs/install/mysql/migration/3.9.0-4.0.0.sql +++ b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql @@ -364,6 +364,11 @@ CREATE TABLE llx_c_accounting_category ( ) ENGINE=innodb; ALTER TABLE llx_c_accounting_category ADD UNIQUE INDEX uk_c_accounting_category(code); + +INSERT INTO llx_c_accounting_category (rowid, code, label, range_account, sens, category_type, formula, position, fk_country, active) VALUES ( 1,'VTE',"Ventes de marchandises", '707xxx', 0, 0, '', '10', 1, 1); +INSERT INTO llx_c_accounting_category (rowid, code, label, range_account, sens, category_type, formula, position, fk_country, active) VALUES ( 2,'MAR',"Coût d'achats marchandises vendues", '603xxx | 607xxx | 609xxx', 0, 0, '', '20', 1, 1); +INSERT INTO llx_c_accounting_category (rowid, code, label, range_account, sens, category_type, formula, position, fk_country, active) VALUES ( 3,'MARGE',"Marge commerciale", '', 0, 1, '1 + 2', '30', 1, 1); + UPDATE llx_accounting_account SET account_parent = '0' WHERE account_parent = ''; ALTER TABLE llx_accounting_account MODIFY COLUMN account_parent integer DEFAULT 0; diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index 9fe7c6544fb..64c0d88df48 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -174,6 +174,9 @@ OptionModeProductBuyDesc=Show all products with no accounting account defined fo ## Dictionary Range=Range of accounting account +Sens=Sens +Calculated=Calculated +Formula=Formula ## Error ErrorNoAccountingCategoryForThisCountry=No accounting category are available for this country \ No newline at end of file From 1454f5cafad3da884d15319b3f5cff4fec1aedde Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sat, 23 Apr 2016 15:44:31 +0200 Subject: [PATCH 053/116] FIX: Accountancy - Table account integer 0 by default --- htdocs/install/mysql/tables/llx_accounting_account.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/tables/llx_accounting_account.sql b/htdocs/install/mysql/tables/llx_accounting_account.sql index d74c1b75105..51346cc63f6 100644 --- a/htdocs/install/mysql/tables/llx_accounting_account.sql +++ b/htdocs/install/mysql/tables/llx_accounting_account.sql @@ -29,7 +29,7 @@ create table llx_accounting_account pcg_type varchar(20) NOT NULL, pcg_subtype varchar(20) NOT NULL, account_number varchar(32) NOT NULL, - account_parent integer, -- Hierarchic parent + account_parent integer DEFAULT 0, -- Hierarchic parent label varchar(255) NOT NULL, fk_accounting_category integer DEFAULT 0, fk_user_author integer DEFAULT NULL, From c5787a4bbab807b9c75034e724bd9c5563235364 Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sat, 23 Apr 2016 16:02:18 +0200 Subject: [PATCH 054/116] New add remain to pay column in invoice list (was present in previous versions) --- htdocs/compta/facture/list.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index e2883081452..905e6362500 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -153,6 +153,7 @@ $arrayfields=array( 'f.total_vat'=>array('label'=>$langs->trans("AmountVAT"), 'checked'=>0), 'f.total_ttc'=>array('label'=>$langs->trans("AmountTTC"), 'checked'=>0), 'am'=>array('label'=>$langs->trans("Received"), 'checked'=>0), + 'rtp'=>array('label'=>$langs->trans("Rest"), 'checked'=>0), 'f.datec'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0, 'position'=>500), 'f.tms'=>array('label'=>$langs->trans("DateModificationShort"), 'checked'=>0, 'position'=>500), 'f.fk_statut'=>array('label'=>$langs->trans("Status"), 'checked'=>1, 'position'=>1000), @@ -997,6 +998,7 @@ if ($resql) if (! empty($arrayfields['f.total_vat']['checked'])) print_liste_field_titre($arrayfields['f.total_vat']['label'],$_SERVER['PHP_SELF'],'f.tva','',$param,'align="right"',$sortfield,$sortorder); if (! empty($arrayfields['f.total_ttc']['checked'])) print_liste_field_titre($arrayfields['f.total_ttc']['label'],$_SERVER['PHP_SELF'],'f.total_ttc','',$param,'align="right"',$sortfield,$sortorder); if (! empty($arrayfields['am']['checked'])) print_liste_field_titre($arrayfields['am']['label'],$_SERVER['PHP_SELF'],'am','',$param,'align="right"',$sortfield,$sortorder); + if (! empty($arrayfields['rtp']['checked'])) print_liste_field_titre($arrayfields['rtp']['label'],$_SERVER['PHP_SELF'],'rtp','',$param,'align="right"',$sortfield,$sortorder); // Extra fields if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) { @@ -1117,6 +1119,11 @@ if ($resql) print ''; } + if (! empty($arrayfields['rtp']['checked'])) + { + print ''; + } // Extra fields if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) { @@ -1195,6 +1202,7 @@ if ($resql) $facturestatic->date_lim_reglement=$db->jdate($obj->datelimite); $notetoshow=dol_string_nohtmltag(($user->societe_id>0?$obj->note_public:$obj->note_private),1); $paiement = $facturestatic->getSommePaiement(); + $remaintopay = $obj->total_ttc - $paiement; print '
    '.$langs->trans("AccountancyCode").''.length_accountg($account->account_number).'
    '; + if (! empty($conf->accounting->enabled)) { + print length_accountg($account->account_number).'
    '; print $form->selectyesno($fieldlist[$field],(! empty($obj->{$fieldlist[$field]})?$obj->{$fieldlist[$field]}:''),1); print ''; print ''; + print '
    '; @@ -1347,6 +1355,14 @@ if ($resql) if (! $i) $totalarray['totalamfield']=$totalarray['nbfield']; $totalarray['totalam'] += $paiement; } + + if (! empty($arrayfields['rtp']['checked'])) + { + print ''; + if (! $i) $totalarray['nbfield']++; + if (! $i) $totalarray['totalrtpfield']=$totalarray['nbfield']; + $totalarray['totalrtp'] += $remaintopay; + } // Extra fields if (is_array($extrafields->attribute_label) && count($extrafields->attribute_label)) @@ -1425,6 +1441,7 @@ if ($resql) elseif ($totalarray['totalvatfield'] == $i) print ''; elseif ($totalarray['totalttcfield'] == $i) print ''; elseif ($totalarray['totalamfield'] == $i) print ''; + elseif ($totalarray['totalrtpfield'] == $i) print ''; else print ''; } print ''; From c652d5b02d385940511e424283dad7564719a706 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sat, 23 Apr 2016 16:06:33 +0200 Subject: [PATCH 055/116] NEW: Loan - Add list to select accounting account in admin --- htdocs/admin/loan.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/loan.php b/htdocs/admin/loan.php index 1cc55bd5a36..3213503835d 100644 --- a/htdocs/admin/loan.php +++ b/htdocs/admin/loan.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2014-2016 Alexandre Spangaro * * 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 @@ -26,6 +26,7 @@ require '../main.inc.php'; // Class require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; +if (! empty($conf->accounting->enabled)) require_once DOL_DOCUMENT_ROOT . '/accountancy/class/html.formventilation.class.php'; $langs->load("admin"); $langs->load("loan"); @@ -76,6 +77,7 @@ if ($action == 'update') llxHeader(); $form = new Form($db); +if (! empty($conf->accounting->enabled)) $formaccountancy = New FormVentilation($db); $linkback=''.$langs->trans("BackToModuleList").''; print load_fiche_titre($langs->trans('ConfigLoan'),$linkback,'title_setup'); @@ -104,7 +106,14 @@ foreach ($list as $key) // Value print ''; } From 179022b129e0c4c526b47e28ebde8e779c82541d Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Sat, 23 Apr 2016 16:49:43 +0200 Subject: [PATCH 056/116] Fix country and state were not properly updated after ziptown selection --- htdocs/core/lib/ajax.lib.php | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/htdocs/core/lib/ajax.lib.php b/htdocs/core/lib/ajax.lib.php index 4b3ab3b32f4..fc27f665e45 100644 --- a/htdocs/core/lib/ajax.lib.php +++ b/htdocs/core/lib/ajax.lib.php @@ -290,14 +290,15 @@ function ajax_multiautocompleter($htmlname, $fields, $url, $option='', $minLengt needtotrigger="#" + fields[i]; } } - } - if (needtotrigger != "") // To force select2 to refresh visible content - { - // We introduce a delay so hand is back to js and all other js change can be done before the trigger that may execute a submit is done - // This is required for example when changing zip with autocomplete that change the country - jQuery(needtotrigger).delay(500).queue(function() { - jQuery(needtotrigger).trigger("change"); - }); + + if (needtotrigger != "") // To force select2 to refresh visible content + { + // We introduce a delay so hand is back to js and all other js change can be done before the trigger that may execute a submit is done + // This is required for example when changing zip with autocomplete that change the country + jQuery(needtotrigger).delay(500).queue(function() { + jQuery(this).trigger("change"); + }); + } } } }); From 82ee964c274f9faba89c84aba2c54a67313cfff7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garc=C3=ADa=20de=20La=20Fuente?= Date: Sat, 23 Apr 2016 18:22:11 +0200 Subject: [PATCH 057/116] NEW #4972 Translated Charges sociales (type 0) and Charges sociales (type 1) in reports page Close #4972 --- htdocs/compta/resultat/clientfourn.php | 4 ++-- htdocs/langs/en_US/compta.lang | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/resultat/clientfourn.php b/htdocs/compta/resultat/clientfourn.php index 6a31fc02b4c..2d9241301a6 100644 --- a/htdocs/compta/resultat/clientfourn.php +++ b/htdocs/compta/resultat/clientfourn.php @@ -382,7 +382,7 @@ print ''; * Charges sociales non deductibles */ -print ''; +print ''; if ($modecompta == 'CREANCES-DETTES') { @@ -456,7 +456,7 @@ print ''; * Charges sociales deductibles */ -print ''; +print ''; if ($modecompta == 'CREANCES-DETTES') { diff --git a/htdocs/langs/en_US/compta.lang b/htdocs/langs/en_US/compta.lang index e3c0b5108fc..c6526b51d28 100644 --- a/htdocs/langs/en_US/compta.lang +++ b/htdocs/langs/en_US/compta.lang @@ -59,6 +59,8 @@ SpecialExpensesArea=Area for all special payments TaxAndDividendsArea=Sale taxes, social/fiscal taxes contributions and dividends area SocialContribution=Social or fiscal tax SocialContributions=Social or fiscal taxes +SocialContributionsDeductibles=Deductible social or fiscal taxes +SocialContributionsNondeductibles=Nondeductible social or fiscal taxes MenuSpecialExpenses=Special expenses MenuTaxAndDividends=Taxes and dividends MenuSalaries=Salaries From 961c086be35fac66771841a9866cc81dd4b6168f Mon Sep 17 00:00:00 2001 From: BENKE Charlie Date: Sat, 23 Apr 2016 20:17:45 +0200 Subject: [PATCH 058/116] not present in some select list --- htdocs/core/class/html.formother.class.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/core/class/html.formother.class.php b/htdocs/core/class/html.formother.class.php index 5af984ba659..f446caa12a2 100644 --- a/htdocs/core/class/html.formother.class.php +++ b/htdocs/core/class/html.formother.class.php @@ -805,6 +805,7 @@ class FormOther $select_week .= ''; } $select_week .= ''; return $select_week; @@ -844,6 +845,7 @@ class FormOther $select_month .= ''; } $select_month .= ''; return $select_month; From dde4f7ed851a1925c6150ad7aae22ef83663e1c4 Mon Sep 17 00:00:00 2001 From: BENKE Charlie Date: Sun, 24 Apr 2016 02:01:29 +0200 Subject: [PATCH 059/116] minor error code --- htdocs/product/class/product.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 819a5438eda..c4650465fd9 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -3712,7 +3712,7 @@ class Product extends CommonObject } } - if ($size==1 || $size='small') + if ($size==1 || $size=='small') { if ($nbbyrow > 0) { From f5c1406bebf983c331baab26c805e83d90e7ea04 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 24 Apr 2016 06:10:15 +0200 Subject: [PATCH 060/116] FIX: Accountancy - Fix on bank journal to support subcription --- htdocs/accountancy/journal/bankjournal.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index c32846ae22e..c5bff85faf5 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -238,7 +238,7 @@ if ($result) { $paymentsalstatic->ref = $links[$key]['url_id']; $paymentsalstatic->label = $links[$key]['label']; $tabpay[$obj->rowid]["lib"] .= ' ' . $paymentsalstatic->getNomUrl(2); - $tabtp[$obj->rowid][$account_employee ] += $obj->amount; + $tabtp[$obj->rowid][$account_employee] += $obj->amount; } else if ($links[$key]['type'] == 'banktransfert') { $tabpay[$obj->rowid]["lib"] .= ' ' . $langs->trans("BankTransfer"); $tabtp[$obj->rowid][$account_transfer] += $obj->amount; @@ -599,6 +599,9 @@ else { if ($reflabel == '(DonationPayment)') { $reflabel = $langs->trans('Donation'); } + if ($reflabel == '(SubscriptionPayment)') { + $reflabel = $langs->trans('SubscriptionPayment'); + } // Bank foreach ( $tabbq[$key] as $k => $mt ) { From 8b92e552a3aa847c85e2c1e40ecc1879ce04ce88 Mon Sep 17 00:00:00 2001 From: nka11 Date: Sun, 24 Apr 2016 09:55:19 +0200 Subject: [PATCH 061/116] fix #5053 and bogus 051c5f4 --- htdocs/api/class/api_access.class.php | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/htdocs/api/class/api_access.class.php b/htdocs/api/class/api_access.class.php index 9d29c60e26a..67f8c710bb7 100644 --- a/htdocs/api/class/api_access.class.php +++ b/htdocs/api/class/api_access.class.php @@ -116,16 +116,13 @@ class DolibarrApiAccess implements iAuthenticate else { throw new RestException(401, "Failed to login to API. No parameter 'api_key' provided"); - //dol_syslog("Failed to login to API. No parameter key provided", LOG_DEBUG); - //return false; } - $userClass::setCacheIdentifier(static::$role); - Resources::$accessControlFunction = 'DolibarrApiAccess::verifyAccess'; - - $requirefortest = static::$requires; - if (! is_array($requirefortest)) $requirefortest=explode(',',$requirefortest); - return in_array(static::$role, (array) static::$requirefortest) || static::$role == 'admin'; + $userClass::setCacheIdentifier(static::$role); + Resources::$accessControlFunction = 'DolibarrApiAccess::verifyAccess'; + $requirefortest = static::$requires; + if (! is_array($requirefortest)) $requirefortest=explode(',',$requirefortest); + return in_array(static::$role, (array) $requirefortest) || static::$role == 'admin'; } /** From d0b2068ab105b1dd5a7306f3ec7d1f38cef196c5 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 24 Apr 2016 14:41:14 +0200 Subject: [PATCH 062/116] FIX: Accountancy - Upgrade Cegid Bank export --- htdocs/accountancy/journal/bankjournal.php | 75 +++++++++++++++------- 1 file changed, 53 insertions(+), 22 deletions(-) diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index c5bff85faf5..c990465bacf 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -418,12 +418,27 @@ if ($action == 'export_csv') { foreach ( $tabpay as $key => $val ) { $date = dol_print_date($db->jdate($val["date"]), '%d%m%Y'); + $reflabel = $val["ref"]; + if ($reflabel == '(SupplierInvoicePayment)') { + $reflabel = $langs->trans('Supplier'); + } + if ($reflabel == '(CustomerInvoicePayment)') { + $reflabel = $langs->trans('Customer'); + } + if ($reflabel == '(SocialContributionPayment)') { + $reflabel = $langs->trans('SocialContribution'); + } + if ($reflabel == '(DonationPayment)') { + $reflabel = $langs->trans('Donation'); + } + if ($reflabel == '(SubscriptionPayment)') { + $reflabel = $langs->trans('Donation'); + } + $companystatic->id = $tabcompany[$key]['id']; $companystatic->name = $tabcompany[$key]['name']; $companystatic->client = $tabcompany[$key]['code_client']; - $date = dol_print_date($db->jdate($val["date"]), '%d%m%Y'); - // Bank foreach ( $tabbq[$key] as $k => $mt ) { print $date . $sep; @@ -432,8 +447,12 @@ if ($action == 'export_csv') { print $sep; print ($mt < 0 ? 'C' : 'D') . $sep; print ($mt <= 0 ? price(- $mt) : $mt) . $sep; - print $val["type_payment"] . $sep; - print utf8_decode($val["ref"]) . $sep; + if ($companystatic->name == '') { + print $langs->trans('Bank')." - ". utf8_decode($val["ref"]) . $sep; + } else { + print $langs->trans("Bank") .' - '.utf8_decode($companystatic->name) . $sep; + } + print utf8_decode($reflabel) . $sep; print "\n"; } @@ -443,33 +462,45 @@ if ($action == 'export_csv') { if ($mt) { print $date . $sep; print $journal . $sep; - if ($val["lib"] == '(SupplierInvoicePayment)') { - print length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) . $sep; - } else { + if ($tabtype[$key] == 'payment') { print length_accountg($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER) . $sep; + print length_accounta(html_entity_decode($k)) . $sep; + } else if ($tabtype[$key] == 'payment_supplier') { + print length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) . $sep; + print length_accounta(html_entity_decode($k)) . $sep; + } else { + print length_accountg(html_entity_decode($k)) . $sep; + print $sep; } - print length_accounta(html_entity_decode($k)) . $sep; print ($mt < 0 ? 'D' : 'C') . $sep; print ($mt <= 0 ? price(- $mt) : $mt) . $sep; - print $val["type_payment"] . $sep; - print utf8_decode($val["ref"]) . $sep; + if ($companystatic->name == '') { + print $langs->trans('ThirdParty')." - ". utf8_decode($val["ref"]) . $sep; + } else { + print $langs->trans('ThirdParty')." - ". utf8_decode($companystatic->name) . $sep; + } + print utf8_decode($reflabel) . $sep; print "\n"; } } } else { foreach ( $tabbq[$key] as $k => $mt ) { - print $date . $sep; - print $journal . $sep; - print length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUSPENSE) . $sep; - print $sep; - print ($mt < 0 ? 'D' : 'C') . $sep; - print ($mt <= 0 ? price(- $mt) : $mt) . $sep; - print $val["type_payment"] . $sep; - print utf8_decode($val["ref"]) . $sep; - print "\n"; + print $date . $sep; + print $journal . $sep; + print length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUSPENSE) . $sep; + print $sep; + print ($mt < 0 ? 'D' : 'C') . $sep; + print ($mt <= 0 ? price(- $mt) : $mt) . $sep; + if ($companystatic->name == '') { + print $langs->trans('ThirdParty')." - ". utf8_decode($val["ref"]) . $sep; + } else { + print $langs->trans('ThirdParty')." - ". utf8_decode($companystatic->name) . $sep; } + print utf8_decode($reflabel) . $sep; + print "\n"; } } + } } else { // Model Classic Export foreach ( $tabpay as $key => $val ) { @@ -480,6 +511,7 @@ if ($action == 'export_csv') { // Bank foreach ( $tabbq[$key] as $k => $mt ) { + print '"' . $journal . '"' . $sep; print '"' . $date . '"' . $sep; print '"' . $val["type_payment"] . '"' . $sep; print '"' . length_accountg(html_entity_decode($k)) . '"' . $sep; @@ -488,7 +520,6 @@ if ($action == 'export_csv') { } else { print '"' . $langs->trans("Bank") . ' - ' . utf8_decode($companystatic->name) . '"' . $sep; } - // print '"' . $langs->trans("Bank") . '"' . $sep; print '"' . ($mt >= 0 ? price($mt) : '') . '"' . $sep; print '"' . ($mt < 0 ? price(- $mt) : '') . '"'; print "\n"; @@ -498,10 +529,10 @@ if ($action == 'export_csv') { if (is_array($tabtp[$key])) { foreach ( $tabtp[$key] as $k => $mt ) { if ($mt) { + print '"' . $journal . '"' . $sep; print '"' . $date . '"' . $sep; print '"' . $val["type_payment"] . '"' . $sep; print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep; - // print '"' . $companystatic->name . '"' . $sep; if ($companystatic->name == '') { print '"' . $langs->trans('ThirdParty') . " - " . utf8_decode($val["ref"]) . '"' . $sep; } else { @@ -514,10 +545,10 @@ if ($action == 'export_csv') { } } else { foreach ( $tabbq[$key] as $k => $mt ) { + print '"' . $journal . '"' . $sep; print '"' . $date . '"' . $sep; print '"' . $val["ref"] . '"' . $sep; print '"' . length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUSPENSE) . '"' . $sep; - // print '"' . $langs->trans("Bank") . '"' . $sep; if ($companystatic->name == '') { print '"' . $langs->trans("Bank") . ' - ' . utf8_decode($val["ref"]) . '"' . $sep; } else { From 1746f8f96cd94aaa94035071476901c3b4d3e561 Mon Sep 17 00:00:00 2001 From: Alexis Algoud Date: Mon, 25 Apr 2016 11:25:49 +0200 Subject: [PATCH 063/116] FIX search on date into supplier invoice list dont work because of status -1 --- htdocs/fourn/facture/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index 8704e781a30..58a503feec9 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -206,7 +206,7 @@ if ($search_amount_all_tax != '') $sql .= natural_search('fac.total_ttc', $search_amount_all_tax, 1); } -if ($search_status != '') +if ($search_status != '' && $search_status>=0) { $sql.= " AND fac.fk_statut = ".$search_status; } From 2a0c508d475d7a06b9ee6526aa097d39e88dfd01 Mon Sep 17 00:00:00 2001 From: Christophe Battarel Date: Mon, 25 Apr 2016 11:26:13 +0200 Subject: [PATCH 064/116] FIX: end of select when no fournprice --- htdocs/core/class/html.form.class.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 01c60780074..83b3c389d97 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -2160,10 +2160,10 @@ class Form $form.= $opt; $i++; } - $form.= ''; - - $this->db->free($result); } + + $form.= ''; + $this->db->free($result); return $form; } else From 6bf52558e49e7190bafaa12d841def7427851d8e Mon Sep 17 00:00:00 2001 From: fappels Date: Mon, 25 Apr 2016 12:13:28 +0200 Subject: [PATCH 065/116] Fix #5100 Develop unable to create new third party Only set fk_stcomm if available Do not set 'null' into float databasefield --- htdocs/societe/class/societe.class.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index 17f96a93c3c..62364c57644 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -832,7 +832,10 @@ class Societe extends CommonObject $sql .= ",prefix_comm = ".(! empty($this->prefix_comm)?"'".$this->db->escape($this->prefix_comm)."'":"null"); $sql .= ",fk_effectif = ".(! empty($this->effectif_id)?"'".$this->db->escape($this->effectif_id)."'":"null"); - $sql .= ",fk_stcomm='".$this->stcomm_id."'"; + if (isset($this->stcomm_id)) + { + $sql .= ",fk_stcomm='".$this->stcomm_id."'"; + } $sql .= ",fk_typent = ".(! empty($this->typent_id)?"'".$this->db->escape($this->typent_id)."'":"0"); $sql .= ",fk_forme_juridique = ".(! empty($this->forme_juridique_code)?"'".$this->db->escape($this->forme_juridique_code)."'":"null"); @@ -848,7 +851,7 @@ class Societe extends CommonObject $sql .= ",barcode = ".(! empty($this->barcode)?"'".$this->db->escape($this->barcode)."'":"null"); $sql .= ",default_lang = ".(! empty($this->default_lang)?"'".$this->db->escape($this->default_lang)."'":"null"); $sql .= ",logo = ".(! empty($this->logo)?"'".$this->db->escape($this->logo)."'":"null"); - $sql .= ",outstanding_limit= '".($this->outstanding_limit!=''?$this->outstanding_limit:'null')."'"; + $sql .= ",outstanding_limit= ".($this->outstanding_limit!=''?$this->outstanding_limit:'null'); $sql .= ",fk_prospectlevel='".$this->fk_prospectlevel."'"; $sql .= ",webservices_url = ".(! empty($this->webservices_url)?"'".$this->db->escape($this->webservices_url)."'":"null"); From 11c31667b8e5a4754cdf7695aec01de2923370fe Mon Sep 17 00:00:00 2001 From: Francis Appels Date: Mon, 25 Apr 2016 15:04:33 +0200 Subject: [PATCH 066/116] Update product.class.php Fix updatePrice syslog. Is travis still running phpunit tests? --- htdocs/product/class/product.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 819a5438eda..0e64a661a9e 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -1416,7 +1416,7 @@ class Product extends CommonObject $id=$this->id; - dol_syslog(get_class($this)."::update_price id=".$id." newprice=".$newprice." newpricebase=".$newpricebase." newminprice=".$newminprice." level=".$level." npr=".$newnpr," newdefaultvatcode=".$newdefaultvatcode); + dol_syslog(get_class($this)."::update_price id=".$id." newprice=".$newprice." newpricebase=".$newpricebase." newminprice=".$newminprice." level=".$level." npr=".$newnpr." newdefaultvatcode=".$newdefaultvatcode); // Clean parameters if (empty($this->tva_tx)) $this->tva_tx=0; From 98f757a87a4e9e37ab1efd6b0c23a827f25b8f65 Mon Sep 17 00:00:00 2001 From: nka11 Date: Wed, 27 Apr 2016 08:59:12 +0200 Subject: [PATCH 067/116] New API methods add user to group get product list by category id --- htdocs/commande/class/api_commande.class.php | 8 +- htdocs/product/class/api_product.class.php | 86 ++++++++++++++++++++ htdocs/societe/class/api_contact.class.php | 2 +- htdocs/user/class/api_user.class.php | 31 ++++++- 4 files changed, 120 insertions(+), 7 deletions(-) diff --git a/htdocs/commande/class/api_commande.class.php b/htdocs/commande/class/api_commande.class.php index 04d78f30a1d..d6a2a3d0f82 100644 --- a/htdocs/commande/class/api_commande.class.php +++ b/htdocs/commande/class/api_commande.class.php @@ -207,9 +207,9 @@ class CommandeApi extends DolibarrApi */ function post($request_data = NULL) { - if(! DolibarrApiAccess::$user->rights->commande->creer) { - throw new RestException(401); - } + if(! DolibarrApiAccess::$user->rights->commande->creer) { + throw new RestException(401, "Insuffisant rights"); + } // Check mandatory fields $result = $this->_validate($request_data); @@ -224,7 +224,7 @@ class CommandeApi extends DolibarrApi $this->commande->lines = $lines; } if(! $this->commande->create(DolibarrApiAccess::$user) ) { - throw new RestException(401); + throw new RestException(500, "Error while creating order"); } return $this->commande->id; diff --git a/htdocs/product/class/api_product.class.php b/htdocs/product/class/api_product.class.php index 1ce63411cd3..1e485fd6733 100644 --- a/htdocs/product/class/api_product.class.php +++ b/htdocs/product/class/api_product.class.php @@ -18,6 +18,7 @@ use Luracast\Restler\RestException; require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; + require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; /** * API class for product object @@ -165,6 +166,91 @@ class ProductApi extends DolibarrApi } return $obj_ret; } + + + /** + * List products in a category + * + * Get a list of products + * + * @param int $mode Use this param to filter list (0 for all, 1 for only product, 2 for only service) + * @param int $category Use this param to filter list by category + * @param mixed $to_sell Filter products to sell (1) or not to sell (0) + * @param mixed $to_buy Filter products to nuy (1) or not to buy (0) + * @param string $sortfield Sort field + * @param string $sortorder Sort order + * @param int $limit Limit for list + * @param int $page Page number + * + * @return array Array of product objects + * + * @url GET /product/list/category/{category} + */ + function getByCategory($mode=0, $category=0, $to_sell='', $to_buy='', $sortfield = "p.ref", $sortorder = 'ASC', $limit = 0, $page = 0) { + global $db, $conf; + + $obj_ret = array(); + + $socid = DolibarrApiAccess::$user->societe_id ? DolibarrApiAccess::$user->societe_id : ''; + + $sql = "SELECT rowid, ref, ref_ext"; + $sql.= " FROM ".MAIN_DB_PREFIX."product as p, "; + $sql.= MAIN_DB_PREFIX."categorie_product as c"; + $sql.= ' WHERE p.entity IN ('.getEntity('product', 1).')'; + + // Select products of given category + $sql.= " AND c.fk_categorie = ".$db->escape($category); + $sql.= " AND c.fk_product = p.rowid "; + + // Show products + if ($mode == 1) $sql.= " AND p.fk_product_type = 0"; + // Show services + if ($mode == 2) $sql.= " AND p.fk_product_type = 1"; + // Show product on sell + if ($to_sell) $sql.= " AND p.to_sell = ".$db->escape($to_sell); + // Show product on buy + if ($to_buy) $sql.= " AND p.to_nuy = ".$db->escape($to_nuy); + + $nbtotalofrecords = 0; + if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) + { + $result = $db->query($sql); + $nbtotalofrecords = $db->num_rows($result); + } + + $sql.= $db->order($sortfield, $sortorder); + if ($limit) { + if ($page < 0) + { + $page = 0; + } + $offset = $limit * $page; + + $sql.= $db->plimit($limit + 1, $offset); + } + + $result = $db->query($sql); + if ($result) + { + $num = $db->num_rows($result); + while ($i < $num) + { + $obj = $db->fetch_object($result); + $product_static = new Product($db); + if($product_static->fetch($obj->rowid)) { + $obj_ret[] = parent::_cleanObjectDatas($product_static); + } + $i++; + } + } + else { + throw new RestException(503, 'Error when retrieve product list'); + } + if( ! count($obj_ret)) { + throw new RestException(404, 'No product found'); + } + return $obj_ret; + } /** * Create product object diff --git a/htdocs/societe/class/api_contact.class.php b/htdocs/societe/class/api_contact.class.php index ba7c0d4a211..5144c000b4d 100644 --- a/htdocs/societe/class/api_contact.class.php +++ b/htdocs/societe/class/api_contact.class.php @@ -251,7 +251,7 @@ class ContactApi extends DolibarrApi * * @param int $id Contact ID * @return integer - * + * * @url DELETE contact/{id} */ function delete($id) { diff --git a/htdocs/user/class/api_user.class.php b/htdocs/user/class/api_user.class.php index d09785d3ccb..af0db5bfb2d 100644 --- a/htdocs/user/class/api_user.class.php +++ b/htdocs/user/class/api_user.class.php @@ -159,8 +159,35 @@ class UserApi extends DolibarrApi if ($this->useraccount->update($id, DolibarrApiAccess::$user, 1, '', '', 'update')) return $this->get($id); - return false; - } + return false; + } + + /** + * add user to group + * + * @param int $id User ID + * @param int $group Group ID + * @return int + * + * @url GET user/{id}/setGroup/{group} + */ + function setGroup($id,$group) { + //if (!DolibarrApiAccess::$user->rights->user->user->supprimer) { + //throw new RestException(401); + //} + $result = $this->useraccount->fetch($id); + if (!$result) + { + throw new RestException(404, 'User not found'); + } + + if (!DolibarrApi::_checkAccessToResource('user', $this->useraccount->id, 'user')) + { + throw new RestException(401, 'Access not allowed for login ' . DolibarrApiAccess::$user->login); + } + + return $this->useraccount->SetInGroup($group,1); + } /** * Delete account From 77fcbd3884f93e3131dd033179105882d6380ac6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Wed, 27 Apr 2016 12:34:52 +0200 Subject: [PATCH 068/116] FIX: init var at wrong place report incorrect "shippable" flag on draft order. --- htdocs/commande/list.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index d26c5dea5dd..cfb8486be6f 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -429,15 +429,15 @@ if ($resql) // Show shippable Icon (create subloop, so may be slow) if ($conf->stock->enabled) { + $notshippable=0; + $warning = 0; + $text_info=''; + $text_warning=''; + $nbprod=0; + $langs->load("stocks"); if (($objp->fk_statut > 0) && ($objp->fk_statut < 3)) { - $notshippable=0; - $warning = 0; - $text_info=''; - $text_warning=''; - $nbprod=0; - $numlines = count($generic_commande->lines); // Loop on each line of order for ($lig=0; $lig < $numlines; $lig++) { From 75a91785497314fd986d1bf5b7a046636dc2b7ff Mon Sep 17 00:00:00 2001 From: esprit libre Date: Wed, 27 Apr 2016 16:42:59 +0200 Subject: [PATCH 069/116] Fix problem about unit buy price fetching To fix a bug encountered at customer shop about margin calculation. In some case, returned buy price is total buy price from provider and not unit buy price. Case opened on forum: http://www.dolibarr.fr/forum/527-bugs-sur-la-version-stable-courante/55467-calcul-des-marges --- htdocs/core/class/commonobject.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 349ff1e20b1..049ccbd1bc9 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -4560,7 +4560,7 @@ abstract class CommonObject $productFournisseur = new ProductFournisseur($this->db); if (($result = $productFournisseur->find_min_price_product_fournisseur($fk_product)) > 0) { - $buyPrice = $productFournisseur->fourn_price; + $buyPrice = $productFournisseur->fourn_unitprice; } else if ($result < 0) { From 0a67614e7291a80da711f034da097ea648e79a5f Mon Sep 17 00:00:00 2001 From: Maxime Kohlhaas Date: Thu, 28 Apr 2016 09:10:22 +0200 Subject: [PATCH 070/116] Fix wrong qty total in ca by prod/serv report --- htdocs/compta/stats/cabyprodserv.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/htdocs/compta/stats/cabyprodserv.php b/htdocs/compta/stats/cabyprodserv.php index e995b06aa6b..07727b02a81 100644 --- a/htdocs/compta/stats/cabyprodserv.php +++ b/htdocs/compta/stats/cabyprodserv.php @@ -177,6 +177,8 @@ report_header($nom,$nomlink,$period,$periodlink,$description,$builddate,$exportl // SQL request $catotal=0; +$catotal_ht=0; +$qtytotal=0; if ($modecompta == 'CREANCES-DETTES') { @@ -386,6 +388,8 @@ if ($modecompta == 'CREANCES-DETTES') // Total print ''; print ''; + print ''; + print ''; print ''; print ''; print ''; From 73806767171cea2b86181bba075eec3386a4eb42 Mon Sep 17 00:00:00 2001 From: Ferran Marcet Date: Thu, 28 Apr 2016 10:25:55 +0200 Subject: [PATCH 071/116] Fix: Not filtering correctly on supplier invoice's list --- htdocs/index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/index.php b/htdocs/index.php index 7e922c7059a..b2a130e7bca 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -440,7 +440,7 @@ if (! empty($conf->fournisseur->enabled) && ! empty($conf->facture->enabled) && $board->load_board($user); $board->warning_delay=$conf->facture->fournisseur->warning_delay/60/60/24; $board->label=$langs->trans("SupplierBillsToPay"); - $board->url=DOL_URL_ROOT.'/fourn/facture/list.php?filtre=paye:0'; + $board->url=DOL_URL_ROOT.'/fourn/facture/list.php?filtre=paye:0,fk_statut:1'; $board->img=img_object($langs->trans("Bills"),"bill"); $rowspan++; $dashboardlines[]=$board; From d599261d209b63b1013fe55b33917d3a1f434e01 Mon Sep 17 00:00:00 2001 From: fmarcet Date: Thu, 28 Apr 2016 10:38:50 +0200 Subject: [PATCH 072/116] FIX: Not filtering correctly when come from dashboard --- htdocs/fourn/facture/list.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index 8704e781a30..ec9d15e12e8 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -81,6 +81,7 @@ $year = GETPOST("year","int"); $day_lim = GETPOST('day_lim','int'); $month_lim = GETPOST('month_lim','int'); $year_lim = GETPOST('year_lim','int'); +$filter = GETPOST("filtre"); if (GETPOST("button_removefilter_x") || GETPOST("button_removefilter")) // Both test must be present to be compatible with all browsers { @@ -210,6 +211,15 @@ if ($search_status != '') { $sql.= " AND fac.fk_statut = ".$search_status; } +if ($filter && $filter != -1) +{ + $aFilter = explode(',', $filter); + foreach ($aFilter as $fil) + { + $filt = explode(':', $fil); + $sql .= ' AND ' . trim($filt[0]) . ' = ' . trim($filt[1]); + } +} $nbtotalofrecords = 0; if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) From e96e0f637ae50e8967493f82fae5d42749da5c31 Mon Sep 17 00:00:00 2001 From: fmarcet Date: Thu, 28 Apr 2016 10:41:37 +0200 Subject: [PATCH 073/116] FIX: Not filtering correctly when come from dashboard --- htdocs/fourn/facture/list.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index aba66991eec..9c945f01410 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -229,6 +229,15 @@ if ($search_status != '') { $sql.= " AND fac.fk_statut = ".$search_status; } +if ($filter && $filter != -1) +{ + $aFilter = explode(',', $filter); + foreach ($aFilter as $fil) + { + $filt = explode(':', $fil); + $sql .= ' AND ' . trim($filt[0]) . ' = ' . trim($filt[1]); + } +} $nbtotalofrecords = 0; if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) From 608c93702d1216e255e5264e26df697a13c075d7 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 28 Apr 2016 11:05:34 +0200 Subject: [PATCH 074/116] FIX Can't create a stock transfer from product card --- htdocs/product/stock/product.php | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/htdocs/product/stock/product.php b/htdocs/product/stock/product.php index 42fadf54923..e6477fadf69 100644 --- a/htdocs/product/stock/product.php +++ b/htdocs/product/stock/product.php @@ -185,7 +185,7 @@ if ($action == "correct_stock" && ! $cancel) // Transfer stock from a warehouse to another warehouse if ($action == "transfert_stock" && ! $cancel) { - if (! (GETPOST("id_entrepot_source",'int') > 0) || ! (GETPOST("id_entrepot_destination",'int') > 0)) + if (! (GETPOST("id_entrepot",'int') > 0) || ! (GETPOST("id_entrepot_destination",'int') > 0)) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Warehouse")), null, 'errors'); $error++; @@ -197,7 +197,7 @@ if ($action == "transfert_stock" && ! $cancel) $error++; $action='transfert'; } - if (GETPOST("id_entrepot_source",'int') == GETPOST("id_entrepot_destination",'int')) + if (GETPOST("id_entrepot",'int') == GETPOST("id_entrepot_destination",'int')) { setEventMessages($langs->trans("ErrorSrcAndTargetWarehouseMustDiffers"), null, 'errors'); $error++; @@ -255,7 +255,7 @@ if ($action == "transfert_stock" && ! $cancel) } else { - $srcwarehouseid=GETPOST('id_entrepot_source','int'); + $srcwarehouseid=GETPOST('id_entrepot','int'); $batch=GETPOST('batch_number'); $eatby=$d_eatby; $sellby=$d_sellby; @@ -292,7 +292,7 @@ if ($action == "transfert_stock" && ! $cancel) // Remove stock $result1=$object->correct_stock( $user, - GETPOST("id_entrepot_source"), + GETPOST("id_entrepot"), GETPOST("nbpiece"), 1, GETPOST("label"), @@ -391,6 +391,7 @@ if ($id > 0 || $ref) { $object = new Product($db); $result = $object->fetch($id,$ref); + $object->load_stock(); $help_url='EN:Module_Stocks_En|FR:Module_Stock|ES:Módulo_Stocks'; @@ -677,7 +678,7 @@ if ((! empty($conf->productbatch->enabled)) && $object->hasbatch()) print ''; } -$sql = "SELECT e.rowid, e.label, e.lieu, ps.reel, ps.pmp, ps.rowid as product_stock_id"; +$sql = "SELECT e.rowid, e.label, e.lieu, ps.reel, ps.rowid as product_stock_id, p.pmp"; $sql.= " FROM ".MAIN_DB_PREFIX."entrepot as e,"; $sql.= " ".MAIN_DB_PREFIX."product_stock as ps"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON p.rowid = ps.fk_product"; @@ -703,9 +704,10 @@ if ($resql) $entrepotstatic->id=$obj->rowid; $entrepotstatic->libelle=$obj->label; $entrepotstatic->lieu=$obj->lieu; + $stock_real = round($obj->reel, 10); print ''; print ''; - print ''; + print ''; // PMP print ''; // Value purchase From 32d641b66b54bad7589f321292bc0e875640c1bc Mon Sep 17 00:00:00 2001 From: Sergio Sanchis Climent Date: Thu, 28 Apr 2016 11:12:04 +0200 Subject: [PATCH 075/116] Bug show product if no accounting enabled --- htdocs/product/card.php | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 841d1b1b73a..23ce2ba7f11 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -1476,24 +1476,24 @@ else } // Accountancy sell code - print ''; + if (! empty($conf->accounting->enabled)){ + print ''; + } + // Accountancy buy code - print ''; + if (! empty($conf->accounting->enabled)){ + print ''; + } + // Status (to sell) /* From 33499ae6525adefdbbce62140e5d9d77cacfce4d Mon Sep 17 00:00:00 2001 From: fmarcet Date: Thu, 28 Apr 2016 11:14:00 +0200 Subject: [PATCH 076/116] FIX: Compatible with multicompany --- htdocs/compta/bank/class/account.class.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php index 9747703c58f..7058647fae6 100644 --- a/htdocs/compta/bank/class/account.class.php +++ b/htdocs/compta/bank/class/account.class.php @@ -7,6 +7,7 @@ * Copyright (C) 2013 Florian Henry * Copyright (C) 2015 Marcos García * Copyright (C) 2015 Alexandre Spangaro + * Copyright (C) 2016 Ferran Marcet * * 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 @@ -986,6 +987,7 @@ class Account extends CommonObject $sql = "SELECT COUNT(ba.rowid) as nb"; $sql.= " FROM ".MAIN_DB_PREFIX."bank_account as ba"; $sql.= " WHERE ba.rappro > 0 and ba.clos = 0"; + $sql.= " AND ba.entity IN (".getEntity('bank_account', 1).")"; if (empty($conf->global->BANK_CAN_RECONCILIATE_CASHACCOUNT)) $sql.= " AND ba.courant != 2"; $resql=$db->query($sql); if ($resql) From 44041975970c92e1bbc138f98e05023586e7f296 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 28 Apr 2016 11:54:42 +0200 Subject: [PATCH 077/116] Load user personal param at login --- htdocs/main.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 41dcd6285c5..7b3d7a71db6 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -516,7 +516,7 @@ if (! defined('NOLOGIN')) exit; } - $resultFetchUser=$user->fetch('', $login, '', 0, ($entitytotest ? $entitytotest : -1)); + $resultFetchUser=$user->fetch('', $login, '', 1, ($entitytotest ? $entitytotest : -1)); if ($resultFetchUser <= 0) { dol_syslog('User not found, connexion refused'); From e698c410f5a0a6115a90661ab51ea7b5545e375b Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Thu, 28 Apr 2016 13:56:17 +0200 Subject: [PATCH 078/116] FIX Postgres migration from 3.9 to 4.0 --- htdocs/core/lib/admin.lib.php | 5 +++-- htdocs/install/mysql/migration/3.9.0-4.0.0.sql | 12 +++++------- .../mysql/tables/llx_societe_remise_except.sql | 2 +- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/htdocs/core/lib/admin.lib.php b/htdocs/core/lib/admin.lib.php index ce495a771d8..4f08650e56b 100644 --- a/htdocs/core/lib/admin.lib.php +++ b/htdocs/core/lib/admin.lib.php @@ -346,7 +346,8 @@ function run_sql($sqlfile,$silent=1,$entity='',$usesavepoint=1,$handler='',$oker 'DB_ERROR_NO_INDEX_TO_DROP', 'DB_ERROR_CANNOT_CREATE', // Qd contrainte deja existante 'DB_ERROR_CANT_DROP_PRIMARY_KEY', - 'DB_ERROR_PRIMARY_KEY_ALREADY_EXISTS' + 'DB_ERROR_PRIMARY_KEY_ALREADY_EXISTS', + 'DB_ERROR_22P02' ); if ($okerror == 'none') $okerrors=array(); @@ -928,7 +929,7 @@ function complete_dictionary_with_modules(&$taborder,&$tabname,&$tablib,&$tabsql foreach($objMod->dictionaries['tabcond'] as $val) { $nbtabcond++; $tabcond[] = $val; } if (! empty($objMod->dictionaries['tabhelp'])) foreach($objMod->dictionaries['tabhelp'] as $val) { $nbtabhelp++; $tabhelp[] = $val; } if (! empty($objMod->dictionaries['tabfieldcheck'])) foreach($objMod->dictionaries['tabfieldcheck'] as $val) { $nbtabfieldcheck++; $tabfieldcheck[] = $val; } - + if ($nbtabname != $nbtablib || $nbtablib != $nbtabsql || $nbtabsql != $nbtabsqlsort) { print 'Error in descriptor of module '.$const_name.'. Array ->dictionaries has not same number of record for key "tabname", "tablib", "tabsql" and "tabsqlsort"'; diff --git a/htdocs/install/mysql/migration/3.9.0-4.0.0.sql b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql index 832107e7f6f..236d9c861de 100644 --- a/htdocs/install/mysql/migration/3.9.0-4.0.0.sql +++ b/htdocs/install/mysql/migration/3.9.0-4.0.0.sql @@ -303,19 +303,15 @@ ALTER TABLE llx_contratdet ADD COLUMN multicurrency_total_ht double(24,8) DEFAUL ALTER TABLE llx_contratdet ADD COLUMN multicurrency_total_tva double(24,8) DEFAULT 0; ALTER TABLE llx_contratdet ADD COLUMN multicurrency_total_ttc double(24,8) DEFAULT 0; - - ALTER TABLE llx_paiement ADD COLUMN multicurrency_amount double(24,8) DEFAULT 0; ALTER TABLE llx_paiement_facture ADD COLUMN multicurrency_amount double(24,8) DEFAULT 0; ALTER TABLE llx_paiementfourn ADD COLUMN multicurrency_amount double(24,8) DEFAULT 0; ALTER TABLE llx_paiementfourn_facturefourn ADD COLUMN multicurrency_amount double(24,8) DEFAULT 0; -ALTER TABLE llx_societe_remise_except ADD COLUMN multicurrency_amount_ht double(24,8) NOT NULL; +ALTER TABLE llx_societe_remise_except ADD COLUMN multicurrency_amount_ht double(24,8) DEFAULT 0 NOT NULL; ALTER TABLE llx_societe_remise_except ADD COLUMN multicurrency_amount_tva double(24,8) DEFAULT 0 NOT NULL; ALTER TABLE llx_societe_remise_except ADD COLUMN multicurrency_amount_ttc double(24,8) DEFAULT 0 NOT NULL; - - ALTER TABLE llx_supplier_proposal ADD COLUMN fk_multicurrency integer; ALTER TABLE llx_supplier_proposal ADD COLUMN multicurrency_code varchar(255); ALTER TABLE llx_supplier_proposal ADD COLUMN multicurrency_tx double(24,8) DEFAULT 1; @@ -367,10 +363,12 @@ CREATE TABLE llx_c_accounting_category ( ALTER TABLE llx_c_accounting_category ADD UNIQUE INDEX uk_c_accounting_category(code); UPDATE llx_accounting_account SET account_parent = '0' WHERE account_parent = ''; -ALTER TABLE llx_accounting_account MODIFY COLUMN account_parent integer DEFAULT 0; +-- VMYSQL4.1 ALTER TABLE llx_accounting_account MODIFY COLUMN account_parent integer DEFAULT 0; +-- VPGSQL8.2 ALTER TABLE llx_accounting_account ALTER COLUMN account_parent TYPE integer USING account_parent::integer; -DROP INDEX uk_bordereau_cheque ON llx_bordereau_cheque; +-- VMYSQL4.1 DROP INDEX uk_bordereau_cheque ON llx_bordereau_cheque; +-- VPGSQL8.2 DROP INDEX uk_bordereau_cheque; ALTER TABLE llx_bordereau_cheque CHANGE COLUMN number ref VARCHAR(30) NOT NULL; CREATE UNIQUE INDEX uk_bordereau_cheque ON llx_bordereau_cheque (ref, entity); diff --git a/htdocs/install/mysql/tables/llx_societe_remise_except.sql b/htdocs/install/mysql/tables/llx_societe_remise_except.sql index ef84e0081d6..f17d17670d2 100644 --- a/htdocs/install/mysql/tables/llx_societe_remise_except.sql +++ b/htdocs/install/mysql/tables/llx_societe_remise_except.sql @@ -33,7 +33,7 @@ create table llx_societe_remise_except fk_facture integer, fk_facture_source integer, description text NOT NULL, - multicurrency_amount_ht double(24,8) NOT NULL, + multicurrency_amount_ht double(24,8) DEFAULT 0 NOT NULL, multicurrency_amount_tva double(24,8) DEFAULT 0 NOT NULL, multicurrency_amount_ttc double(24,8) DEFAULT 0 NOT NULL )ENGINE=innodb; From 972e5e571d15c893d6a8f86473c942aeb6e13283 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 28 Apr 2016 21:52:23 +0200 Subject: [PATCH 079/116] Update card.php --- htdocs/expensereport/card.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index 48de12a678c..54a67cc6ffc 100644 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -1625,7 +1625,7 @@ else $sql.= ' ctf.code as type_fees_code, ctf.label as type_fees_libelle,'; $sql.= ' pjt.rowid as projet_id, pjt.title as projet_title, pjt.ref as projet_ref'; $sql.= ' FROM '.MAIN_DB_PREFIX.'expensereport_det as fde'; - $sql.= ' INNER JOIN '.MAIN_DB_PREFIX.'c_type_fees as ctf ON fde.fk_c_type_fees=ctf.id'; + $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_type_fees as ctf ON fde.fk_c_type_fees=ctf.id'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'projet as pjt ON fde.fk_projet=pjt.rowid'; $sql.= ' WHERE fde.fk_expensereport = '.$object->id; @@ -1691,7 +1691,7 @@ else } print ''; } - print ''; + print ''; print ''; print ''; print ''; From c743f6cfe5e5624fd4f42d590b2c3e0b6d05b728 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 28 Apr 2016 21:56:28 +0200 Subject: [PATCH 080/116] If no project, update line is impossible --- htdocs/expensereport/class/expensereport.class.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index 0a85f720c13..b524850fdb4 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -1265,7 +1265,9 @@ class ExpenseReport extends CommonObject $sql.= " FROM ".MAIN_DB_PREFIX."projet as p"; $sql.= " WHERE p.rowid = ".$projet_id; $result = $this->db->query($sql); - $objp_projet = $this->db->fetch_object($result); + if ($result) { + $objp_projet = $this->db->fetch_object($result); + } $ligne->projet_ref = $objp_projet->ref_projet; $ligne->projet_title = $objp_projet->title_projet; From ab63bdd235fd130ea1b664c24f1fc4ef00746a40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Thu, 28 Apr 2016 22:30:22 +0200 Subject: [PATCH 081/116] keep files attached with PROV status --- .../class/expensereport.class.php | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index 0a85f720c13..e0be6dedea0 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -850,6 +850,7 @@ class ExpenseReport extends CommonObject { global $conf,$langs; + $this->oldref = $this->ref; $expld_car = (empty($conf->global->NDF_EXPLODE_CHAR))?"-":$conf->global->NDF_EXPLODE_CHAR; // Sélection du numéro de ref suivant @@ -872,6 +873,36 @@ class ExpenseReport extends CommonObject $this->ref = strtoupper($fuser->login).$expld_car.$prefix.$this->ref.$expld_car.dol_print_date($this->date_debut,'%y%m%d'); } + // Rename directory if dir was a temporary ref + if (preg_match('/^[\(]?PROV/i', $this->oldref)) + { + require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + // We rename directory in order to avoid losing the attachments + $oldref = dol_sanitizeFileName($this->oldref); + $newref = dol_sanitizeFileName($this->ref); + $dirsource = $conf->expensereport->dir_output.'/'.$oldref; + $dirdest = $conf->expensereport->dir_output.'/'.$newref; + if (file_exists($dirsource)) + { + dol_syslog(get_class($this)."::valid() rename dir ".$dirsource." into ".$dirdest); + + if (@rename($dirsource, $dirdest)) + { + dol_syslog("Rename ok"); + // Rename docs starting with $oldref with $newref + $listoffiles=dol_dir_list($conf->expensereport->dir_output.'/'.$newref, 'files', 1, '^'.preg_quote($oldref,'/')); + foreach($listoffiles as $fileentry) + { + $dirsource=$fileentry['name']; + $dirdest=preg_replace('/^'.preg_quote($oldref,'/').'/',$newref, $dirsource); + $dirsource=$fileentry['path'].'/'.$dirsource; + $dirdest=$fileentry['path'].'/'.$dirdest; + @rename($dirsource, $dirdest); + } + } + } + } + if ($this->fk_statut != 2) { $now = dol_now(); From 61fda99fc5c4876c0daf8e8f7ab3f49858fa4db3 Mon Sep 17 00:00:00 2001 From: Sergio Sanchis Climent Date: Fri, 29 Apr 2016 01:13:10 +0200 Subject: [PATCH 082/116] FIX Bug insert cronjobs in modules, default values --- htdocs/core/modules/DolibarrModules.class.php | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/htdocs/core/modules/DolibarrModules.class.php b/htdocs/core/modules/DolibarrModules.class.php index 9a3fe6ff1f3..d682aa2db97 100644 --- a/htdocs/core/modules/DolibarrModules.class.php +++ b/htdocs/core/modules/DolibarrModules.class.php @@ -1009,7 +1009,12 @@ class DolibarrModules // Can not be abstract, because we need to insta if (! $err) { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."cronjob (module_name, datec, datestart, label, jobtype, classesname, objectname, methodename, command, params, note, frequency, unitfrequency, priority, status, entity, test)"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."cronjob (module_name, datec, datestart, label, jobtype, classesname, objectname, methodename, command, params, note,"; + if(is_int($frequency)){ $sql.= ' frequency,'; } + if(is_int($unitfrequency)){ $sql.= ' unitfrequency,'; } + if(is_int($priority)){ $sql.= ' priority,'; } + if(is_int($status)){ $sql.= ' status,'; } + $sql.= " entity, test)"; $sql.= " VALUES ("; $sql.= "'".$this->db->escape($this->rights_class)."', "; $sql.= "'".$this->db->idate($now)."', "; @@ -1022,10 +1027,10 @@ class DolibarrModules // Can not be abstract, because we need to insta $sql.= ($command?"'".$this->db->escape($command)."'":"null").","; $sql.= ($parameters?"'".$this->db->escape($parameters)."'":"null").","; $sql.= ($comment?"'".$this->db->escape($comment)."'":"null").","; - $sql.= "'".$this->db->escape($frequency)."', "; - $sql.= "'".$this->db->escape($unitfrequency)."', "; - $sql.= "'".$this->db->escape($priority)."', "; - $sql.= "'".$this->db->escape($status)."', "; + if(is_int($frequency)){ $sql.= "'".$this->db->escape($frequency)."', "; } + if(is_int($unitfrequency)){ $sql.= "'".$this->db->escape($unitfrequency)."', "; } + if(is_int($priority)) {$sql.= "'".$this->db->escape($priority)."', ";} + if(is_int($status)){ $sql.= "'".$this->db->escape($status)."', "; } $sql.= $conf->entity.","; $sql.= "'".$this->db->escape($test)."'"; $sql.= ")"; From a982f764fe4bd85e6e6cf51a7ca3366a5f20bfae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Fri, 29 Apr 2016 12:26:41 +0200 Subject: [PATCH 083/116] don't change ref if ref is not prov --- .../class/expensereport.class.php | 34 +++++++++++-------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index e0be6dedea0..439e6053aff 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -853,10 +853,6 @@ class ExpenseReport extends CommonObject $this->oldref = $this->ref; $expld_car = (empty($conf->global->NDF_EXPLODE_CHAR))?"-":$conf->global->NDF_EXPLODE_CHAR; - // Sélection du numéro de ref suivant - $ref_next = $this->getNextNumRef(); - $ref_number_int = ($this->ref+1)-1; - // Sélection de la date de début de la NDF $sql = 'SELECT date_debut'; $sql.= ' FROM '.MAIN_DB_PREFIX.$this->table_element; @@ -865,17 +861,23 @@ class ExpenseReport extends CommonObject $objp = $this->db->fetch_object($result); $this->date_debut = $this->db->jdate($objp->date_debut); - // Création du ref_number suivant - if($ref_next) - { - $prefix="ER"; - if (! empty($conf->global->EXPENSE_REPORT_PREFIX)) $prefix=$conf->global->EXPENSE_REPORT_PREFIX; - $this->ref = strtoupper($fuser->login).$expld_car.$prefix.$this->ref.$expld_car.dol_print_date($this->date_debut,'%y%m%d'); - } + $update_number_int = false; + // Create next ref if ref is PROVxx // Rename directory if dir was a temporary ref - if (preg_match('/^[\(]?PROV/i', $this->oldref)) + if (preg_match('/^[\(]?PROV/i', $this->ref)) { + // Sélection du numéro de ref suivant + $ref_next = $this->getNextNumRef(); + $ref_number_int = ($this->ref+1)-1; + $update_number_int = true; + // Création du ref_number suivant + if($ref_next) + { + $prefix="ER"; + if (! empty($conf->global->EXPENSE_REPORT_PREFIX)) $prefix=$conf->global->EXPENSE_REPORT_PREFIX; + $this->ref = strtoupper($fuser->login).$expld_car.$prefix.$this->ref.$expld_car.dol_print_date($this->date_debut,'%y%m%d'); + } require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; // We rename directory in order to avoid losing the attachments $oldref = dol_sanitizeFileName($this->oldref); @@ -906,10 +908,12 @@ class ExpenseReport extends CommonObject if ($this->fk_statut != 2) { $now = dol_now(); - + $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; - $sql.= " SET ref = '".$this->ref."', fk_statut = 2, fk_user_valid = ".$fuser->id.", date_valid='".$this->db->idate($now)."',"; - $sql.= " ref_number_int = ".$ref_number_int; + $sql.= " SET ref = '".$this->ref."', fk_statut = 2, fk_user_valid = ".$fuser->id.", date_valid='".$this->db->idate($now)."'"; + if ($update_number_int) { + $sql.= ", ref_number_int = ".$ref_number_int; + } $sql.= ' WHERE rowid = '.$this->id; $resql=$this->db->query($sql); From 7e8aef037a078924e787894c7f3f4f45074beb9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20FRANCE?= Date: Fri, 29 Apr 2016 13:23:06 +0200 Subject: [PATCH 084/116] Update expensereport.class.php --- htdocs/expensereport/class/expensereport.class.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index 0a85f720c13..0adf59f64c6 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -746,7 +746,7 @@ class ExpenseReport extends CommonObject $sql.= ' ctf.code as code_type_fees, ctf.label as libelle_type_fees,'; $sql.= ' p.ref as ref_projet, p.title as title_projet'; $sql.= ' FROM '.MAIN_DB_PREFIX.$this->table_element_line.' as de'; - $sql.= ' INNER JOIN '.MAIN_DB_PREFIX.'c_type_fees as ctf ON de.fk_c_type_fees = ctf.id'; + $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_type_fees as ctf ON de.fk_c_type_fees = ctf.id'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'projet as p ON de.fk_projet = p.rowid'; $sql.= ' WHERE de.'.$this->fk_element.' = '.$this->id; @@ -776,7 +776,7 @@ class ExpenseReport extends CommonObject $deplig->total_tva = $objp->total_tva; $deplig->total_ttc = $objp->total_ttc; - $deplig->type_fees_code = $objp->code_type_fees; + $deplig->type_fees_code = empty($objp->code_type_fees)?'TF_OTHER':$objp->code_type_fees; $deplig->type_fees_libelle = $objp->libelle_type_fees; $deplig->tva_tx = $objp->tva_tx; $deplig->vatrate = $objp->tva_tx; From 2a27fe02eb4c6ede19605600ec9e81f585154cf6 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 29 Apr 2016 15:12:58 +0200 Subject: [PATCH 085/116] Fix detection if tag already exists --- build/makepack-dolibarr.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/makepack-dolibarr.pl b/build/makepack-dolibarr.pl index fbae52f9726..a3ce6ed76bc 100755 --- a/build/makepack-dolibarr.pl +++ b/build/makepack-dolibarr.pl @@ -376,7 +376,7 @@ if ($nboftargetok) { print 'Run git tag -a -m "'.$MAJOR.'.'.$MINOR.'.'.$BUILD.'" "'.$MAJOR.'.'.$MINOR.'.'.$BUILD.'"'."\n"; $ret=`git tag -a -m "$MAJOR.$MINOR.$BUILD" "$MAJOR.$MINOR.$BUILD" 2>&1`; - if ($ret =~ /already exists/) + if ($ret =~ /(already exists|existe déjà)/) { print "WARNING: Tag ".$MAJOR.'.'.$MINOR.'.'.$BUILD." already exists. Overwrite (y/N) ? "; $QUESTIONOVERWRITETAG=; From 42f10234b1666d90daa112cad939793cad5511d3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 29 Apr 2016 15:28:26 +0200 Subject: [PATCH 086/116] Fix regression --- ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index a009533f07a..3418d0c834b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,8 +6,8 @@ WARNING: Do not try to make any Dolibarr upgrade if you are running Mysql version 5.5.40. Mysql version 5.5.40 has a very critical bug making your data beeing definitely lost. -You may also experience troubles with Mysql 5.5.41/42/43 with error "Lost connection" -during migration. +You may also experience troubles with Mysql 5.5.41/42/43 with error "Lost connection" during +migration. Upgrading to any other version or any other database system is abolutely required BEFORE trying make a Dolibarr upgrade. From 466404d9686078da53e052e5bfa6b3af21632e73 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 29 Apr 2016 17:58:39 +0200 Subject: [PATCH 087/116] Fix missing dol_fiche_xxx --- htdocs/admin/menus/edit.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/menus/edit.php b/htdocs/admin/menus/edit.php index e29b47daeab..5fc39432c8e 100644 --- a/htdocs/admin/menus/edit.php +++ b/htdocs/admin/menus/edit.php @@ -276,6 +276,8 @@ if ($action == 'create') print '
    '; print ''; + dol_fiche_head(); + print '
    '.(! empty($remaintopay)?price($remaintopay,0,$langs):' ').''.price($totalarray['totalvat']).''.price($totalarray['totalttc']).''.price($totalarray['totalam']).''.price($totalarray['totalrtp']).'
    '; - print ''; + if (! empty($conf->accounting->enabled)) + { + print $formaccountancy->select_account($conf->global->$key, $key, 1, '', 1, 1); + } + else + { + print ''; + } print '
    '.$langs->trans("SocialContributions").' ('.$langs->trans("Type").' 0)
    '.$langs->trans("SocialContributionsNondeductibles").'
    '.$langs->trans("SocialContributions").' ('.$langs->trans("Type").' 1)
    '.$langs->trans("SocialContributionsDeductibles").'
    '.$langs->trans("Total").''.price($qtytotal).' '.price($catotal_ht).''.price($catotal).' 
    '.$entrepotstatic->getNomUrl(1).''.$obj->reel.($obj->reel<0?' '.img_warning():'').''.$stock_real.($stock_real < 0 ?' '.img_warning():'').''.(price2num($object->pmp)?price2num($object->pmp,'MU'):'').'
    '; - print ''; - print '
    '; - print $langs->trans("ProductAccountancySellCode"); - print '
    '; - print '
    '; - print length_accountg($object->accountancy_code_sell); - print '
    '; + print $langs->trans("ProductAccountancySellCode"); + print ''; + print length_accountg($object->accountancy_code_sell); + print '
    '; - print ''; - print '
    '; - print $langs->trans("ProductAccountancyBuyCode"); - print '
    '; - print '
    '; - print length_accountg($object->accountancy_code_buy); - print '
    '; + print $langs->trans("ProductAccountancyBuyCode"); + print ''; + print length_accountg($object->accountancy_code_buy); + print '
    '.$langs->trans("TF_".strtoupper($objp->type_fees_libelle)).''.$langs->trans("TF_".strtoupper(empty($objp->type_fees_libelle)?'OTHER':$objp->type_fees_libelle)).''.$objp->comments.''.vatrate($objp->vatrate,true).''.price($objp->value_unit).'
    '; // Id @@ -369,8 +371,10 @@ if ($action == 'create') print '
    '; + dol_fiche_end(); + // Boutons - print '
    '; + print '
    '; print ''; print '     '; print ''; @@ -388,6 +392,8 @@ elseif ($action == 'edit') print ''; print ''; + dol_fiche_head(); + print ''; $menu = new Menubase($db); @@ -455,8 +461,10 @@ elseif ($action == 'edit') print '
    '; + dol_fiche_end(); + // Bouton - print '
    '; + print '
    '; print ''; print '     '; print ''; From b434dad21a5a4eda503d098310964758033c5c4c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 29 Apr 2016 18:34:56 +0200 Subject: [PATCH 088/116] Fix: remove a debug code --- htdocs/core/modules/modSociete.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/modules/modSociete.class.php b/htdocs/core/modules/modSociete.class.php index f478136de09..baf680f0352 100644 --- a/htdocs/core/modules/modSociete.class.php +++ b/htdocs/core/modules/modSociete.class.php @@ -274,7 +274,7 @@ class modSociete extends DolibarrModules $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'c_stcomm as st ON s.fk_stcomm = st.id'; $this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'societe_commerciaux as sc ON sc.fk_soc = s.rowid LEFT JOIN '.MAIN_DB_PREFIX.'user as u ON sc.fk_user = u.rowid'; $this->export_sql_end[$r] .=' WHERE s.entity IN ('.getEntity('societe', 1).')'; - print_r($db); + // Export list of contacts and attributes $r++; $this->export_code[$r]=$this->rights_class.'_'.$r; From eba29890d8c8a5dffa7a5178fc539bcbf21523da Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 29 Apr 2016 18:57:20 +0200 Subject: [PATCH 089/116] Update changelog #5107 --- ChangeLog | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index e812e4dd422..21d3ebc66b3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -25,13 +25,14 @@ Dolibarr 4.0 should be compatible with PHP 7 but more feedbacks are still expect Following changes may create regression for some external modules, but were necessary to make Dolibarr better: - Function log() of class CommandeFournisseur has been removed. Using it is no more required. +- Class Resource was renamed into DolResource to avoid conflict with a reserved PHP word. +- Method commonobject->add_thumb() has been renamed into commonobject->addThumbs(). - Method select_type_comptes_financiers() has been renamed into selectTypeOfBankAccount() - Property ->client that was deprecated 6 years ago, is replaced in all core code with ->thirdparty. - File '/core/tpl/document_actions_pre_headers.tpl.php' were renamed into '/core/actions_linkedfiles.inc.php'. So if you included it into your module, change your code like this to be compatible with all version: $res=@include_once DOL_DOCUMENT_ROOT . '/core/actions_linkedfiles.inc.php'; if (! $res) include_once DOL_DOCUMENT_ROOT . '/core/tpl/document_actions_pre_headers.tpl.php'; -- Class Resource was renamed into DolResource to avoid conflict with a reserved PHP word. ***** ChangeLog for 3.9.1 compared to 3.9.* ***** From 3a749462101cf852f33cb4a6d020f865b70e8e5f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 29 Apr 2016 18:59:54 +0200 Subject: [PATCH 090/116] Revert "FIX #4813 Won translation for the key OppStatusWON instead OppStatusWIN" --- htdocs/langs/ar_SA/projects.lang | 2 +- htdocs/langs/bn_BD/projects.lang | 2 +- htdocs/langs/bs_BA/projects.lang | 2 +- htdocs/langs/ca_ES/projects.lang | 2 +- htdocs/langs/cs_CZ/projects.lang | 2 +- htdocs/langs/da_DK/projects.lang | 2 +- htdocs/langs/de_DE/projects.lang | 2 +- htdocs/langs/en_US/projects.lang | 2 +- htdocs/langs/es_ES/projects.lang | 2 +- htdocs/langs/et_EE/projects.lang | 2 +- htdocs/langs/eu_ES/projects.lang | 2 +- htdocs/langs/fi_FI/projects.lang | 2 +- htdocs/langs/fr_FR/projects.lang | 2 +- htdocs/langs/he_IL/projects.lang | 2 +- htdocs/langs/hr_HR/projects.lang | 2 +- htdocs/langs/hu_HU/projects.lang | 2 +- htdocs/langs/id_ID/projects.lang | 2 +- htdocs/langs/is_IS/projects.lang | 2 +- htdocs/langs/it_IT/projects.lang | 2 +- htdocs/langs/ka_GE/projects.lang | 2 +- htdocs/langs/kn_IN/projects.lang | 2 +- htdocs/langs/ko_KR/projects.lang | 2 +- htdocs/langs/lo_LA/projects.lang | 2 +- htdocs/langs/lt_LT/projects.lang | 2 +- htdocs/langs/lv_LV/projects.lang | 2 +- htdocs/langs/mk_MK/projects.lang | 2 +- htdocs/langs/nb_NO/projects.lang | 2 +- htdocs/langs/nl_NL/projects.lang | 2 +- htdocs/langs/pl_PL/projects.lang | 2 +- htdocs/langs/pt_BR/projects.lang | 2 +- htdocs/langs/pt_PT/projects.lang | 2 +- htdocs/langs/ro_RO/projects.lang | 2 +- htdocs/langs/ru_RU/projects.lang | 2 +- htdocs/langs/sk_SK/projects.lang | 2 +- htdocs/langs/sl_SI/projects.lang | 2 +- htdocs/langs/sq_AL/projects.lang | 2 +- htdocs/langs/sr_RS/projects.lang | 2 +- htdocs/langs/sv_SE/projects.lang | 2 +- htdocs/langs/sw_SW/projects.lang | 2 +- htdocs/langs/tr_TR/projects.lang | 2 +- htdocs/langs/uk_UA/projects.lang | 2 +- htdocs/langs/uz_UZ/projects.lang | 2 +- htdocs/langs/vi_VN/projects.lang | 2 +- htdocs/langs/zh_CN/projects.lang | 2 +- htdocs/langs/zh_TW/projects.lang | 2 +- 45 files changed, 45 insertions(+), 45 deletions(-) diff --git a/htdocs/langs/ar_SA/projects.lang b/htdocs/langs/ar_SA/projects.lang index ab322a4bd05..bdd7967374a 100644 --- a/htdocs/langs/ar_SA/projects.lang +++ b/htdocs/langs/ar_SA/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=المؤهل العلمى OppStatusPROPO=مقترح OppStatusNEGO=Negociation OppStatusPENDING=بانتظار -OppStatusWON=فاز +OppStatusWIN=فاز OppStatusLOST=ضائع Budget=Budget diff --git a/htdocs/langs/bn_BD/projects.lang b/htdocs/langs/bn_BD/projects.lang index 982ec36b26b..b4a21befd80 100644 --- a/htdocs/langs/bn_BD/projects.lang +++ b/htdocs/langs/bn_BD/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/bs_BA/projects.lang b/htdocs/langs/bs_BA/projects.lang index fdfcbd408e5..0b25f6ea67a 100644 --- a/htdocs/langs/bs_BA/projects.lang +++ b/htdocs/langs/bs_BA/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/ca_ES/projects.lang b/htdocs/langs/ca_ES/projects.lang index 91c1a7cc9db..5c2f18593cb 100644 --- a/htdocs/langs/ca_ES/projects.lang +++ b/htdocs/langs/ca_ES/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualificació OppStatusPROPO=Pressupost OppStatusNEGO=Negociació OppStatusPENDING=Pendent -OppStatusWON=Guanyat +OppStatusWIN=Guanyat OppStatusLOST=Perdut Budget=Budget diff --git a/htdocs/langs/cs_CZ/projects.lang b/htdocs/langs/cs_CZ/projects.lang index cdc3743aee4..14b67dbb918 100644 --- a/htdocs/langs/cs_CZ/projects.lang +++ b/htdocs/langs/cs_CZ/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/da_DK/projects.lang b/htdocs/langs/da_DK/projects.lang index 618a6e5dc47..0c7ed16673b 100644 --- a/htdocs/langs/da_DK/projects.lang +++ b/htdocs/langs/da_DK/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/de_DE/projects.lang b/htdocs/langs/de_DE/projects.lang index c1d58f6d3d6..15fc4080190 100644 --- a/htdocs/langs/de_DE/projects.lang +++ b/htdocs/langs/de_DE/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualifikation OppStatusPROPO=Angebot OppStatusNEGO=Verhandlung OppStatusPENDING=Anstehend -OppStatusWON=Gewonnen +OppStatusWIN=Gewonnen OppStatusLOST=Verloren Budget=Budget diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index c68bd370f5a..979fd4670bb 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -190,6 +190,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget \ No newline at end of file diff --git a/htdocs/langs/es_ES/projects.lang b/htdocs/langs/es_ES/projects.lang index 3a9fd407875..b0965bd080c 100644 --- a/htdocs/langs/es_ES/projects.lang +++ b/htdocs/langs/es_ES/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Cualificación OppStatusPROPO=Presupuesto OppStatusNEGO=Negociación OppStatusPENDING=Pendiente -OppStatusWON=Ganado +OppStatusWIN=Ganado OppStatusLOST=Perdido Budget=Budget diff --git a/htdocs/langs/et_EE/projects.lang b/htdocs/langs/et_EE/projects.lang index 31f516ada14..7c53e51f80d 100644 --- a/htdocs/langs/et_EE/projects.lang +++ b/htdocs/langs/et_EE/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/eu_ES/projects.lang b/htdocs/langs/eu_ES/projects.lang index 982ec36b26b..b4a21befd80 100644 --- a/htdocs/langs/eu_ES/projects.lang +++ b/htdocs/langs/eu_ES/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/fi_FI/projects.lang b/htdocs/langs/fi_FI/projects.lang index 50177fda449..fea93953f69 100644 --- a/htdocs/langs/fi_FI/projects.lang +++ b/htdocs/langs/fi_FI/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/fr_FR/projects.lang b/htdocs/langs/fr_FR/projects.lang index 6389d10abbf..b95fbb3cd56 100644 --- a/htdocs/langs/fr_FR/projects.lang +++ b/htdocs/langs/fr_FR/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposition OppStatusNEGO=Négociation OppStatusPENDING=En attente -OppStatusWON=Gagné +OppStatusWIN=Gagné OppStatusLOST=Perdu Budget=Budget diff --git a/htdocs/langs/he_IL/projects.lang b/htdocs/langs/he_IL/projects.lang index ee8785e6397..fb939aef169 100644 --- a/htdocs/langs/he_IL/projects.lang +++ b/htdocs/langs/he_IL/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/hr_HR/projects.lang b/htdocs/langs/hr_HR/projects.lang index bd83a40224d..7dae3662584 100644 --- a/htdocs/langs/hr_HR/projects.lang +++ b/htdocs/langs/hr_HR/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/hu_HU/projects.lang b/htdocs/langs/hu_HU/projects.lang index 20a6f143d2a..9ab8ab13b05 100644 --- a/htdocs/langs/hu_HU/projects.lang +++ b/htdocs/langs/hu_HU/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/id_ID/projects.lang b/htdocs/langs/id_ID/projects.lang index 13798a28b3c..83a284cc58c 100644 --- a/htdocs/langs/id_ID/projects.lang +++ b/htdocs/langs/id_ID/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/is_IS/projects.lang b/htdocs/langs/is_IS/projects.lang index 517ab7e2e84..d41a345caf3 100644 --- a/htdocs/langs/is_IS/projects.lang +++ b/htdocs/langs/is_IS/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/it_IT/projects.lang b/htdocs/langs/it_IT/projects.lang index 8599f5089b5..9954fb68fd2 100644 --- a/htdocs/langs/it_IT/projects.lang +++ b/htdocs/langs/it_IT/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualificazione OppStatusPROPO=Proposta OppStatusNEGO=Negoziazione OppStatusPENDING=In attesa -OppStatusWON=Vinto +OppStatusWIN=Vinto OppStatusLOST=Perso Budget=Budget diff --git a/htdocs/langs/ka_GE/projects.lang b/htdocs/langs/ka_GE/projects.lang index 982ec36b26b..b4a21befd80 100644 --- a/htdocs/langs/ka_GE/projects.lang +++ b/htdocs/langs/ka_GE/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/kn_IN/projects.lang b/htdocs/langs/kn_IN/projects.lang index 982ec36b26b..b4a21befd80 100644 --- a/htdocs/langs/kn_IN/projects.lang +++ b/htdocs/langs/kn_IN/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/ko_KR/projects.lang b/htdocs/langs/ko_KR/projects.lang index 982ec36b26b..b4a21befd80 100644 --- a/htdocs/langs/ko_KR/projects.lang +++ b/htdocs/langs/ko_KR/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/lo_LA/projects.lang b/htdocs/langs/lo_LA/projects.lang index 52ca66a2763..56cc02c9e82 100644 --- a/htdocs/langs/lo_LA/projects.lang +++ b/htdocs/langs/lo_LA/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/lt_LT/projects.lang b/htdocs/langs/lt_LT/projects.lang index bc9adc0ef7f..6398f58b129 100644 --- a/htdocs/langs/lt_LT/projects.lang +++ b/htdocs/langs/lt_LT/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/lv_LV/projects.lang b/htdocs/langs/lv_LV/projects.lang index 000139e853c..d04ece7b84f 100644 --- a/htdocs/langs/lv_LV/projects.lang +++ b/htdocs/langs/lv_LV/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Kvalifikācija OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/mk_MK/projects.lang b/htdocs/langs/mk_MK/projects.lang index 982ec36b26b..b4a21befd80 100644 --- a/htdocs/langs/mk_MK/projects.lang +++ b/htdocs/langs/mk_MK/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/nb_NO/projects.lang b/htdocs/langs/nb_NO/projects.lang index c69d3c47ee4..c57648d77d1 100644 --- a/htdocs/langs/nb_NO/projects.lang +++ b/htdocs/langs/nb_NO/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Kvalifikasjon OppStatusPROPO=Tilbud OppStatusNEGO=Forhandling OppStatusPENDING=Venter -OppStatusWON=Vunnet +OppStatusWIN=Vunnet OppStatusLOST=Tapt Budget=Budget diff --git a/htdocs/langs/nl_NL/projects.lang b/htdocs/langs/nl_NL/projects.lang index 8cf1a0d4684..93514bd4108 100644 --- a/htdocs/langs/nl_NL/projects.lang +++ b/htdocs/langs/nl_NL/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/pl_PL/projects.lang b/htdocs/langs/pl_PL/projects.lang index 429a664d293..1479193a7cc 100644 --- a/htdocs/langs/pl_PL/projects.lang +++ b/htdocs/langs/pl_PL/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Kwalifikacja OppStatusPROPO=Wniosek OppStatusNEGO=Negocjacje OppStatusPENDING=W oczekiwaniu -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Zagubiony Budget=Budget diff --git a/htdocs/langs/pt_BR/projects.lang b/htdocs/langs/pt_BR/projects.lang index ab92118d1e4..f8ae458330b 100644 --- a/htdocs/langs/pt_BR/projects.lang +++ b/htdocs/langs/pt_BR/projects.lang @@ -125,5 +125,5 @@ OppStatusQUAL=Qualificação OppStatusPROPO=Proposta OppStatusNEGO=Negociação OppStatusPENDING=Pendente -OppStatusWON=Ganhou +OppStatusWIN=Ganhou OppStatusLOST=Perdido diff --git a/htdocs/langs/pt_PT/projects.lang b/htdocs/langs/pt_PT/projects.lang index 2df744a5013..c6bc715fada 100644 --- a/htdocs/langs/pt_PT/projects.lang +++ b/htdocs/langs/pt_PT/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/ro_RO/projects.lang b/htdocs/langs/ro_RO/projects.lang index c6fc6cb74e0..301c6242d24 100644 --- a/htdocs/langs/ro_RO/projects.lang +++ b/htdocs/langs/ro_RO/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Calificare OppStatusPROPO=Ofertă OppStatusNEGO=Negociere OppStatusPENDING=In asteptarea -OppStatusWON=Castigat +OppStatusWIN=Castigat OppStatusLOST=Pierdut Budget=Budget diff --git a/htdocs/langs/ru_RU/projects.lang b/htdocs/langs/ru_RU/projects.lang index bdee2d2d019..27c4995d20d 100644 --- a/htdocs/langs/ru_RU/projects.lang +++ b/htdocs/langs/ru_RU/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/sk_SK/projects.lang b/htdocs/langs/sk_SK/projects.lang index 579d69f1323..6453fec2772 100644 --- a/htdocs/langs/sk_SK/projects.lang +++ b/htdocs/langs/sk_SK/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/sl_SI/projects.lang b/htdocs/langs/sl_SI/projects.lang index 38c773a95bb..81c1c01c46d 100644 --- a/htdocs/langs/sl_SI/projects.lang +++ b/htdocs/langs/sl_SI/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/sq_AL/projects.lang b/htdocs/langs/sq_AL/projects.lang index 982ec36b26b..b4a21befd80 100644 --- a/htdocs/langs/sq_AL/projects.lang +++ b/htdocs/langs/sq_AL/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/sr_RS/projects.lang b/htdocs/langs/sr_RS/projects.lang index 553b7ec80af..8ba6046454e 100644 --- a/htdocs/langs/sr_RS/projects.lang +++ b/htdocs/langs/sr_RS/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Kvalifikacija OppStatusPROPO=Ponuda OppStatusNEGO=Pregovaranje OppStatusPENDING=Na čekanju -OppStatusWON=Dobijeno +OppStatusWIN=Dobijeno OppStatusLOST=Izgubljeno Budget=Budget diff --git a/htdocs/langs/sv_SE/projects.lang b/htdocs/langs/sv_SE/projects.lang index a75da531dd3..77be1874eb2 100644 --- a/htdocs/langs/sv_SE/projects.lang +++ b/htdocs/langs/sv_SE/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/sw_SW/projects.lang b/htdocs/langs/sw_SW/projects.lang index 982ec36b26b..b4a21befd80 100644 --- a/htdocs/langs/sw_SW/projects.lang +++ b/htdocs/langs/sw_SW/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/tr_TR/projects.lang b/htdocs/langs/tr_TR/projects.lang index b4a54871c5a..dbdfcadfce7 100644 --- a/htdocs/langs/tr_TR/projects.lang +++ b/htdocs/langs/tr_TR/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Nitelendirme OppStatusPROPO=Teklif OppStatusNEGO=Pazarlık OppStatusPENDING=Beklemede -OppStatusWON=Kazanç +OppStatusWIN=Kazanç OppStatusLOST=Kayıp Budget=Budget diff --git a/htdocs/langs/uk_UA/projects.lang b/htdocs/langs/uk_UA/projects.lang index 982ec36b26b..b4a21befd80 100644 --- a/htdocs/langs/uk_UA/projects.lang +++ b/htdocs/langs/uk_UA/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/uz_UZ/projects.lang b/htdocs/langs/uz_UZ/projects.lang index 982ec36b26b..b4a21befd80 100644 --- a/htdocs/langs/uz_UZ/projects.lang +++ b/htdocs/langs/uz_UZ/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/vi_VN/projects.lang b/htdocs/langs/vi_VN/projects.lang index 7af08a9a5bc..174b4a88dc1 100644 --- a/htdocs/langs/vi_VN/projects.lang +++ b/htdocs/langs/vi_VN/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/zh_CN/projects.lang b/htdocs/langs/zh_CN/projects.lang index 070c15647e6..bbd8b5cf27d 100644 --- a/htdocs/langs/zh_CN/projects.lang +++ b/htdocs/langs/zh_CN/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/zh_TW/projects.lang b/htdocs/langs/zh_TW/projects.lang index 2519f38c954..2599ab48413 100644 --- a/htdocs/langs/zh_TW/projects.lang +++ b/htdocs/langs/zh_TW/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWON=Won +OppStatusWIN=Won OppStatusLOST=Lost Budget=Budget From 0ed998af035789a5e2ffb0de117e48fc726329e3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 29 Apr 2016 19:01:38 +0200 Subject: [PATCH 091/116] Revert "Revert "FIX #4813 Won translation for the key OppStatusWON instead OppStatusWIN"" --- htdocs/langs/ar_SA/projects.lang | 2 +- htdocs/langs/bn_BD/projects.lang | 2 +- htdocs/langs/bs_BA/projects.lang | 2 +- htdocs/langs/ca_ES/projects.lang | 2 +- htdocs/langs/cs_CZ/projects.lang | 2 +- htdocs/langs/da_DK/projects.lang | 2 +- htdocs/langs/de_DE/projects.lang | 2 +- htdocs/langs/en_US/projects.lang | 2 +- htdocs/langs/es_ES/projects.lang | 2 +- htdocs/langs/et_EE/projects.lang | 2 +- htdocs/langs/eu_ES/projects.lang | 2 +- htdocs/langs/fi_FI/projects.lang | 2 +- htdocs/langs/fr_FR/projects.lang | 2 +- htdocs/langs/he_IL/projects.lang | 2 +- htdocs/langs/hr_HR/projects.lang | 2 +- htdocs/langs/hu_HU/projects.lang | 2 +- htdocs/langs/id_ID/projects.lang | 2 +- htdocs/langs/is_IS/projects.lang | 2 +- htdocs/langs/it_IT/projects.lang | 2 +- htdocs/langs/ka_GE/projects.lang | 2 +- htdocs/langs/kn_IN/projects.lang | 2 +- htdocs/langs/ko_KR/projects.lang | 2 +- htdocs/langs/lo_LA/projects.lang | 2 +- htdocs/langs/lt_LT/projects.lang | 2 +- htdocs/langs/lv_LV/projects.lang | 2 +- htdocs/langs/mk_MK/projects.lang | 2 +- htdocs/langs/nb_NO/projects.lang | 2 +- htdocs/langs/nl_NL/projects.lang | 2 +- htdocs/langs/pl_PL/projects.lang | 2 +- htdocs/langs/pt_BR/projects.lang | 2 +- htdocs/langs/pt_PT/projects.lang | 2 +- htdocs/langs/ro_RO/projects.lang | 2 +- htdocs/langs/ru_RU/projects.lang | 2 +- htdocs/langs/sk_SK/projects.lang | 2 +- htdocs/langs/sl_SI/projects.lang | 2 +- htdocs/langs/sq_AL/projects.lang | 2 +- htdocs/langs/sr_RS/projects.lang | 2 +- htdocs/langs/sv_SE/projects.lang | 2 +- htdocs/langs/sw_SW/projects.lang | 2 +- htdocs/langs/tr_TR/projects.lang | 2 +- htdocs/langs/uk_UA/projects.lang | 2 +- htdocs/langs/uz_UZ/projects.lang | 2 +- htdocs/langs/vi_VN/projects.lang | 2 +- htdocs/langs/zh_CN/projects.lang | 2 +- htdocs/langs/zh_TW/projects.lang | 2 +- 45 files changed, 45 insertions(+), 45 deletions(-) diff --git a/htdocs/langs/ar_SA/projects.lang b/htdocs/langs/ar_SA/projects.lang index bdd7967374a..ab322a4bd05 100644 --- a/htdocs/langs/ar_SA/projects.lang +++ b/htdocs/langs/ar_SA/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=المؤهل العلمى OppStatusPROPO=مقترح OppStatusNEGO=Negociation OppStatusPENDING=بانتظار -OppStatusWIN=فاز +OppStatusWON=فاز OppStatusLOST=ضائع Budget=Budget diff --git a/htdocs/langs/bn_BD/projects.lang b/htdocs/langs/bn_BD/projects.lang index b4a21befd80..982ec36b26b 100644 --- a/htdocs/langs/bn_BD/projects.lang +++ b/htdocs/langs/bn_BD/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/bs_BA/projects.lang b/htdocs/langs/bs_BA/projects.lang index 0b25f6ea67a..fdfcbd408e5 100644 --- a/htdocs/langs/bs_BA/projects.lang +++ b/htdocs/langs/bs_BA/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/ca_ES/projects.lang b/htdocs/langs/ca_ES/projects.lang index 5c2f18593cb..91c1a7cc9db 100644 --- a/htdocs/langs/ca_ES/projects.lang +++ b/htdocs/langs/ca_ES/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualificació OppStatusPROPO=Pressupost OppStatusNEGO=Negociació OppStatusPENDING=Pendent -OppStatusWIN=Guanyat +OppStatusWON=Guanyat OppStatusLOST=Perdut Budget=Budget diff --git a/htdocs/langs/cs_CZ/projects.lang b/htdocs/langs/cs_CZ/projects.lang index 14b67dbb918..cdc3743aee4 100644 --- a/htdocs/langs/cs_CZ/projects.lang +++ b/htdocs/langs/cs_CZ/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/da_DK/projects.lang b/htdocs/langs/da_DK/projects.lang index 0c7ed16673b..618a6e5dc47 100644 --- a/htdocs/langs/da_DK/projects.lang +++ b/htdocs/langs/da_DK/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/de_DE/projects.lang b/htdocs/langs/de_DE/projects.lang index 15fc4080190..c1d58f6d3d6 100644 --- a/htdocs/langs/de_DE/projects.lang +++ b/htdocs/langs/de_DE/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualifikation OppStatusPROPO=Angebot OppStatusNEGO=Verhandlung OppStatusPENDING=Anstehend -OppStatusWIN=Gewonnen +OppStatusWON=Gewonnen OppStatusLOST=Verloren Budget=Budget diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index 979fd4670bb..c68bd370f5a 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -190,6 +190,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget \ No newline at end of file diff --git a/htdocs/langs/es_ES/projects.lang b/htdocs/langs/es_ES/projects.lang index b0965bd080c..3a9fd407875 100644 --- a/htdocs/langs/es_ES/projects.lang +++ b/htdocs/langs/es_ES/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Cualificación OppStatusPROPO=Presupuesto OppStatusNEGO=Negociación OppStatusPENDING=Pendiente -OppStatusWIN=Ganado +OppStatusWON=Ganado OppStatusLOST=Perdido Budget=Budget diff --git a/htdocs/langs/et_EE/projects.lang b/htdocs/langs/et_EE/projects.lang index 7c53e51f80d..31f516ada14 100644 --- a/htdocs/langs/et_EE/projects.lang +++ b/htdocs/langs/et_EE/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/eu_ES/projects.lang b/htdocs/langs/eu_ES/projects.lang index b4a21befd80..982ec36b26b 100644 --- a/htdocs/langs/eu_ES/projects.lang +++ b/htdocs/langs/eu_ES/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/fi_FI/projects.lang b/htdocs/langs/fi_FI/projects.lang index fea93953f69..50177fda449 100644 --- a/htdocs/langs/fi_FI/projects.lang +++ b/htdocs/langs/fi_FI/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/fr_FR/projects.lang b/htdocs/langs/fr_FR/projects.lang index b95fbb3cd56..6389d10abbf 100644 --- a/htdocs/langs/fr_FR/projects.lang +++ b/htdocs/langs/fr_FR/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposition OppStatusNEGO=Négociation OppStatusPENDING=En attente -OppStatusWIN=Gagné +OppStatusWON=Gagné OppStatusLOST=Perdu Budget=Budget diff --git a/htdocs/langs/he_IL/projects.lang b/htdocs/langs/he_IL/projects.lang index fb939aef169..ee8785e6397 100644 --- a/htdocs/langs/he_IL/projects.lang +++ b/htdocs/langs/he_IL/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/hr_HR/projects.lang b/htdocs/langs/hr_HR/projects.lang index 7dae3662584..bd83a40224d 100644 --- a/htdocs/langs/hr_HR/projects.lang +++ b/htdocs/langs/hr_HR/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/hu_HU/projects.lang b/htdocs/langs/hu_HU/projects.lang index 9ab8ab13b05..20a6f143d2a 100644 --- a/htdocs/langs/hu_HU/projects.lang +++ b/htdocs/langs/hu_HU/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/id_ID/projects.lang b/htdocs/langs/id_ID/projects.lang index 83a284cc58c..13798a28b3c 100644 --- a/htdocs/langs/id_ID/projects.lang +++ b/htdocs/langs/id_ID/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/is_IS/projects.lang b/htdocs/langs/is_IS/projects.lang index d41a345caf3..517ab7e2e84 100644 --- a/htdocs/langs/is_IS/projects.lang +++ b/htdocs/langs/is_IS/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/it_IT/projects.lang b/htdocs/langs/it_IT/projects.lang index 9954fb68fd2..8599f5089b5 100644 --- a/htdocs/langs/it_IT/projects.lang +++ b/htdocs/langs/it_IT/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualificazione OppStatusPROPO=Proposta OppStatusNEGO=Negoziazione OppStatusPENDING=In attesa -OppStatusWIN=Vinto +OppStatusWON=Vinto OppStatusLOST=Perso Budget=Budget diff --git a/htdocs/langs/ka_GE/projects.lang b/htdocs/langs/ka_GE/projects.lang index b4a21befd80..982ec36b26b 100644 --- a/htdocs/langs/ka_GE/projects.lang +++ b/htdocs/langs/ka_GE/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/kn_IN/projects.lang b/htdocs/langs/kn_IN/projects.lang index b4a21befd80..982ec36b26b 100644 --- a/htdocs/langs/kn_IN/projects.lang +++ b/htdocs/langs/kn_IN/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/ko_KR/projects.lang b/htdocs/langs/ko_KR/projects.lang index b4a21befd80..982ec36b26b 100644 --- a/htdocs/langs/ko_KR/projects.lang +++ b/htdocs/langs/ko_KR/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/lo_LA/projects.lang b/htdocs/langs/lo_LA/projects.lang index 56cc02c9e82..52ca66a2763 100644 --- a/htdocs/langs/lo_LA/projects.lang +++ b/htdocs/langs/lo_LA/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/lt_LT/projects.lang b/htdocs/langs/lt_LT/projects.lang index 6398f58b129..bc9adc0ef7f 100644 --- a/htdocs/langs/lt_LT/projects.lang +++ b/htdocs/langs/lt_LT/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/lv_LV/projects.lang b/htdocs/langs/lv_LV/projects.lang index d04ece7b84f..000139e853c 100644 --- a/htdocs/langs/lv_LV/projects.lang +++ b/htdocs/langs/lv_LV/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Kvalifikācija OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/mk_MK/projects.lang b/htdocs/langs/mk_MK/projects.lang index b4a21befd80..982ec36b26b 100644 --- a/htdocs/langs/mk_MK/projects.lang +++ b/htdocs/langs/mk_MK/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/nb_NO/projects.lang b/htdocs/langs/nb_NO/projects.lang index c57648d77d1..c69d3c47ee4 100644 --- a/htdocs/langs/nb_NO/projects.lang +++ b/htdocs/langs/nb_NO/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Kvalifikasjon OppStatusPROPO=Tilbud OppStatusNEGO=Forhandling OppStatusPENDING=Venter -OppStatusWIN=Vunnet +OppStatusWON=Vunnet OppStatusLOST=Tapt Budget=Budget diff --git a/htdocs/langs/nl_NL/projects.lang b/htdocs/langs/nl_NL/projects.lang index 93514bd4108..8cf1a0d4684 100644 --- a/htdocs/langs/nl_NL/projects.lang +++ b/htdocs/langs/nl_NL/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/pl_PL/projects.lang b/htdocs/langs/pl_PL/projects.lang index 1479193a7cc..429a664d293 100644 --- a/htdocs/langs/pl_PL/projects.lang +++ b/htdocs/langs/pl_PL/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Kwalifikacja OppStatusPROPO=Wniosek OppStatusNEGO=Negocjacje OppStatusPENDING=W oczekiwaniu -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Zagubiony Budget=Budget diff --git a/htdocs/langs/pt_BR/projects.lang b/htdocs/langs/pt_BR/projects.lang index f8ae458330b..ab92118d1e4 100644 --- a/htdocs/langs/pt_BR/projects.lang +++ b/htdocs/langs/pt_BR/projects.lang @@ -125,5 +125,5 @@ OppStatusQUAL=Qualificação OppStatusPROPO=Proposta OppStatusNEGO=Negociação OppStatusPENDING=Pendente -OppStatusWIN=Ganhou +OppStatusWON=Ganhou OppStatusLOST=Perdido diff --git a/htdocs/langs/pt_PT/projects.lang b/htdocs/langs/pt_PT/projects.lang index c6bc715fada..2df744a5013 100644 --- a/htdocs/langs/pt_PT/projects.lang +++ b/htdocs/langs/pt_PT/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/ro_RO/projects.lang b/htdocs/langs/ro_RO/projects.lang index 301c6242d24..c6fc6cb74e0 100644 --- a/htdocs/langs/ro_RO/projects.lang +++ b/htdocs/langs/ro_RO/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Calificare OppStatusPROPO=Ofertă OppStatusNEGO=Negociere OppStatusPENDING=In asteptarea -OppStatusWIN=Castigat +OppStatusWON=Castigat OppStatusLOST=Pierdut Budget=Budget diff --git a/htdocs/langs/ru_RU/projects.lang b/htdocs/langs/ru_RU/projects.lang index 27c4995d20d..bdee2d2d019 100644 --- a/htdocs/langs/ru_RU/projects.lang +++ b/htdocs/langs/ru_RU/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/sk_SK/projects.lang b/htdocs/langs/sk_SK/projects.lang index 6453fec2772..579d69f1323 100644 --- a/htdocs/langs/sk_SK/projects.lang +++ b/htdocs/langs/sk_SK/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/sl_SI/projects.lang b/htdocs/langs/sl_SI/projects.lang index 81c1c01c46d..38c773a95bb 100644 --- a/htdocs/langs/sl_SI/projects.lang +++ b/htdocs/langs/sl_SI/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/sq_AL/projects.lang b/htdocs/langs/sq_AL/projects.lang index b4a21befd80..982ec36b26b 100644 --- a/htdocs/langs/sq_AL/projects.lang +++ b/htdocs/langs/sq_AL/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/sr_RS/projects.lang b/htdocs/langs/sr_RS/projects.lang index 8ba6046454e..553b7ec80af 100644 --- a/htdocs/langs/sr_RS/projects.lang +++ b/htdocs/langs/sr_RS/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Kvalifikacija OppStatusPROPO=Ponuda OppStatusNEGO=Pregovaranje OppStatusPENDING=Na čekanju -OppStatusWIN=Dobijeno +OppStatusWON=Dobijeno OppStatusLOST=Izgubljeno Budget=Budget diff --git a/htdocs/langs/sv_SE/projects.lang b/htdocs/langs/sv_SE/projects.lang index 77be1874eb2..a75da531dd3 100644 --- a/htdocs/langs/sv_SE/projects.lang +++ b/htdocs/langs/sv_SE/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/sw_SW/projects.lang b/htdocs/langs/sw_SW/projects.lang index b4a21befd80..982ec36b26b 100644 --- a/htdocs/langs/sw_SW/projects.lang +++ b/htdocs/langs/sw_SW/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/tr_TR/projects.lang b/htdocs/langs/tr_TR/projects.lang index dbdfcadfce7..b4a54871c5a 100644 --- a/htdocs/langs/tr_TR/projects.lang +++ b/htdocs/langs/tr_TR/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Nitelendirme OppStatusPROPO=Teklif OppStatusNEGO=Pazarlık OppStatusPENDING=Beklemede -OppStatusWIN=Kazanç +OppStatusWON=Kazanç OppStatusLOST=Kayıp Budget=Budget diff --git a/htdocs/langs/uk_UA/projects.lang b/htdocs/langs/uk_UA/projects.lang index b4a21befd80..982ec36b26b 100644 --- a/htdocs/langs/uk_UA/projects.lang +++ b/htdocs/langs/uk_UA/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/uz_UZ/projects.lang b/htdocs/langs/uz_UZ/projects.lang index b4a21befd80..982ec36b26b 100644 --- a/htdocs/langs/uz_UZ/projects.lang +++ b/htdocs/langs/uz_UZ/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/vi_VN/projects.lang b/htdocs/langs/vi_VN/projects.lang index 174b4a88dc1..7af08a9a5bc 100644 --- a/htdocs/langs/vi_VN/projects.lang +++ b/htdocs/langs/vi_VN/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/zh_CN/projects.lang b/htdocs/langs/zh_CN/projects.lang index bbd8b5cf27d..070c15647e6 100644 --- a/htdocs/langs/zh_CN/projects.lang +++ b/htdocs/langs/zh_CN/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget diff --git a/htdocs/langs/zh_TW/projects.lang b/htdocs/langs/zh_TW/projects.lang index 2599ab48413..2519f38c954 100644 --- a/htdocs/langs/zh_TW/projects.lang +++ b/htdocs/langs/zh_TW/projects.lang @@ -199,6 +199,6 @@ OppStatusQUAL=Qualification OppStatusPROPO=Proposal OppStatusNEGO=Negociation OppStatusPENDING=Pending -OppStatusWIN=Won +OppStatusWON=Won OppStatusLOST=Lost Budget=Budget From f5a541d4697892e47c6b981cbbd667874b7b2929 Mon Sep 17 00:00:00 2001 From: esprit libre Date: Wed, 27 Apr 2016 16:42:59 +0200 Subject: [PATCH 092/116] Fix problem about unit buy price fetching To fix a bug encountered at customer shop about margin calculation. In some case, returned buy price is total buy price from provider and not unit buy price. Case opened on forum: http://www.dolibarr.fr/forum/527-bugs-sur-la-version-stable-courante/55467-calcul-des-marges --- htdocs/core/class/commonobject.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 716a462f440..c3140118745 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -4246,7 +4246,7 @@ abstract class CommonObject $productFournisseur = new ProductFournisseur($this->db); if (($result = $productFournisseur->find_min_price_product_fournisseur($fk_product)) > 0) { - $buyPrice = $productFournisseur->fourn_price; + $buyPrice = $productFournisseur->fourn_unitprice; } else if ($result < 0) { From 31a9acc77d86ad8f016f63d6674cabf15ca72d49 Mon Sep 17 00:00:00 2001 From: BENKE Charlie Date: Sat, 23 Apr 2016 20:17:45 +0200 Subject: [PATCH 093/116] not present in some select list --- htdocs/core/class/html.formother.class.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/htdocs/core/class/html.formother.class.php b/htdocs/core/class/html.formother.class.php index 078dc01d96f..d5ce5679dd3 100644 --- a/htdocs/core/class/html.formother.class.php +++ b/htdocs/core/class/html.formother.class.php @@ -805,6 +805,7 @@ class FormOther $select_week .= ''; } $select_week .= ''; return $select_week; @@ -844,6 +845,7 @@ class FormOther $select_month .= ''; } $select_month .= ''; return $select_month; From 49c3c69e3045a2546e961c6b8e02606d8400c837 Mon Sep 17 00:00:00 2001 From: BENKE Charlie Date: Sun, 24 Apr 2016 02:01:29 +0200 Subject: [PATCH 094/116] minor error code --- htdocs/product/class/product.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 1939299cf63..e5a70708c8d 100644 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -3687,7 +3687,7 @@ class Product extends CommonObject } } - if ($size==1 || $size='small') + if ($size==1 || $size=='small') { if ($nbbyrow > 0) { From 3c927fbe0e19320740ee9ad8fe2f04fad256c463 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 29 Apr 2016 20:35:38 +0200 Subject: [PATCH 095/116] Debug website module --- htdocs/websites/index.php | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/htdocs/websites/index.php b/htdocs/websites/index.php index 58a2981d2da..417484c2269 100644 --- a/htdocs/websites/index.php +++ b/htdocs/websites/index.php @@ -91,6 +91,18 @@ if (empty($action)) $action='preview'; $object=new Website($db); $objectpage=new WebsitePage($db); +$object->fetchAll(); // Init $object->records + +// If website not defined, we take first found +if (empty($website)) +{ + foreach($object->records as $key => $valwebsite) + { + $website=$valwebsite->ref; + break; + } +} + if ($website) { $res = $object->fetch(0, $website); @@ -262,7 +274,6 @@ if ($action != 'preview' && $action != 'editcontent') $style=' margin-bottom: 5p print '
    '; -$tmp = $object->fetchAll(); if (count($object->records) > 0) { print '
    '; @@ -317,16 +328,20 @@ if (count($object->records) > 0) print '
    '; $out=''; $out.=''; print $out; print ''; From 755b99475058b9663c1476be42f195e7ff07cad2 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 29 Apr 2016 20:40:00 +0200 Subject: [PATCH 096/116] Prepare 3.9.2 --- htdocs/filefunc.inc.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php index db8a5869914..59c489a957a 100644 --- a/htdocs/filefunc.inc.php +++ b/htdocs/filefunc.inc.php @@ -31,7 +31,7 @@ */ if (! defined('DOL_APPLICATION_TITLE')) define('DOL_APPLICATION_TITLE','Dolibarr'); -if (! defined('DOL_VERSION')) define('DOL_VERSION','3.9.1'); +if (! defined('DOL_VERSION')) define('DOL_VERSION','3.9.2'); if (! defined('EURO')) define('EURO',chr(128)); From e8bd1357f3cf079bd198172ac9b0e5d5fcb18222 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 30 Apr 2016 00:00:59 +0200 Subject: [PATCH 097/116] More help to use REST API --- htdocs/api/admin/explorer.php | 20 +++++++++++++++++++- htdocs/api/index.php | 2 ++ htdocs/langs/en_US/admin.lang | 2 ++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/htdocs/api/admin/explorer.php b/htdocs/api/admin/explorer.php index 44a14f99675..66d06e91679 100644 --- a/htdocs/api/admin/explorer.php +++ b/htdocs/api/admin/explorer.php @@ -150,12 +150,30 @@ $linkback=''.$langs->trans("BackToM print load_fiche_titre($langs->trans("ApiSetup"),$linkback,'title_setup'); +// Define $urlwithroot +$urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim($dolibarr_main_url_root)); +$urlwithroot=$urlwithouturlroot.DOL_URL_ROOT; // This is to use external domain name found into config file +//$urlwithroot=DOL_MAIN_URL_ROOT; // This is to use same domain name than current + +// Show message +print '
    '; +$message=''; +$url='
    '.$urlwithroot.'/api/index.php/login?login='.urlencode($user->login).'&password=yourpassword'; +$message.=$langs->trans("UrlToGetKeyToUseAPIs").':
    '; +$message.=img_picto('','object_globe.png').' '.$url; +print $message; +print '
    '; +print '
    '; + +print $langs->trans("ListOfAvailableAPIs").':
    '; foreach($listofapis['v1'] as $key => $val) { + if ($key == 'login') continue; if ($key) { //print $key.' - '.$val['classname'].' - '.$val['fullpath']." - ".DOL_MAIN_URL_ROOT.'/api/index.php/'.strtolower(preg_replace('/Api$/','',$val['classname']))."/xxx
    \n"; - $url=DOL_MAIN_URL_ROOT.'/api/index.php/'.$key; + $url=$urlwithroot.'/api/index.php/'.$key; + $url.='?api_key=token'; print img_picto('','object_globe.png').' '.$url."
    \n"; } diff --git a/htdocs/api/index.php b/htdocs/api/index.php index d7bcedb5fd7..55a45aea4b9 100644 --- a/htdocs/api/index.php +++ b/htdocs/api/index.php @@ -141,6 +141,8 @@ foreach ($modulesdir as $dir) // TODO If not found, redirect to explorer + +// Call API (we suppose we found it) $api->r->handle(); diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index b37083ca091..7b13a4ec5b5 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1740,3 +1740,5 @@ AddOtherPagesOrServices=Add other pages or services AddModels=Add document or numbering templates AddSubstitutions=Add keys substitutions DetectionNotPossible=Detection not possible +UrlToGetKeyToUseAPIs=Url to get token to use API (once token has been received it is saved on database user table and will be checked on each future access) +ListOfAvailableAPIs=List of available APIs \ No newline at end of file From 4e9ea2786a43dfd8431b9c60bf8378a4c758f08c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 30 Apr 2016 01:43:34 +0200 Subject: [PATCH 098/116] Fix s --- htdocs/langs/en_US/admin.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 7b13a4ec5b5..e537b9cedbe 100755 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -1602,7 +1602,7 @@ ApiDesc=By enabling this module, Dolibarr become a REST server to provide miscel KeyForApiAccess=Key to use API (parameter "api_key") ApiProductionMode=Enable production mode (this will activate use of a caches for services management) ApiEndPointIs=You can access to the API at url -ApiExporerIs=You can explore the API at url +ApiExporerIs=You can explore the APIs at url OnlyActiveElementsAreExposed=Only elements from enabled modules are exposed ApiKey=Key for API ##### Bank ##### From 9e24abacac708b5c00a94275a369327e43c47745 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 30 Apr 2016 13:26:31 +0200 Subject: [PATCH 099/116] Missing translation load --- htdocs/exports/export.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/exports/export.php b/htdocs/exports/export.php index d78a2564e7c..50ca1e09a91 100644 --- a/htdocs/exports/export.php +++ b/htdocs/exports/export.php @@ -35,6 +35,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; $langs->load("exports"); $langs->load("users"); $langs->load("companies"); +$langs->load("projects"); // Everybody should be able to go on this page //if (! $user->admin) From 6ffb45f5d87459b810353cd7c0499a7586f9707f Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 30 Apr 2016 13:58:35 +0200 Subject: [PATCH 100/116] FIX Missing param user on update() --- htdocs/compta/bank/class/account.class.php | 2 +- htdocs/compta/facture/class/facture.class.php | 4 ++-- htdocs/fourn/facture/card.php | 2 +- htdocs/hrm/establishment/card.php | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php index 9be83a2e73d..478633490f8 100644 --- a/htdocs/compta/bank/class/account.class.php +++ b/htdocs/compta/bank/class/account.class.php @@ -589,7 +589,7 @@ class Account extends CommonObject { $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."bank_account"); - $result=$this->update(); + $result=$this->update($user); if ($result > 0) { $accline = new AccountLine($this->db); diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 7261b8b1af3..8fee9cc5758 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -2606,7 +2606,7 @@ class Facture extends CommonInvoice $this->line->array_options=$array_options; } - $result=$this->line->update(); + $result=$this->line->update($user); if ($result > 0) { // Reorder if child line @@ -2680,7 +2680,7 @@ class Facture extends CommonInvoice $line->total_ttc = $tabprice[2]; $line->total_localtax1 = $tabprice[9]; $line->total_localtax2 = $tabprice[10]; - $line->update(); + $line->update($user); $this->update_price(1); $this->db->commit(); } diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 96311d7175e..eb6392eba06 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -249,7 +249,7 @@ if (empty($reshook)) { $object->ref_supplier = GETPOST('ref_supplier', 'alpha'); - if ($object->update() < 0) { + if ($object->update($user) < 0) { setEventMessages($object->error, $object->errors, 'errors'); } } diff --git a/htdocs/hrm/establishment/card.php b/htdocs/hrm/establishment/card.php index fb6f41f4f39..11179d218f8 100644 --- a/htdocs/hrm/establishment/card.php +++ b/htdocs/hrm/establishment/card.php @@ -136,7 +136,7 @@ else if ($action == 'update') $object->country_id = $_POST["country_id"]; $object->fk_user_mod = $user->id; - $result = $object->update(); + $result = $object->update($user); if ($result > 0) { From 97bf91cc5d86dd06691f75a624c2197d30e03185 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 30 Apr 2016 14:09:00 +0200 Subject: [PATCH 101/116] Show both currency symbol and code --- htdocs/admin/company.php | 4 +++- htdocs/core/class/translate.class.php | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/htdocs/admin/company.php b/htdocs/admin/company.php index c9e07677512..ee6cbac057f 100644 --- a/htdocs/admin/company.php +++ b/htdocs/admin/company.php @@ -731,7 +731,9 @@ else $var=!$var; print ''.$langs->trans("CompanyCurrency").''; print currency_name($conf->currency,1); - print ' ('.$langs->getCurrencySymbol($conf->currency).')'; + print ' ('.$conf->currency; + print ($conf->currency != $langs->getCurrencySymbol($conf->currency) ? ' - '.$langs->getCurrencySymbol($conf->currency) : ''); + print ')'; print ''; $var=!$var; diff --git a/htdocs/core/class/translate.class.php b/htdocs/core/class/translate.class.php index 866b746362b..34858bc3234 100644 --- a/htdocs/core/class/translate.class.php +++ b/htdocs/core/class/translate.class.php @@ -908,7 +908,8 @@ class Translate } /** - * Return a currency code into its symbol + * Return a currency code into its symbol. + * If mb_convert_encoding is not available, return currency code. * * @param string $currency_code Currency code * @param integer $forceloadall 1=Force to load all currencies into cache. We know we need to use all of them. By default read and cache only required currency. From f747018fb69110d02dad1cdd74f112915754226a Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 30 Apr 2016 14:24:33 +0200 Subject: [PATCH 102/116] Clean dead code FIX when editing price with tax, reset price without so i will be recalculated. --- htdocs/core/tpl/objectline_edit.tpl.php | 97 +++---------------------- 1 file changed, 12 insertions(+), 85 deletions(-) diff --git a/htdocs/core/tpl/objectline_edit.tpl.php b/htdocs/core/tpl/objectline_edit.tpl.php index 6d39cfc836b..1f0756a666c 100644 --- a/htdocs/core/tpl/objectline_edit.tpl.php +++ b/htdocs/core/tpl/objectline_edit.tpl.php @@ -255,12 +255,15 @@ $coldisplay=-1; // We remove first td From e61e717cac089bf537487e0ff677e6cad8fc2570 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 30 Apr 2016 14:28:48 +0200 Subject: [PATCH 103/116] FIX Bad permission to edit bank account on customer invoice --- htdocs/compta/facture.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 66b0df5969c..27ba03499c8 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -1,7 +1,7 @@ * Copyright (C) 2004 Eric Seigne - * Copyright (C) 2004-2014 Laurent Destailleur + * Copyright (C) 2004-2016 Laurent Destailleur * Copyright (C) 2005 Marc Barilley / Ocebo * Copyright (C) 2005-2015 Regis Houssin * Copyright (C) 2006 Andre Cianfarani @@ -3567,7 +3567,7 @@ else if ($id > 0 || ! empty($ref)) print ''; print '
    '; print $langs->trans('BankAccount'); print ''; - if (($action != 'editbankaccount') && $user->rights->commande->creer && ! empty($object->brouillon)) + if (($action != 'editbankaccount') && $user->rights->facture->creer && ! empty($object->brouillon)) print 'id.'">'.img_edit($langs->trans('SetBankAccount'),1).'
    '; print ''; From de59d115d918dc03f3b77a5ebec9452e5552b5d9 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 30 Apr 2016 14:59:40 +0200 Subject: [PATCH 104/116] Option THIRDPARTY_CUSTOMERPROSPECT_BY_DEFAULT and THIRDPARTY_SUPPLIER_BY_DEFAULT to have fields customer/prospect/supplier set when creating a new thirdparty. --- htdocs/societe/soc.php | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/htdocs/societe/soc.php b/htdocs/societe/soc.php index eedcd449c0d..02543d46993 100644 --- a/htdocs/societe/soc.php +++ b/htdocs/societe/soc.php @@ -783,10 +783,14 @@ else $modCodeFournisseur = new $module; // Define if customer/prospect or supplier status is set or not - if (GETPOST("type")!='f' && empty($conf->global->THIRDPARTY_NOTCUSTOMERPROSPECT_BY_DEFAULT)) { $object->client=3; } - if (GETPOST("type")=='c') { $object->client=1; } + if (GETPOST("type")!='f') + { + $object->client=-1; + if (! empty($conf->global->THIRDPARTY_CUSTOMERPROSPECT_BY_DEFAULT)) { $object->client=3; } + } + if (GETPOST("type")=='c') { $object->client=3; } // Prospect / Customer if (GETPOST("type")=='p') { $object->client=2; } - if (! empty($conf->fournisseur->enabled) && (GETPOST("type")=='f' || (GETPOST("type")=='' && empty($conf->global->THIRDPARTY_NOTSUPPLIER_BY_DEFAULT)))) { $object->fournisseur=1; } + if (! empty($conf->fournisseur->enabled) && (GETPOST("type")=='f' || (GETPOST("type")=='' && ! empty($conf->global->THIRDPARTY_SUPPLIER_BY_DEFAULT)))) { $object->fournisseur=1; } $object->name = GETPOST('name', 'alpha'); $object->firstname = GETPOST('firstname', 'alpha'); @@ -983,8 +987,9 @@ else // Prospect/Customer print ''.fieldLabel('ProspectCustomer','customerprospect',1).''; - print ''; if (GETPOST("type") == '') print ''; if (empty($conf->global->SOCIETE_DISABLE_PROSPECTS)) print ''; if (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) print ''; @@ -1008,7 +1013,9 @@ else // Supplier print ''; print ''.fieldLabel('Supplier','fournisseur',1).''; - print $form->selectyesno("fournisseur", (isset($_POST['fournisseur'])?GETPOST('fournisseur'):(GETPOST("type") == '' ? -1 : $object->fournisseur)), 1, 0, (GETPOST("type") == '' ? 1 : 0)); + $default = -1; + if (! empty($conf->global->THIRDPARTY_SUPPLIER_BY_DEFAULT)) $default=1; + print $form->selectyesno("fournisseur", (isset($_POST['fournisseur'])?GETPOST('fournisseur'):(GETPOST("type") == '' ? $default : $object->fournisseur)), 1, 0, (GETPOST("type") == '' ? 1 : 0)); print ''; print ''.fieldLabel('SupplierCode','supplier_code').''; print ''; $var=!$var; - print ''; + print ''; print ''; print ''; print ''; From 9c855f3a5e0982e4ea0cd72afec784390614dbde Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 30 Apr 2016 17:11:48 +0200 Subject: [PATCH 106/116] Start to work to have custom dir available and active by default. --- htdocs/custom/README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/htdocs/custom/README.md b/htdocs/custom/README.md index 5f15148f685..82f92dfbeff 100644 --- a/htdocs/custom/README.md +++ b/htdocs/custom/README.md @@ -14,11 +14,9 @@ Then create the symbolic link ln -fs ~/git/newmodule/htdocs /path_to_dolibarr/htdocs/custom/newmodule WARNING !!! -You must also enable the custom directory into dolibarr conf/conf.php file by adding the following +Check also that the custom directory into dolibarr conf/conf.php file by adding the following two lines, so dolibarr will also scan this directories to find external external modules: $dolibarr_main_url_root_alt='/custom'; $dolibarr_main_document_root_alt='/path_to_dolibarr/htdocs/custom/'; -(This is not enabled by default because enabling external module may slow down application) - From 6a123c91b57a54252076a353e46f095ec247a800 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 30 Apr 2016 19:30:28 +0200 Subject: [PATCH 107/116] Solve warnings that appears because code is using statically a mehtod that can't be static yet. --- htdocs/core/class/html.form.class.php | 1 + htdocs/main.inc.php | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index 745cbeec558..c65fcb1bdc5 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -390,6 +390,7 @@ class Form * @param int $noencodehtmltext Do not encode into html entity the htmltext * @return string Code html du tooltip (texte+picto) * @see Use function textwithpicto if you can. + * TODO Move this as static as soon as everybody use textwithpicto or @Form::textwithtooltip */ function textwithtooltip($text, $htmltext, $tooltipon = 1, $direction = 0, $img = '', $extracss = '', $notabs = 2, $incbefore = '', $noencodehtmltext = 0) { diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index b0f4585d888..7f4c71bc915 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1464,7 +1464,7 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a $text =''; $text.= img_picto(":".$langs->trans("PrintContentArea"), 'printer_top.png', 'class="printer"'); $text.=''; - $toprightmenu.=Form::textwithtooltip('',$langs->trans("PrintContentArea"),2,1,$text,'login_block_elem',2); + $toprightmenu.=@Form::textwithtooltip('',$langs->trans("PrintContentArea"),2,1,$text,'login_block_elem',2); } // Link to Dolibarr wiki pages @@ -1501,12 +1501,12 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a //if ($mode == 'wiki') $text.=' ('.dol_trunc(strtr($helppage,'_',' '),8).')'; $text.=''; //$toprightmenu.=''."\n"; - $toprightmenu.=Form::textwithtooltip('',$title,2,1,$text,'login_block_elem',2); + $toprightmenu.=@Form::textwithtooltip('',$title,2,1,$text,'login_block_elem',2); } } // Logout link - $toprightmenu.=Form::textwithtooltip('',$logouthtmltext,2,1,$logouttext,'login_block_elem',2); + $toprightmenu.=@Form::textwithtooltip('',$logouthtmltext,2,1,$logouttext,'login_block_elem',2); $toprightmenu.=''; From 50323afe94c88da1b5b0e24334031e4277bce77d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 30 Apr 2016 21:33:18 +0200 Subject: [PATCH 108/116] Add comment --- htdocs/product/stock/class/mouvementstock.class.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/htdocs/product/stock/class/mouvementstock.class.php b/htdocs/product/stock/class/mouvementstock.class.php index d34668e2519..3110a1437dc 100644 --- a/htdocs/product/stock/class/mouvementstock.class.php +++ b/htdocs/product/stock/class/mouvementstock.class.php @@ -220,7 +220,6 @@ class MouvementStock extends CommonObject $oldqty=$product->stock_reel; $oldpmp=$product->pmp; $oldqtywarehouse=0; - //$oldpmpwarehouse=0; // Test if there is already a record for couple (warehouse / product) $num = 0; @@ -238,7 +237,6 @@ class MouvementStock extends CommonObject { $num = 1; $oldqtywarehouse = $obj->reel; - //$oldpmpwarehouse = $obj->pmp; $fk_product_stock = $obj->rowid; } $this->db->free($resql); @@ -317,6 +315,10 @@ class MouvementStock extends CommonObject if ($result<0) $error++; } + // If stock is now 0, we can remove entry into llx_stock_product, but only if there is no child lines into llx_product_batch (detail of batch, because we can imagine + // having a lot=1, qty=X and lot=2, qty=-X, so 0 but we must not loose repartition of different lot. + // TODO We should do this but not so important because there is already a filter on !=0 on product stock lists. + // Update PMP and denormalized value of stock qty at product level if (! $error) { From f324c662c2f0daebc402b09645f8ec2f898e80cf Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 30 Apr 2016 21:58:00 +0200 Subject: [PATCH 109/116] Better update of database cleaning non expected records. --- htdocs/product/class/productbatch.class.php | 4 ++-- .../stock/class/mouvementstock.class.php | 24 ++++++++++--------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/htdocs/product/class/productbatch.class.php b/htdocs/product/class/productbatch.class.php index d0554309539..749da6d86e2 100644 --- a/htdocs/product/class/productbatch.class.php +++ b/htdocs/product/class/productbatch.class.php @@ -408,8 +408,8 @@ class Productbatch extends CommonObject * Find first detail record that match eather eat-by or sell-by or batch within given warehouse * * @param int $fk_product_stock id product_stock for objet - * @param date $eatby eat-by date for objet - * @param date $sellby sell-by date for objet + * @param date $eatby eat-by date for objet - deprecated: a search must be done on batch number + * @param date $sellby sell-by date for objet - deprecated: a search must be done on batch number * @param string $batch_number batch number for objet * @return int <0 if KO, >0 if OK */ diff --git a/htdocs/product/stock/class/mouvementstock.class.php b/htdocs/product/stock/class/mouvementstock.class.php index 3110a1437dc..944fb3f8dfb 100644 --- a/htdocs/product/stock/class/mouvementstock.class.php +++ b/htdocs/product/stock/class/mouvementstock.class.php @@ -222,7 +222,7 @@ class MouvementStock extends CommonObject $oldqtywarehouse=0; // Test if there is already a record for couple (warehouse / product) - $num = 0; + $alreadyarecord = 0; if (! $error) { $sql = "SELECT rowid, reel FROM ".MAIN_DB_PREFIX."product_stock"; @@ -235,7 +235,7 @@ class MouvementStock extends CommonObject $obj = $this->db->fetch_object($resql); if ($obj) { - $num = 1; + $alreadyarecord = 1; $oldqtywarehouse = $obj->reel; $fk_product_stock = $obj->rowid; } @@ -281,7 +281,7 @@ class MouvementStock extends CommonObject // Update stock quantity if (! $error) { - if ($num > 0) + if ($alreadyarecord > 0) { $sql = "UPDATE ".MAIN_DB_PREFIX."product_stock SET reel = reel + ".$qty; $sql.= " WHERE fk_entrepot = ".$entrepot_id." AND fk_product = ".$fk_product; @@ -315,18 +315,14 @@ class MouvementStock extends CommonObject if ($result<0) $error++; } - // If stock is now 0, we can remove entry into llx_stock_product, but only if there is no child lines into llx_product_batch (detail of batch, because we can imagine - // having a lot=1, qty=X and lot=2, qty=-X, so 0 but we must not loose repartition of different lot. - // TODO We should do this but not so important because there is already a filter on !=0 on product stock lists. - // Update PMP and denormalized value of stock qty at product level if (! $error) { - //$sql = "UPDATE ".MAIN_DB_PREFIX."product SET pmp = ".$newpmp.", stock = ".$this->db->ifsql("stock IS NULL", 0, "stock") . " + ".$qty; - //$sql.= " WHERE rowid = ".$fk_product; + // $sql = "UPDATE ".MAIN_DB_PREFIX."product SET pmp = ".$newpmp.", stock = ".$this->db->ifsql("stock IS NULL", 0, "stock") . " + ".$qty; + // $sql.= " WHERE rowid = ".$fk_product; // Update pmp + denormalized fields because we change content of produt_stock. Warning: Do not use "SET p.stock", does not works with pgsql $sql = "UPDATE ".MAIN_DB_PREFIX."product as p SET p.pmp = ".$newpmp.", "; - $sql.= " stock=(SELECT SUM(ps.reel) FROM llx_product_stock ps WHERE ps.fk_product = p.rowid)"; + $sql.= " stock=(SELECT SUM(ps.reel) FROM ".MAIN_DB_PREFIX."product_stock ps WHERE ps.fk_product = p.rowid)"; $sql.= " WHERE rowid = ".$fk_product; print $sql; dol_syslog(get_class($this)."::_create", LOG_DEBUG); @@ -337,6 +333,12 @@ class MouvementStock extends CommonObject $error = -4; } } + + // If stock is now 0, we can remove entry into llx_stock_product, but only if there is no child lines into llx_product_batch (detail of batch, because we can imagine + // having a lot1/qty=X and lot2/qty=-X, so 0 but we must not loose repartition of different lot. + $sql="DELETE FROM ".MAIN_DB_PREFIX."product_stock WHERE reel = 0 AND rowid NOT IN (SELECT fk_product_stock FROM ".MAIN_DB_PREFIX."product_batch as pb)"; + $resql=$this->db->query($sql); + // We do not test error, it can fails if there is child in batch details } // Add movement for sub products (recursive call) @@ -528,7 +530,7 @@ class MouvementStock extends CommonObject * Create or update batch record (update table llx_product_batch) * * @param array|int $dluo Could be either - * - int if id of product_batch + * - int if row id of product_batch table * - or complete array('fk_product_stock'=>, 'eatby'=>, 'sellby'=> , 'batchnumber'=>) * @param int $qty Quantity of product with batch number. May be a negative amount. * @return int <0 if KO, else return productbatch id From f59f3032c61bdda45181866636ddceed6fd062b8 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 1 May 2016 16:34:50 +0200 Subject: [PATCH 110/116] NEW: Rename path for generic medias files into '/medias' instead of fckeditor. Add location of medias into title of media browser of ckeditor. Work on website module --- htdocs/core/class/doleditor.class.php | 2 +- .../browser/default/browser.php | 11 +- .../filemanagerdol/connectors/php/config.php | 7 +- .../filemanagerdol/connectors/php/upload.php | 2 +- htdocs/core/lib/files.lib.php | 16 +- htdocs/core/modules/modFckeditor.class.php | 4 +- htdocs/core/modules/modWebsites.class.php | 6 +- htdocs/document.php | 6 +- htdocs/install/upgrade2.php | 2 + htdocs/langs/en_US/main.lang | 1 + htdocs/langs/en_US/website.lang | 6 +- htdocs/main.inc.php | 2 +- htdocs/public/websites/index.php | 90 ++++++- htdocs/theme/eldy/ckeditor/config.js | 2 - htdocs/theme/eldy/style.css.php | 6 +- htdocs/theme/md/ckeditor/config.js | 2 - htdocs/theme/md/style.css.php | 6 +- htdocs/viewimage.php | 4 +- htdocs/websites/index.php | 236 ++++++++++++++++-- 19 files changed, 353 insertions(+), 58 deletions(-) diff --git a/htdocs/core/class/doleditor.class.php b/htdocs/core/class/doleditor.class.php index 8564a18822e..2a9114cbd2c 100644 --- a/htdocs/core/class/doleditor.class.php +++ b/htdocs/core/class/doleditor.class.php @@ -52,7 +52,7 @@ class DolEditor * @param string $content Content of WYSIWIG field * @param int $width Width in pixel of edit area (auto by default) * @param int $height Height in pixel of edit area (200px by default) - * @param string $toolbarname Name of bar set to use ('Full', 'dolibarr_notes[_encoded]', 'dolibarr_details[_encoded]'=the less featured, 'dolibarr_mailings[_encoded]', ') + * @param string $toolbarname Name of bar set to use ('Full', 'dolibarr_notes[_encoded]', 'dolibarr_details[_encoded]'=the less featured, 'dolibarr_mailings[_encoded]', 'dolibarr_readonly') * @param string $toolbarlocation Where bar is stored : * 'In' each window has its own toolbar * 'Out:name' share toolbar into the div called 'name' diff --git a/htdocs/core/filemanagerdol/browser/default/browser.php b/htdocs/core/filemanagerdol/browser/default/browser.php index f542bdf59b6..15e44621bcf 100644 --- a/htdocs/core/filemanagerdol/browser/default/browser.php +++ b/htdocs/core/filemanagerdol/browser/default/browser.php @@ -19,15 +19,20 @@ * along with this program. If not, see . */ -define('NOTOKENRENEWAL',1); // Disables token renewal +//define('NOTOKENRENEWAL',1); // Disables token renewal +//require '../../../../main.inc.php'; +require '../../connectors/php/config.php'; // This include the define('NOTOKENRENEWAL',1) and the require main.in.php + +global $Config; + + -require '../../../../main.inc.php'; ?> - FCKeditor - Resources Browser + <?php echo $langs->trans("MediaBrowser").' - '.$Config['UserFilesAbsolutePathRelative']; ?>
    '; From a8363052c600c2a06ee4ba4fdf9fe632676325cb Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 30 Apr 2016 15:55:22 +0200 Subject: [PATCH 105/116] Better style --- htdocs/compta/bank/treso.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/bank/treso.php b/htdocs/compta/bank/treso.php index db7f37cb3e5..0cee6211b49 100644 --- a/htdocs/compta/bank/treso.php +++ b/htdocs/compta/bank/treso.php @@ -136,7 +136,7 @@ if ($_REQUEST["account"] || $_REQUEST["ref"]) print '
    '.$langs->trans("RemainderToPay").'